* Refact. Build flutter web Signed-off-by: fufesou <shuanglongchen@yeah.net> * Refact. Flutter web, wrap Platform.xx Signed-off-by: fufesou <shuanglongchen@yeah.net> --------- Signed-off-by: fufesou <shuanglongchen@yeah.net>
		
			
				
	
	
		
			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;
 | |
| }
 |