11const std = @import ("../../std.zig" );
22const windows = std .os .windows ;
3+ const ntdll = windows .ntdll ;
34
45const BOOL = windows .BOOL ;
5- const BOOLEAN = windows .BOOLEAN ;
66const CONDITION_VARIABLE = windows .CONDITION_VARIABLE ;
77const CONSOLE_SCREEN_BUFFER_INFO = windows .CONSOLE_SCREEN_BUFFER_INFO ;
88const COORD = windows .COORD ;
9- const CRITICAL_SECTION = windows .CRITICAL_SECTION ;
109const DWORD = windows .DWORD ;
1110const FARPROC = windows .FARPROC ;
1211const FILETIME = windows .FILETIME ;
1312const HANDLE = windows .HANDLE ;
1413const HANDLER_ROUTINE = windows .HANDLER_ROUTINE ;
15- const HLOCAL = windows .HLOCAL ;
1614const HMODULE = windows .HMODULE ;
1715const INIT_ONCE = windows .INIT_ONCE ;
1816const INIT_ONCE_FN = windows .INIT_ONCE_FN ;
@@ -32,30 +30,29 @@ const SECURITY_ATTRIBUTES = windows.SECURITY_ATTRIBUTES;
3230const SIZE_T = windows .SIZE_T ;
3331const SRWLOCK = windows .SRWLOCK ;
3432const STARTUPINFOW = windows .STARTUPINFOW ;
33+ const SYSTEM_INFO = windows .SYSTEM_INFO ;
3534const UCHAR = windows .UCHAR ;
3635const UINT = windows .UINT ;
3736const ULONG = windows .ULONG ;
3837const ULONG_PTR = windows .ULONG_PTR ;
3938const va_list = windows .va_list ;
40- const VECTORED_EXCEPTION_HANDLER = windows .VECTORED_EXCEPTION_HANDLER ;
4139const WCHAR = windows .WCHAR ;
4240const WIN32_FIND_DATAW = windows .WIN32_FIND_DATAW ;
4341const Win32Error = windows .Win32Error ;
4442const WORD = windows .WORD ;
45- const SYSTEM_INFO = windows .SYSTEM_INFO ;
4643
4744// I/O - Filesystem
4845
4946pub extern "kernel32" fn ReadDirectoryChangesW (
50- hDirectory : windows. HANDLE ,
47+ hDirectory : HANDLE ,
5148 lpBuffer : [* ]align (@alignOf (windows.FILE_NOTIFY_INFORMATION )) u8 ,
52- nBufferLength : windows. DWORD ,
53- bWatchSubtree : windows. BOOL ,
49+ nBufferLength : DWORD ,
50+ bWatchSubtree : BOOL ,
5451 dwNotifyFilter : windows.FileNotifyChangeFilter ,
55- lpBytesReturned : ? * windows. DWORD ,
56- lpOverlapped : ? * windows. OVERLAPPED ,
52+ lpBytesReturned : ? * DWORD ,
53+ lpOverlapped : ? * OVERLAPPED ,
5754 lpCompletionRoutine : windows.LPOVERLAPPED_COMPLETION_ROUTINE ,
58- ) callconv (.winapi ) windows . BOOL ;
55+ ) callconv (.winapi ) BOOL ;
5956
6057// TODO: Wrapper around NtCancelIoFile.
6158pub extern "kernel32" fn CancelIo (
@@ -258,16 +255,8 @@ pub extern "kernel32" fn CreateIoCompletionPort(
258255 NumberOfConcurrentThreads : DWORD ,
259256) callconv (.winapi ) ? HANDLE ;
260257
261- // TODO: Forwarder to NtAddVectoredExceptionHandler.
262- pub extern "kernel32" fn AddVectoredExceptionHandler (
263- First : ULONG ,
264- Handler : ? VECTORED_EXCEPTION_HANDLER ,
265- ) callconv (.winapi ) ? LPVOID ;
266-
267- // TODO: Forwarder to NtRemoveVectoredExceptionHandler.
268- pub extern "kernel32" fn RemoveVectoredExceptionHandler (
269- Handle : HANDLE ,
270- ) callconv (.winapi ) ULONG ;
258+ pub const AddVectoredExceptionHandler = ntdll .RtlAddVectoredExceptionHandler ;
259+ pub const RemoveVectoredExceptionHandler = ntdll .RtlRemoveVectoredExceptionHandler ;
271260
272261// TODO: Wrapper around RtlReportSilentProcessExit + NtTerminateProcess.
273262pub extern "kernel32" fn TerminateProcess (
@@ -321,10 +310,7 @@ pub extern "kernel32" fn CreateProcessW(
321310 lpProcessInformation : * PROCESS_INFORMATION ,
322311) callconv (.winapi ) BOOL ;
323312
324- // TODO: Fowarder to RtlExitUserProcess.
325- pub extern "kernel32" fn ExitProcess (
326- exit_code : UINT ,
327- ) callconv (.winapi ) noreturn ;
313+ pub const ExitProcess = ntdll .RtlExitUserProcess ;
328314
329315// TODO: implement via ntdll instead
330316pub extern "kernel32" fn SleepEx (
@@ -372,40 +358,14 @@ pub extern "kernel32" fn SwitchToThread() callconv(.winapi) BOOL;
372358
373359// Locks, critical sections, initializers
374360
375- // TODO: Forwarder to RtlInitializeCriticalSection
376- pub extern "kernel32" fn InitializeCriticalSection (
377- lpCriticalSection : * CRITICAL_SECTION ,
378- ) callconv (.winapi ) void ;
379-
380- // TODO: Forwarder to RtlEnterCriticalSection
381- pub extern "kernel32" fn EnterCriticalSection (
382- lpCriticalSection : * CRITICAL_SECTION ,
383- ) callconv (.winapi ) void ;
384-
385- // TODO: Forwarder to RtlLeaveCriticalSection
386- pub extern "kernel32" fn LeaveCriticalSection (
387- lpCriticalSection : * CRITICAL_SECTION ,
388- ) callconv (.winapi ) void ;
389-
390- // TODO: Forwarder to RtlDeleteCriticalSection
391- pub extern "kernel32" fn DeleteCriticalSection (
392- lpCriticalSection : * CRITICAL_SECTION ,
393- ) callconv (.winapi ) void ;
394-
395- // TODO: Forwarder to RtlTryAcquireSRWLockExclusive
396- pub extern "kernel32" fn TryAcquireSRWLockExclusive (
397- SRWLock : * SRWLOCK ,
398- ) callconv (.winapi ) BOOLEAN ;
399-
400- // TODO: Forwarder to RtlAcquireSRWLockExclusive
401- pub extern "kernel32" fn AcquireSRWLockExclusive (
402- SRWLock : * SRWLOCK ,
403- ) callconv (.winapi ) void ;
361+ pub const InitializeCriticalSection = ntdll .RtlInitializeCriticalSection ;
362+ pub const EnterCriticalSection = ntdll .RtlEnterCriticalSection ;
363+ pub const LeaveCriticalSection = ntdll .RtlLeaveCriticalSection ;
364+ pub const DeleteCriticalSection = ntdll .RtlDeleteCriticalSection ;
404365
405- // TODO: Forwarder to RtlReleaseSRWLockExclusive
406- pub extern "kernel32" fn ReleaseSRWLockExclusive (
407- SRWLock : * SRWLOCK ,
408- ) callconv (.winapi ) void ;
366+ pub const TryAcquireSRWLockExclusive = ntdll .RtlTryAcquireSRWLockExclusive ;
367+ pub const AcquireSRWLockExclusive = ntdll .RtlAcquireSRWLockExclusive ;
368+ pub const ReleaseSRWLockExclusive = ntdll .RtlReleaseSRWLockExclusive ;
409369
410370pub extern "kernel32" fn InitOnceExecuteOnce (
411371 InitOnce : * INIT_ONCE ,
@@ -414,15 +374,8 @@ pub extern "kernel32" fn InitOnceExecuteOnce(
414374 Context : ? * anyopaque ,
415375) callconv (.winapi ) BOOL ;
416376
417- // TODO: Forwarder to RtlWakeConditionVariable
418- pub extern "kernel32" fn WakeConditionVariable (
419- ConditionVariable : * CONDITION_VARIABLE ,
420- ) callconv (.winapi ) void ;
421-
422- // TODO: Forwarder to RtlWakeAllConditionVariable
423- pub extern "kernel32" fn WakeAllConditionVariable (
424- ConditionVariable : * CONDITION_VARIABLE ,
425- ) callconv (.winapi ) void ;
377+ pub const WakeConditionVariable = ntdll .RtlWakeConditionVariable ;
378+ pub const WakeAllConditionVariable = ntdll .RtlWakeAllConditionVariable ;
426379
427380// TODO:
428381// - dwMilliseconds -> LARGE_INTEGER.
@@ -514,27 +467,9 @@ pub extern "kernel32" fn HeapCreate(
514467 dwMaximumSize : SIZE_T ,
515468) callconv (.winapi ) ? HANDLE ;
516469
517- // TODO: Forwarder to RtlReAllocateHeap.
518- pub extern "kernel32" fn HeapReAlloc (
519- hHeap : HANDLE ,
520- dwFlags : DWORD ,
521- lpMem : * anyopaque ,
522- dwBytes : SIZE_T ,
523- ) callconv (.winapi ) ? * anyopaque ;
524-
525- // TODO: Fowrarder to RtlAllocateHeap.
526- pub extern "kernel32" fn HeapAlloc (
527- hHeap : HANDLE ,
528- dwFlags : DWORD ,
529- dwBytes : SIZE_T ,
530- ) callconv (.winapi ) ? * anyopaque ;
531-
532- // TODO: Fowrarder to RtlFreeHeap.
533- pub extern "kernel32" fn HeapFree (
534- hHeap : HANDLE ,
535- dwFlags : DWORD ,
536- lpMem : LPVOID ,
537- ) callconv (.winapi ) BOOL ;
470+ pub const HeapReAlloc = ntdll .RtlReAllocateHeap ;
471+ pub const HeapAlloc = ntdll .RtlAllocateHeap ;
472+ pub const HeapFree = ntdll .RtlFreeHeap ;
538473
539474// TODO: Wrapper around RtlValidateHeap (BOOLEAN -> BOOL)
540475pub extern "kernel32" fn HeapValidate (
@@ -642,4 +577,6 @@ pub extern "kernel32" fn SetLastError(
642577
643578// Everything Else
644579
645- pub extern "kernel32" fn GetSystemInfo (lpSystemInfo : * SYSTEM_INFO ) callconv (.winapi ) void ;
580+ pub extern "kernel32" fn GetSystemInfo (
581+ lpSystemInfo : * SYSTEM_INFO ,
582+ ) callconv (.winapi ) void ;
0 commit comments