mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-12-25 13:07:52 +08:00
42 lines
1.2 KiB
Dart
42 lines
1.2 KiB
Dart
|
import 'dart:ffi' hide Size;
|
||
|
|
||
|
import 'package:ffi/ffi.dart';
|
||
|
|
||
|
import 'package:win32/win32.dart' as win32;
|
||
|
|
||
|
/// Get windows target build number.
|
||
|
///
|
||
|
/// [Note]
|
||
|
/// Please use this function wrapped with `Platform.isWindows`.
|
||
|
int getWindowsTargetBuildNumber_() {
|
||
|
final rtlGetVersion = DynamicLibrary.open('ntdll.dll').lookupFunction<
|
||
|
Void Function(Pointer<win32.OSVERSIONINFOEX>),
|
||
|
void Function(Pointer<win32.OSVERSIONINFOEX>)>('RtlGetVersion');
|
||
|
final osVersionInfo = _getOSVERSIONINFOEXPointer();
|
||
|
rtlGetVersion(osVersionInfo);
|
||
|
int buildNumber = osVersionInfo.ref.dwBuildNumber;
|
||
|
calloc.free(osVersionInfo);
|
||
|
return buildNumber;
|
||
|
}
|
||
|
|
||
|
/// Get Windows OS version pointer
|
||
|
///
|
||
|
/// [Note]
|
||
|
/// Please use this function wrapped with `Platform.isWindows`.
|
||
|
Pointer<win32.OSVERSIONINFOEX> _getOSVERSIONINFOEXPointer() {
|
||
|
final pointer = calloc<win32.OSVERSIONINFOEX>();
|
||
|
pointer.ref
|
||
|
..dwOSVersionInfoSize = sizeOf<win32.OSVERSIONINFOEX>()
|
||
|
..dwBuildNumber = 0
|
||
|
..dwMajorVersion = 0
|
||
|
..dwMinorVersion = 0
|
||
|
..dwPlatformId = 0
|
||
|
..szCSDVersion = ''
|
||
|
..wServicePackMajor = 0
|
||
|
..wServicePackMinor = 0
|
||
|
..wSuiteMask = 0
|
||
|
..wProductType = 0
|
||
|
..wReserved = 0;
|
||
|
return pointer;
|
||
|
}
|