From 549ebf560306ffd0a1c1189225a5637595a9737b Mon Sep 17 00:00:00 2001 From: Halil Durmus Date: Thu, 23 Apr 2026 23:53:08 +0300 Subject: [PATCH] refactor(share_plus): use win32's RtlGetVersion instead of manual lookup --- .../lib/src/windows_version_helper.dart | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/packages/share_plus/share_plus/lib/src/windows_version_helper.dart b/packages/share_plus/share_plus/lib/src/windows_version_helper.dart index de610465d2..e64fdae991 100644 --- a/packages/share_plus/share_plus/lib/src/windows_version_helper.dart +++ b/packages/share_plus/share_plus/lib/src/windows_version_helper.dart @@ -1,5 +1,6 @@ -import 'dart:io'; import 'dart:ffi'; +import 'dart:io'; + import 'package:ffi/ffi.dart'; import 'package:win32/win32.dart'; @@ -18,24 +19,9 @@ class VersionHelper { VersionHelper._() { if (Platform.isWindows) { - final pointer = calloc(); - pointer.ref - ..dwOSVersionInfoSize = sizeOf() - ..dwBuildNumber = 0 - ..dwMajorVersion = 0 - ..dwMinorVersion = 0 - ..dwPlatformId = 0 - ..szCSDVersion = '' - ..wServicePackMajor = 0 - ..wServicePackMinor = 0 - ..wSuiteMask = 0 - ..wProductType = 0; - final rtlGetVersion = DynamicLibrary.open('ntdll.dll') - .lookupFunction< - Void Function(Pointer), - void Function(Pointer) - >('RtlGetVersion'); - rtlGetVersion(pointer); + final pointer = calloc() + ..ref.dwOSVersionInfoSize = sizeOf(); + RtlGetVersion(pointer.cast()); isWindows10RS5OrGreater = pointer.ref.dwBuildNumber >= kWindows10RS5BuildNumber; calloc.free(pointer);