1#![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#[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}