windows_win/
sys.rs

1//! WinAPI related definitions
2#![allow(missing_docs, non_snake_case, non_camel_case_types, non_upper_case_globals)]
3
4pub use core::ffi::*;
5
6pub type BYTE = c_uchar;
7pub type BOOL = c_int;
8pub type BOOLEAN = BYTE;
9pub type PVOID = *mut c_void;
10pub type HANDLE = *mut c_void;
11pub type PHANDLE = *mut HANDLE;
12pub type HMENU = *mut c_void;
13pub type HWND = *mut c_void;
14pub type HINSTANCE = *mut c_void;
15pub type HMODULE = HINSTANCE;
16pub type UINT = c_uint;
17pub type WPARAM = usize;
18pub type LPARAM = isize;
19pub type LRESULT = isize;
20pub type ULONG = c_ulong;
21pub type LONG = c_long;
22pub type DWORD = c_ulong;
23pub type PDWORD = *mut DWORD;
24pub type LPDWORD = *mut DWORD;
25pub type WCHAR = u16;
26pub type LONGLONG = i64;
27pub type LPMSG = *mut MSG;
28pub type LPVOID = *mut c_void;
29pub type LPCVOID = *const c_void;
30
31pub type ULONG_PTR = usize;
32pub type PDWORD_PTR = *mut ULONG_PTR;
33pub type SIZE_T = ULONG_PTR;
34
35pub type LPWSTR = *mut WCHAR;
36pub type LPCWSTR = *const WCHAR;
37
38#[repr(C)]
39#[derive(Copy, Clone)]
40pub enum TOKEN_INFORMATION_CLASS {
41    TokenUser = 1,
42    TokenGroups,
43    TokenPrivileges,
44    TokenOwner,
45    TokenPrimaryGroup,
46    TokenDefaultDacl,
47    TokenSource,
48    TokenType,
49    TokenImpersonationLevel,
50    TokenStatistics,
51    TokenRestrictedSids,
52    TokenSessionId,
53    TokenGroupsAndPrivileges,
54    TokenSessionReference,
55    TokenSandBoxInert,
56    TokenAuditPolicy,
57    TokenOrigin,
58    TokenElevationType,
59    TokenLinkedToken,
60    TokenElevation,
61    TokenHasRestrictions,
62    TokenAccessInformation,
63    TokenVirtualizationAllowed,
64    TokenVirtualizationEnabled,
65    TokenIntegrityLevel,
66    TokenUIAccess,
67    TokenMandatoryPolicy,
68    TokenLogonSid,
69    TokenIsAppContainer,
70    TokenCapabilities,
71    TokenAppContainerSid,
72    TokenAppContainerNumber,
73    TokenUserClaimAttributes,
74    TokenDeviceClaimAttributes,
75    TokenRestrictedUserClaimAttributes,
76    TokenRestrictedDeviceClaimAttributes,
77    TokenDeviceGroups,
78    TokenRestrictedDeviceGroups,
79    TokenSecurityAttributes,
80    TokenIsRestricted,
81    TokenProcessTrustLevel,
82    TokenPrivateNameSpace,
83    TokenSingletonAttributes,
84    TokenBnoIsolation,
85    MaxTokenInfoClass,
86}
87
88pub const MAX_PATH: usize = 260;
89
90pub const MB_OK: UINT = 0x00000000;
91pub const MB_OKCANCEL: UINT = 0x00000001;
92pub const MB_ABORTRETRYIGNORE: UINT = 0x00000002;
93pub const MB_YESNOCANCEL: UINT = 0x00000003;
94pub const MB_YESNO: UINT = 0x00000004;
95pub const MB_RETRYCANCEL: UINT = 0x00000005;
96pub const MB_CANCELTRYCONTINUE: UINT = 0x00000006;
97pub const MB_ICONHAND: UINT = 0x00000010;
98pub const MB_ICONQUESTION: UINT = 0x00000020;
99pub const MB_ICONEXCLAMATION: UINT = 0x00000030;
100pub const MB_ICONASTERISK: UINT = 0x00000040;
101pub const MB_USERICON: UINT = 0x00000080;
102pub const MB_ICONWARNING: UINT = MB_ICONEXCLAMATION;
103pub const MB_ICONERROR: UINT = MB_ICONHAND;
104pub const MB_ICONINFORMATION: UINT = MB_ICONASTERISK;
105pub const MB_ICONSTOP: UINT = MB_ICONHAND;
106pub const MB_DEFBUTTON1: UINT = 0x00000000;
107pub const MB_DEFBUTTON2: UINT = 0x00000100;
108pub const MB_DEFBUTTON3: UINT = 0x00000200;
109pub const MB_DEFBUTTON4: UINT = 0x00000300;
110pub const MB_APPLMODAL: UINT = 0x00000000;
111pub const MB_SYSTEMMODAL: UINT = 0x00001000;
112pub const MB_TASKMODAL: UINT = 0x00002000;
113pub const MB_HELP: UINT = 0x00004000;
114pub const MB_NOFOCUS: UINT = 0x00008000;
115pub const MB_SETFOREGROUND: UINT = 0x00010000;
116pub const MB_DEFAULT_DESKTOP_ONLY: UINT = 0x00020000;
117pub const MB_TOPMOST: UINT = 0x00040000;
118pub const MB_RIGHT: UINT = 0x00080000;
119pub const MB_RTLREADING: UINT = 0x00100000;
120pub const MB_SERVICE_NOTIFICATION: UINT = 0x00200000;
121pub const MB_SERVICE_NOTIFICATION_NT3X: UINT = 0x00040000;
122pub const MB_TYPEMASK: UINT = 0x0000000F;
123pub const MB_ICONMASK: UINT = 0x000000F0;
124pub const MB_DEFMASK: UINT = 0x00000F00;
125pub const MB_MODEMASK: UINT = 0x00003000;
126pub const MB_MISCMASK: UINT = 0x0000C000;
127
128pub const SMTO_BLOCK: UINT = 0x0001;
129pub const WM_SYSCOMMAND: UINT = 0x0112;
130pub const WM_GETTEXT: UINT = 0x000D;
131pub const WM_GETTEXTLENGTH: UINT = 0x000E;
132pub const WM_SETTEXT: UINT = 0x000C;
133pub const WM_DEVICECHANGE: UINT = 0x0219;
134pub const WM_MDICREATE: UINT = 0x0220;
135pub const WM_MDIDESTROY: UINT = 0x0221;
136pub const WM_MDIACTIVATE: UINT = 0x0222;
137pub const WM_MDIRESTORE: UINT = 0x0223;
138pub const WM_MDINEXT: UINT = 0x0224;
139pub const WM_MDIMAXIMIZE: UINT = 0x0225;
140pub const WM_MDITILE: UINT = 0x0226;
141pub const WM_MDICASCADE: UINT = 0x0227;
142pub const WM_MDIICONARRANGE: UINT = 0x0228;
143pub const WM_MDIGETACTIVE: UINT = 0x0229;
144pub const WM_MDISETMENU: UINT = 0x0230;
145pub const WM_ENTERSIZEMOVE: UINT = 0x0231;
146pub const WM_EXITSIZEMOVE: UINT = 0x0232;
147pub const WM_DROPFILES: UINT = 0x0233;
148pub const WM_MDIREFRESHMENU: UINT = 0x0234;
149pub const WM_POINTERDEVICECHANGE: UINT = 0x238;
150pub const WM_POINTERDEVICEINRANGE: UINT = 0x239;
151pub const WM_POINTERDEVICEOUTOFRANGE: UINT = 0x23A;
152pub const WM_TOUCH: UINT = 0x0240;
153pub const WM_NCPOINTERUPDATE: UINT = 0x0241;
154pub const WM_NCPOINTERDOWN: UINT = 0x0242;
155pub const WM_NCPOINTERUP: UINT = 0x0243;
156pub const WM_POINTERUPDATE: UINT = 0x0245;
157pub const WM_POINTERDOWN: UINT = 0x0246;
158pub const WM_POINTERUP: UINT = 0x0247;
159pub const WM_POINTERENTER: UINT = 0x0249;
160pub const WM_POINTERLEAVE: UINT = 0x024A;
161pub const WM_POINTERACTIVATE: UINT = 0x024B;
162pub const WM_POINTERCAPTURECHANGED: UINT = 0x024C;
163pub const WM_TOUCHHITTESTING: UINT = 0x024D;
164pub const WM_POINTERWHEEL: UINT = 0x024E;
165pub const WM_POINTERHWHEEL: UINT = 0x024F;
166pub const DM_POINTERHITTEST: UINT = 0x0250;
167pub const WM_POINTERROUTEDTO: UINT = 0x0251;
168pub const WM_POINTERROUTEDAWAY: UINT = 0x0252;
169pub const WM_POINTERROUTEDRELEASED: UINT = 0x0253;
170pub const WM_IME_SETCONTEXT: UINT = 0x0281;
171pub const WM_IME_NOTIFY: UINT = 0x0282;
172pub const WM_IME_CONTROL: UINT = 0x0283;
173pub const WM_IME_COMPOSITIONFULL: UINT = 0x0284;
174pub const WM_IME_SELECT: UINT = 0x0285;
175pub const WM_IME_CHAR: UINT = 0x0286;
176pub const WM_IME_REQUEST: UINT = 0x0288;
177pub const WM_IME_KEYDOWN: UINT = 0x0290;
178pub const WM_IME_KEYUP: UINT = 0x0291;
179pub const WM_MOUSEHOVER: UINT = 0x02A1;
180pub const WM_MOUSELEAVE: UINT = 0x02A3;
181pub const WM_NCMOUSEHOVER: UINT = 0x02A0;
182pub const WM_NCMOUSELEAVE: UINT = 0x02A2;
183pub const WM_WTSSESSION_CHANGE: UINT = 0x02B1;
184pub const WM_TABLET_FIRST: UINT = 0x02c0;
185pub const WM_TABLET_LAST: UINT = 0x02df;
186pub const WM_DPICHANGED: UINT = 0x02E0;
187pub const WM_DPICHANGED_BEFOREPARENT: UINT = 0x02E2;
188pub const WM_DPICHANGED_AFTERPARENT: UINT = 0x02E3;
189pub const WM_GETDPISCALEDSIZE: UINT = 0x02E4;
190pub const WM_CUT: UINT = 0x0300;
191pub const WM_COPY: UINT = 0x0301;
192pub const WM_PASTE: UINT = 0x0302;
193pub const WM_CLEAR: UINT = 0x0303;
194pub const WM_UNDO: UINT = 0x0304;
195pub const WM_RENDERFORMAT: UINT = 0x0305;
196pub const WM_RENDERALLFORMATS: UINT = 0x0306;
197pub const WM_DESTROYCLIPBOARD: UINT = 0x0307;
198pub const WM_DRAWCLIPBOARD: UINT = 0x0308;
199pub const WM_PAINTCLIPBOARD: UINT = 0x0309;
200pub const WM_VSCROLLCLIPBOARD: UINT = 0x030A;
201pub const WM_SIZECLIPBOARD: UINT = 0x030B;
202pub const WM_ASKCBFORMATNAME: UINT = 0x030C;
203pub const WM_CHANGECBCHAIN: UINT = 0x030D;
204pub const WM_HSCROLLCLIPBOARD: UINT = 0x030E;
205pub const WM_QUERYNEWPALETTE: UINT = 0x030F;
206pub const WM_PALETTEISCHANGING: UINT = 0x0310;
207pub const WM_PALETTECHANGED: UINT = 0x0311;
208pub const WM_HOTKEY: UINT = 0x0312;
209pub const WM_PRINT: UINT = 0x0317;
210pub const WM_PRINTCLIENT: UINT = 0x0318;
211pub const WM_APPCOMMAND: UINT = 0x0319;
212pub const WM_THEMECHANGED: UINT = 0x031A;
213pub const WM_CLIPBOARDUPDATE: UINT = 0x031D;
214pub const WM_DWMCOMPOSITIONCHANGED: UINT = 0x031E;
215pub const WM_DWMNCRENDERINGCHANGED: UINT = 0x031F;
216pub const WM_DWMCOLORIZATIONCOLORCHANGED: UINT = 0x0320;
217pub const WM_DWMWINDOWMAXIMIZEDCHANGE: UINT = 0x0321;
218pub const WM_DWMSENDICONICTHUMBNAIL: UINT = 0x0323;
219pub const WM_DWMSENDICONICLIVEPREVIEWBITMAP: UINT = 0x0326;
220pub const WM_GETTITLEBARINFOEX: UINT = 0x033F;
221pub const WM_HANDHELDFIRST: UINT = 0x0358;
222pub const WM_HANDHELDLAST: UINT = 0x035F;
223pub const WM_AFXFIRST: UINT = 0x0360;
224pub const WM_AFXLAST: UINT = 0x037F;
225pub const WM_PENWINFIRST: UINT = 0x0380;
226pub const WM_PENWINLAST: UINT = 0x038F;
227pub const WM_APP: UINT = 0x8000;
228pub const WM_USER: UINT = 0x0400;
229pub const CW_USEDEFAULT: c_int = -2147483648i32;
230
231pub const HWND_MESSAGE: HWND = -3isize as HWND;
232
233pub const FILE_ATTRIBUTE_DIRECTORY: DWORD = 0x00000010;
234pub const FILE_ATTRIBUTE_READONLY: DWORD = 0x00000001;
235
236pub const MEM_COMMIT: DWORD = 0x1000;
237pub const MEM_FREE: DWORD = 0x10000;
238pub const MEM_RESERVE: DWORD = 0x2000;
239
240pub const WT_EXECUTEINTIMERTHREAD: ULONG = 0x00000020;
241pub const WT_EXECUTEINPERSISTENTTHREAD: ULONG = 0x00000080;
242pub const WT_EXECUTELONGFUNCTION: ULONG = 0x00000010;
243pub const WT_EXECUTEONLYONCE: ULONG = 0x00000008;
244pub const WT_TRANSFER_IMPERSONATION: ULONG = 0x00000100;
245
246pub type WAITORTIMERCALLBACK = Option<unsafe extern "system" fn(_: PVOID, _: BOOLEAN)>;
247pub type WNDENUMPROC = Option<unsafe extern "system" fn(_: HWND, _: LPARAM) -> BOOL>;
248
249pub const TOKEN_QUERY: DWORD = 0x0008;
250
251pub const INVALID_HANDLE_VALUE: HANDLE = -1isize as HANDLE;
252
253pub const SW_SHOW: c_int = 5;
254pub const SW_HIDE: c_int = 0;
255
256pub const ERROR_NO_MORE_FILES: DWORD = 18;
257
258pub type FINDEX_INFO_LEVELS = u32;
259pub const FindExInfoStandard: FINDEX_INFO_LEVELS = 0;
260pub const FindExInfoBasic: FINDEX_INFO_LEVELS = FindExInfoStandard + 1;
261pub const FindExInfoMaxInfoLevel: FINDEX_INFO_LEVELS = FindExInfoBasic + 1;
262
263pub type FINDEX_SEARCH_OPS = u32;
264pub const FindExSearchNameMatch: FINDEX_SEARCH_OPS = 0;
265pub const FindExSearchLimitToDirectories: FINDEX_SEARCH_OPS = FindExSearchNameMatch + 1;
266
267#[repr(C)]
268#[derive(Copy, Clone)]
269pub struct POINT {
270    pub x: LONG,
271    pub y: LONG,
272}
273
274#[repr(C)]
275#[derive(Copy, Clone)]
276pub struct MSG {
277    pub hwnd: HWND,
278    pub message: UINT,
279    pub wParam: WPARAM,
280    pub lParam: LPARAM,
281    pub time: DWORD,
282    pub pt: POINT,
283}
284
285#[repr(C)]
286#[derive(Copy, Clone)]
287pub struct FILETIME {
288    pub dwLowDateTime: DWORD,
289    pub dwHighDateTime: DWORD,
290}
291
292pub type LPWIN32_FIND_DATAW = *mut WIN32_FIND_DATAW;
293#[repr(C)]
294pub struct WIN32_FIND_DATAW {
295    pub dwFileAttributes: DWORD,
296    pub ftCreationTime: FILETIME,
297    pub ftLastAccessTime: FILETIME,
298    pub ftLastWriteTime: FILETIME,
299    pub nFileSizeHigh: DWORD,
300    pub nFileSizeLow: DWORD,
301    pub dwReserved0: DWORD,
302    pub dwReserved1: DWORD,
303    pub cFileName: [WCHAR; 260],
304    pub cAlternateFileName: [WCHAR; 14],
305}
306
307pub type PMEMORY_BASIC_INFORMATION = *mut MEMORY_BASIC_INFORMATION;
308#[repr(C)]
309pub struct MEMORY_BASIC_INFORMATION {
310    pub BaseAddress: PVOID,
311    pub AllocationBase: PVOID,
312    pub AllocationProtect: DWORD,
313    pub RegionSize: SIZE_T,
314    pub State: DWORD,
315    pub Protect: DWORD,
316    pub Type: DWORD,
317}
318
319#[repr(C)]
320#[derive(Copy, Clone)]
321pub struct LARGE_INTEGER_s {
322    pub LowPart: ULONG,
323    pub HighPart: LONG,
324}
325
326#[repr(C)]
327#[derive(Copy, Clone)]
328pub struct LARGE_INTEGER_u {
329    pub LowPart: ULONG,
330    pub HighPart: LONG,
331}
332
333#[repr(C)]
334#[derive(Copy, Clone)]
335pub union LARGE_INTEGER {
336    repr: i64,
337    pub s: LARGE_INTEGER_s,
338    pub u: LARGE_INTEGER_u,
339    pub QuadPart: LONGLONG,
340}
341
342#[repr(C)]
343#[derive(Copy, Clone)]
344pub struct TOKEN_ELEVATION {
345    pub TokenIsElevated: DWORD,
346}
347
348#[repr(C)]
349#[derive(Copy, Clone)]
350pub struct CREATESTRUCTW {
351    pub lpCreateParams: LPVOID,
352    pub hInstance: HINSTANCE,
353    pub hMenu: HMENU,
354    pub hwndParent: HWND,
355    pub cy: c_int,
356    pub cx: c_int,
357    pub y: c_int,
358    pub x: c_int,
359    pub style: LONG,
360    pub lpszName: LPCWSTR,
361    pub lpszClass: LPCWSTR,
362    pub dwExStyle: DWORD,
363}
364
365//Functions
366#[link(name = "user32", kind = "dylib")]
367extern "system" {
368    pub fn FindWindowW(lpClassName: LPCWSTR, lpWindowName: LPCWSTR) -> HWND;
369    pub fn FindWindowExW(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR) -> HWND;
370    pub fn IsWindowVisible(hWnd: HWND) -> BOOL;
371    pub fn GetWindowTextW(hWnd: HWND, lpString: LPWSTR, nMaxCount: c_int) -> c_int;
372    pub fn SendMessageW(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> LRESULT;
373    pub fn SendMessageTimeoutW(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM, fuFlags: UINT, uTimeout: UINT, lpdwResult: PDWORD_PTR) -> LRESULT;
374    pub fn RealGetWindowClassW(hwnd: HWND, ptszClassName: LPWSTR, cchClassNameMax: UINT) -> UINT;
375    pub fn EnumChildWindows(hWndParent: HWND, lpEnumFunc: WNDENUMPROC, lParam: LPARAM) -> BOOL;
376    pub fn EnumWindows(lpEnumFunc: WNDENUMPROC, lParam: LPARAM) -> BOOL;
377    pub fn GetWindowThreadProcessId(hWnd: HWND, lpdwProcessId: LPDWORD) -> DWORD;
378    pub fn GetMessageW(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT) -> BOOL;
379    pub fn TranslateMessage(lpmsg: *const MSG) -> BOOL;
380    pub fn DispatchMessageW(lpmsg: *const MSG) -> LRESULT;
381    pub fn PeekMessageW(lpMsg: LPMSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT) -> BOOL;
382    pub fn GetActiveWindow() -> HWND;
383    pub fn CreateWindowExW(dwExStyle: DWORD, lpClassName: LPCWSTR, lpWindowName: LPCWSTR, dwStyle: DWORD, x: c_int, y: c_int, nWidth: c_int, nHeight: c_int, hWndParent: HWND, hMenu: HMENU, hInstance: HINSTANCE, lpParam: LPVOID) -> HWND;
384    pub fn DestroyWindow(hWnd: HWND) -> BOOL;
385    pub fn ShowWindow(hWnd: HWND, nCmdShow: c_int) -> BOOL;
386    pub fn MessageBoxW(hWnd: HWND, lpText: LPCWSTR, lpCaption: LPCWSTR, uType: UINT) -> c_int;
387    pub fn SetLastErrorEx(dwErrCode: DWORD, dwType: DWORD);
388    pub fn AddClipboardFormatListener(hWnd: HWND) -> BOOL;
389    pub fn RemoveClipboardFormatListener(hWnd: HWND) -> BOOL;
390    pub fn PostMessageW(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> BOOL;
391}
392
393#[link(name = "kernel32", kind = "dylib")]
394extern "system" {
395    pub fn OpenProcess(dwDesiredAccess: DWORD, bInheritHandle: BOOL, dwProcessId: DWORD) -> HANDLE;
396    pub fn GetCurrentProcess() -> HANDLE;
397    pub fn GetProcessId(Process: HANDLE) -> DWORD;
398    pub fn TerminateProcess(hProcess: HANDLE, uExitCode: UINT) -> BOOL;
399    pub fn CloseHandle(hObject: HANDLE) -> BOOL;
400
401    pub fn ReadProcessMemory(hProcess: HANDLE, lpBaseAddress: LPCVOID, lpBuffer: LPVOID, nSize: SIZE_T, lpNumberOfBytesRead: *mut SIZE_T) -> BOOL;
402    pub fn WriteProcessMemory(hProcess: HANDLE, lpBaseAddress: LPVOID, lpBuffer: LPCVOID, nSize: SIZE_T, lpNumberOfBytesWritten: *mut SIZE_T) -> BOOL;
403
404    pub fn QueryFullProcessImageNameW(hProcess: HANDLE, dwFlags: DWORD, lpExeName: LPWSTR, lpdwSize: PDWORD) -> BOOL;
405
406    pub fn GetConsoleWindow() -> HWND;
407
408    pub fn FindFirstFileExW(lpFileName: LPCWSTR, fInfoLevelId: FINDEX_INFO_LEVELS, lpFindFileData: LPVOID, fSearchOp: FINDEX_SEARCH_OPS, lpSearchFilter: LPVOID, dwAdditionalFlags: DWORD) -> HANDLE;
409    pub fn FindNextFileW(hFindFile: HANDLE, lpFindFileData: LPWIN32_FIND_DATAW) -> BOOL;
410    pub fn FindClose(hFindFile: HANDLE) -> BOOL;
411
412    pub fn VirtualQueryEx(hProcess: HANDLE, lpAddress: LPCVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T) -> SIZE_T;
413
414    pub fn GetModuleHandleExW(dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: *mut HMODULE) -> BOOL;
415    pub fn GetModuleFileNameW(hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD) -> DWORD;
416
417    pub fn QueryPerformanceFrequency(lpFrequency: *mut LARGE_INTEGER) -> BOOL;
418    pub fn QueryPerformanceCounter(lpPerformanceCount: *mut LARGE_INTEGER) -> BOOL;
419
420    pub fn CreateTimerQueue() -> HANDLE;
421    pub fn DeleteTimerQueueEx(TimerQueue: HANDLE, CompletionEvent: HANDLE) -> BOOL;
422    pub fn CreateTimerQueueTimer(phNewTimer: PHANDLE, TimerQueue: HANDLE, Callback: WAITORTIMERCALLBACK, Parameter: PVOID, DueTime: DWORD, Period: DWORD, Flags: ULONG) -> BOOL;
423    pub fn DeleteTimerQueueTimer(TimerQueue: HANDLE, Timer: HANDLE, CompletionEvent: HANDLE) -> BOOL;
424    pub fn ChangeTimerQueueTimer(TimerQueue: HANDLE, Timer: HANDLE, DueTime: ULONG, Period: ULONG) -> BOOL;
425}
426
427#[link(name = "advapi32", kind = "dylib")]
428extern "system" {
429    pub fn OpenProcessToken(ProcessHandle: HANDLE, DesiredAccess: DWORD, TokenHandle: PHANDLE) -> BOOL;
430    pub fn GetTokenInformation(TokenHandle: HANDLE, TokenInformationClass: TOKEN_INFORMATION_CLASS, TokenInformation: LPVOID, TokenInformationLength: DWORD, ReturnLength: PDWORD) -> BOOL;
431}