structstd.os.windows.kernel32[src]

Functions

FunctionReadDirectoryChangesW[src]

pub extern "kernel32" fn ReadDirectoryChangesW( hDirectory: windows.HANDLE, lpBuffer: [*]align(@alignOf(windows.FILE_NOTIFY_INFORMATION)) u8, nBufferLength: windows.DWORD, bWatchSubtree: windows.BOOL, dwNotifyFilter: windows.FileNotifyChangeFilter, lpBytesReturned: ?*windows.DWORD, lpOverlapped: ?*windows.OVERLAPPED, lpCompletionRoutine: windows.LPOVERLAPPED_COMPLETION_ROUTINE, ) callconv(.winapi) windows.BOOL

Parameters

hDirectory: windows.HANDLE
lpBuffer: [*]align(@alignOf(windows.FILE_NOTIFY_INFORMATION)) u8
nBufferLength: windows.DWORD
bWatchSubtree: windows.BOOL
lpBytesReturned: ?*windows.DWORD
lpOverlapped: ?*windows.OVERLAPPED

Source Code

Source code
pub extern "kernel32" fn ReadDirectoryChangesW(
    hDirectory: windows.HANDLE,
    lpBuffer: [*]align(@alignOf(windows.FILE_NOTIFY_INFORMATION)) u8,
    nBufferLength: windows.DWORD,
    bWatchSubtree: windows.BOOL,
    dwNotifyFilter: windows.FileNotifyChangeFilter,
    lpBytesReturned: ?*windows.DWORD,
    lpOverlapped: ?*windows.OVERLAPPED,
    lpCompletionRoutine: windows.LPOVERLAPPED_COMPLETION_ROUTINE,
) callconv(.winapi) windows.BOOL

FunctionCancelIo[src]

pub extern "kernel32" fn CancelIo( hFile: HANDLE, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE

Source Code

Source code
pub extern "kernel32" fn CancelIo(
    hFile: HANDLE,
) callconv(.winapi) BOOL

FunctionCancelIoEx[src]

pub extern "kernel32" fn CancelIoEx( hFile: HANDLE, lpOverlapped: ?*OVERLAPPED, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE
lpOverlapped: ?*OVERLAPPED

Source Code

Source code
pub extern "kernel32" fn CancelIoEx(
    hFile: HANDLE,
    lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL

FunctionCreateFileW[src]

pub extern "kernel32" fn CreateFileW( lpFileName: LPCWSTR, dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: ?*SECURITY_ATTRIBUTES, dwCreationDisposition: DWORD, dwFlagsAndAttributes: DWORD, hTemplateFile: ?HANDLE, ) callconv(.winapi) HANDLE

Parameters

lpFileName: LPCWSTR
dwDesiredAccess: DWORD
dwShareMode: DWORD
lpSecurityAttributes: ?*SECURITY_ATTRIBUTES
dwCreationDisposition: DWORD
dwFlagsAndAttributes: DWORD
hTemplateFile: ?HANDLE

Source Code

Source code
pub extern "kernel32" fn CreateFileW(
    lpFileName: LPCWSTR,
    dwDesiredAccess: DWORD,
    dwShareMode: DWORD,
    lpSecurityAttributes: ?*SECURITY_ATTRIBUTES,
    dwCreationDisposition: DWORD,
    dwFlagsAndAttributes: DWORD,
    hTemplateFile: ?HANDLE,
) callconv(.winapi) HANDLE

FunctionCreateNamedPipeW[src]

pub extern "kernel32" fn CreateNamedPipeW( lpName: LPCWSTR, dwOpenMode: DWORD, dwPipeMode: DWORD, nMaxInstances: DWORD, nOutBufferSize: DWORD, nInBufferSize: DWORD, nDefaultTimeOut: DWORD, lpSecurityAttributes: ?*const SECURITY_ATTRIBUTES, ) callconv(.winapi) HANDLE

Parameters

lpName: LPCWSTR
dwOpenMode: DWORD
dwPipeMode: DWORD
nMaxInstances: DWORD
nOutBufferSize: DWORD
nInBufferSize: DWORD
nDefaultTimeOut: DWORD
lpSecurityAttributes: ?*const SECURITY_ATTRIBUTES

Source Code

Source code
pub extern "kernel32" fn CreateNamedPipeW(
    lpName: LPCWSTR,
    dwOpenMode: DWORD,
    dwPipeMode: DWORD,
    nMaxInstances: DWORD,
    nOutBufferSize: DWORD,
    nInBufferSize: DWORD,
    nDefaultTimeOut: DWORD,
    lpSecurityAttributes: ?*const SECURITY_ATTRIBUTES,
) callconv(.winapi) HANDLE

FunctionFindFirstFileW[src]

pub extern "kernel32" fn FindFirstFileW( lpFileName: LPCWSTR, lpFindFileData: *WIN32_FIND_DATAW, ) callconv(.winapi) HANDLE

Parameters

lpFileName: LPCWSTR
lpFindFileData: *WIN32_FIND_DATAW

Source Code

Source code
pub extern "kernel32" fn FindFirstFileW(
    lpFileName: LPCWSTR,
    lpFindFileData: *WIN32_FIND_DATAW,
) callconv(.winapi) HANDLE

FunctionFindClose[src]

pub extern "kernel32" fn FindClose( hFindFile: HANDLE, ) callconv(.winapi) BOOL

Parameters

hFindFile: HANDLE

Source Code

Source code
pub extern "kernel32" fn FindClose(
    hFindFile: HANDLE,
) callconv(.winapi) BOOL

FunctionGetFullPathNameW[src]

pub extern "kernel32" fn GetFullPathNameW( lpFileName: LPCWSTR, nBufferLength: DWORD, lpBuffer: LPWSTR, lpFilePart: ?*?LPWSTR, ) callconv(.winapi) DWORD

Parameters

lpFileName: LPCWSTR
nBufferLength: DWORD
lpBuffer: LPWSTR
lpFilePart: ?*?LPWSTR

Source Code

Source code
pub extern "kernel32" fn GetFullPathNameW(
    lpFileName: LPCWSTR,
    nBufferLength: DWORD,
    lpBuffer: LPWSTR,
    lpFilePart: ?*?LPWSTR,
) callconv(.winapi) DWORD

FunctionGetStdHandle[src]

pub extern "kernel32" fn GetStdHandle( nStdHandle: DWORD, ) callconv(.winapi) ?HANDLE

Parameters

nStdHandle: DWORD

Source Code

Source code
pub extern "kernel32" fn GetStdHandle(
    nStdHandle: DWORD,
) callconv(.winapi) ?HANDLE

FunctionMoveFileExW[src]

pub extern "kernel32" fn MoveFileExW( lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: DWORD, ) callconv(.winapi) BOOL

Parameters

lpExistingFileName: LPCWSTR
lpNewFileName: LPCWSTR
dwFlags: DWORD

Source Code

Source code
pub extern "kernel32" fn MoveFileExW(
    lpExistingFileName: LPCWSTR,
    lpNewFileName: LPCWSTR,
    dwFlags: DWORD,
) callconv(.winapi) BOOL

FunctionSetFilePointerEx[src]

pub extern "kernel32" fn SetFilePointerEx( hFile: HANDLE, liDistanceToMove: LARGE_INTEGER, lpNewFilePointer: ?*LARGE_INTEGER, dwMoveMethod: DWORD, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE
liDistanceToMove: LARGE_INTEGER
lpNewFilePointer: ?*LARGE_INTEGER
dwMoveMethod: DWORD

Source Code

Source code
pub extern "kernel32" fn SetFilePointerEx(
    hFile: HANDLE,
    liDistanceToMove: LARGE_INTEGER,
    lpNewFilePointer: ?*LARGE_INTEGER,
    dwMoveMethod: DWORD,
) callconv(.winapi) BOOL

FunctionSetFileTime[src]

pub extern "kernel32" fn SetFileTime( hFile: HANDLE, lpCreationTime: ?*const FILETIME, lpLastAccessTime: ?*const FILETIME, lpLastWriteTime: ?*const FILETIME, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE
lpCreationTime: ?*const FILETIME
lpLastAccessTime: ?*const FILETIME
lpLastWriteTime: ?*const FILETIME

Source Code

Source code
pub extern "kernel32" fn SetFileTime(
    hFile: HANDLE,
    lpCreationTime: ?*const FILETIME,
    lpLastAccessTime: ?*const FILETIME,
    lpLastWriteTime: ?*const FILETIME,
) callconv(.winapi) BOOL

FunctionWriteFile[src]

pub extern "kernel32" fn WriteFile( in_hFile: HANDLE, in_lpBuffer: [*]const u8, in_nNumberOfBytesToWrite: DWORD, out_lpNumberOfBytesWritten: ?*DWORD, in_out_lpOverlapped: ?*OVERLAPPED, ) callconv(.winapi) BOOL

Parameters

in_hFile: HANDLE
in_lpBuffer: [*]const u8
in_nNumberOfBytesToWrite: DWORD
out_lpNumberOfBytesWritten: ?*DWORD
in_out_lpOverlapped: ?*OVERLAPPED

Source Code

Source code
pub extern "kernel32" fn WriteFile(
    in_hFile: HANDLE,
    in_lpBuffer: [*]const u8,
    in_nNumberOfBytesToWrite: DWORD,
    out_lpNumberOfBytesWritten: ?*DWORD,
    in_out_lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL

FunctionGetFileSizeEx[src]

pub extern "kernel32" fn GetFileSizeEx( hFile: HANDLE, lpFileSize: *LARGE_INTEGER, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE
lpFileSize: *LARGE_INTEGER

Source Code

Source code
pub extern "kernel32" fn GetFileSizeEx(
    hFile: HANDLE,
    lpFileSize: *LARGE_INTEGER,
) callconv(.winapi) BOOL

FunctionFlushFileBuffers[src]

pub extern "kernel32" fn FlushFileBuffers( hFile: HANDLE, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE

Source Code

Source code
pub extern "kernel32" fn FlushFileBuffers(
    hFile: HANDLE,
) callconv(.winapi) BOOL

FunctionSetFileCompletionNotificationModes[src]

pub extern "kernel32" fn SetFileCompletionNotificationModes( FileHandle: HANDLE, Flags: UCHAR, ) callconv(.winapi) BOOL

Parameters

FileHandle: HANDLE
Flags: UCHAR

Source Code

Source code
pub extern "kernel32" fn SetFileCompletionNotificationModes(
    FileHandle: HANDLE,
    Flags: UCHAR,
) callconv(.winapi) BOOL

FunctionGetCurrentDirectoryW[src]

pub extern "kernel32" fn GetCurrentDirectoryW( nBufferLength: DWORD, lpBuffer: ?[*]WCHAR, ) callconv(.winapi) DWORD

Parameters

nBufferLength: DWORD
lpBuffer: ?[*]WCHAR

Source Code

Source code
pub extern "kernel32" fn GetCurrentDirectoryW(
    nBufferLength: DWORD,
    lpBuffer: ?[*]WCHAR,
) callconv(.winapi) DWORD

FunctionGetFileAttributesW[src]

pub extern "kernel32" fn GetFileAttributesW( lpFileName: LPCWSTR, ) callconv(.winapi) DWORD

Parameters

lpFileName: LPCWSTR

Source Code

Source code
pub extern "kernel32" fn GetFileAttributesW(
    lpFileName: LPCWSTR,
) callconv(.winapi) DWORD

FunctionReadFile[src]

pub extern "kernel32" fn ReadFile( hFile: HANDLE, lpBuffer: LPVOID, nNumberOfBytesToRead: DWORD, lpNumberOfBytesRead: ?*DWORD, lpOverlapped: ?*OVERLAPPED, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE
lpBuffer: LPVOID
nNumberOfBytesToRead: DWORD
lpNumberOfBytesRead: ?*DWORD
lpOverlapped: ?*OVERLAPPED

Source Code

Source code
pub extern "kernel32" fn ReadFile(
    hFile: HANDLE,
    lpBuffer: LPVOID,
    nNumberOfBytesToRead: DWORD,
    lpNumberOfBytesRead: ?*DWORD,
    lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL

FunctionGetSystemDirectoryW[src]

pub extern "kernel32" fn GetSystemDirectoryW( lpBuffer: LPWSTR, uSize: UINT, ) callconv(.winapi) UINT

Parameters

lpBuffer: LPWSTR
uSize: UINT

Source Code

Source code
pub extern "kernel32" fn GetSystemDirectoryW(
    lpBuffer: LPWSTR,
    uSize: UINT,
) callconv(.winapi) UINT

FunctionCreateEventExW[src]

pub extern "kernel32" fn CreateEventExW( lpEventAttributes: ?*SECURITY_ATTRIBUTES, lpName: ?LPCWSTR, dwFlags: DWORD, dwDesiredAccess: DWORD, ) callconv(.winapi) ?HANDLE

Parameters

lpEventAttributes: ?*SECURITY_ATTRIBUTES
lpName: ?LPCWSTR
dwFlags: DWORD
dwDesiredAccess: DWORD

Source Code

Source code
pub extern "kernel32" fn CreateEventExW(
    lpEventAttributes: ?*SECURITY_ATTRIBUTES,
    lpName: ?LPCWSTR,
    dwFlags: DWORD,
    dwDesiredAccess: DWORD,
) callconv(.winapi) ?HANDLE

FunctionDuplicateHandle[src]

pub extern "kernel32" fn DuplicateHandle( hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, hTargetProcessHandle: HANDLE, lpTargetHandle: *HANDLE, dwDesiredAccess: DWORD, bInheritHandle: BOOL, dwOptions: DWORD, ) callconv(.winapi) BOOL

Parameters

hSourceProcessHandle: HANDLE
hSourceHandle: HANDLE
hTargetProcessHandle: HANDLE
lpTargetHandle: *HANDLE
dwDesiredAccess: DWORD
bInheritHandle: BOOL
dwOptions: DWORD

Source Code

Source code
pub extern "kernel32" fn DuplicateHandle(
    hSourceProcessHandle: HANDLE,
    hSourceHandle: HANDLE,
    hTargetProcessHandle: HANDLE,
    lpTargetHandle: *HANDLE,
    dwDesiredAccess: DWORD,
    bInheritHandle: BOOL,
    dwOptions: DWORD,
) callconv(.winapi) BOOL

FunctionSetHandleInformation[src]

pub extern "kernel32" fn SetHandleInformation( hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD, ) callconv(.winapi) BOOL

Parameters

hObject: HANDLE
dwMask: DWORD
dwFlags: DWORD

Source Code

Source code
pub extern "kernel32" fn SetHandleInformation(
    hObject: HANDLE,
    dwMask: DWORD,
    dwFlags: DWORD,
) callconv(.winapi) BOOL

FunctionGetQueuedCompletionStatus[src]

pub extern "kernel32" fn GetQueuedCompletionStatus( CompletionPort: HANDLE, lpNumberOfBytesTransferred: *DWORD, lpCompletionKey: *ULONG_PTR, lpOverlapped: *?*OVERLAPPED, dwMilliseconds: DWORD, ) callconv(.winapi) BOOL

Parameters

CompletionPort: HANDLE
lpNumberOfBytesTransferred: *DWORD
lpCompletionKey: *ULONG_PTR
lpOverlapped: *?*OVERLAPPED
dwMilliseconds: DWORD

Source Code

Source code
pub extern "kernel32" fn GetQueuedCompletionStatus(
    CompletionPort: HANDLE,
    lpNumberOfBytesTransferred: *DWORD,
    lpCompletionKey: *ULONG_PTR,
    lpOverlapped: *?*OVERLAPPED,
    dwMilliseconds: DWORD,
) callconv(.winapi) BOOL

FunctionGetQueuedCompletionStatusEx[src]

pub extern "kernel32" fn GetQueuedCompletionStatusEx( CompletionPort: HANDLE, lpCompletionPortEntries: [*]OVERLAPPED_ENTRY, ulCount: ULONG, ulNumEntriesRemoved: *ULONG, dwMilliseconds: DWORD, fAlertable: BOOL, ) callconv(.winapi) BOOL

Parameters

CompletionPort: HANDLE
lpCompletionPortEntries: [*]OVERLAPPED_ENTRY
ulCount: ULONG
ulNumEntriesRemoved: *ULONG
dwMilliseconds: DWORD
fAlertable: BOOL

Source Code

Source code
pub extern "kernel32" fn GetQueuedCompletionStatusEx(
    CompletionPort: HANDLE,
    lpCompletionPortEntries: [*]OVERLAPPED_ENTRY,
    ulCount: ULONG,
    ulNumEntriesRemoved: *ULONG,
    dwMilliseconds: DWORD,
    fAlertable: BOOL,
) callconv(.winapi) BOOL

FunctionPostQueuedCompletionStatus[src]

pub extern "kernel32" fn PostQueuedCompletionStatus( CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: ULONG_PTR, lpOverlapped: ?*OVERLAPPED, ) callconv(.winapi) BOOL

Parameters

CompletionPort: HANDLE
dwNumberOfBytesTransferred: DWORD
dwCompletionKey: ULONG_PTR
lpOverlapped: ?*OVERLAPPED

Source Code

Source code
pub extern "kernel32" fn PostQueuedCompletionStatus(
    CompletionPort: HANDLE,
    dwNumberOfBytesTransferred: DWORD,
    dwCompletionKey: ULONG_PTR,
    lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL

FunctionGetOverlappedResult[src]

pub extern "kernel32" fn GetOverlappedResult( hFile: HANDLE, lpOverlapped: *OVERLAPPED, lpNumberOfBytesTransferred: *DWORD, bWait: BOOL, ) callconv(.winapi) BOOL

Parameters

hFile: HANDLE
lpOverlapped: *OVERLAPPED
lpNumberOfBytesTransferred: *DWORD
bWait: BOOL

Source Code

Source code
pub extern "kernel32" fn GetOverlappedResult(
    hFile: HANDLE,
    lpOverlapped: *OVERLAPPED,
    lpNumberOfBytesTransferred: *DWORD,
    bWait: BOOL,
) callconv(.winapi) BOOL

FunctionCreateIoCompletionPort[src]

pub extern "kernel32" fn CreateIoCompletionPort( FileHandle: HANDLE, ExistingCompletionPort: ?HANDLE, CompletionKey: ULONG_PTR, NumberOfConcurrentThreads: DWORD, ) callconv(.winapi) ?HANDLE

Parameters

FileHandle: HANDLE
ExistingCompletionPort: ?HANDLE
CompletionKey: ULONG_PTR
NumberOfConcurrentThreads: DWORD

Source Code

Source code
pub extern "kernel32" fn CreateIoCompletionPort(
    FileHandle: HANDLE,
    ExistingCompletionPort: ?HANDLE,
    CompletionKey: ULONG_PTR,
    NumberOfConcurrentThreads: DWORD,
) callconv(.winapi) ?HANDLE

FunctionAddVectoredExceptionHandler[src]

pub extern "kernel32" fn AddVectoredExceptionHandler( First: ULONG, Handler: ?VECTORED_EXCEPTION_HANDLER, ) callconv(.winapi) ?LPVOID

Parameters

Source Code

Source code
pub extern "kernel32" fn AddVectoredExceptionHandler(
    First: ULONG,
    Handler: ?VECTORED_EXCEPTION_HANDLER,
) callconv(.winapi) ?LPVOID

FunctionRemoveVectoredExceptionHandler[src]

pub extern "kernel32" fn RemoveVectoredExceptionHandler( Handle: HANDLE, ) callconv(.winapi) ULONG

Parameters

Handle: HANDLE

Source Code

Source code
pub extern "kernel32" fn RemoveVectoredExceptionHandler(
    Handle: HANDLE,
) callconv(.winapi) ULONG

FunctionTerminateProcess[src]

pub extern "kernel32" fn TerminateProcess( hProcess: HANDLE, uExitCode: UINT, ) callconv(.winapi) BOOL

Parameters

hProcess: HANDLE
uExitCode: UINT

Source Code

Source code
pub extern "kernel32" fn TerminateProcess(
    hProcess: HANDLE,
    uExitCode: UINT,
) callconv(.winapi) BOOL

FunctionWaitForSingleObject[src]

pub extern "kernel32" fn WaitForSingleObject( hHandle: HANDLE, dwMilliseconds: DWORD, ) callconv(.winapi) DWORD

Parameters

hHandle: HANDLE
dwMilliseconds: DWORD

Source Code

Source code
pub extern "kernel32" fn WaitForSingleObject(
    hHandle: HANDLE,
    dwMilliseconds: DWORD,
) callconv(.winapi) DWORD

FunctionWaitForSingleObjectEx[src]

pub extern "kernel32" fn WaitForSingleObjectEx( hHandle: HANDLE, dwMilliseconds: DWORD, bAlertable: BOOL, ) callconv(.winapi) DWORD

Parameters

hHandle: HANDLE
dwMilliseconds: DWORD
bAlertable: BOOL

Source Code

Source code
pub extern "kernel32" fn WaitForSingleObjectEx(
    hHandle: HANDLE,
    dwMilliseconds: DWORD,
    bAlertable: BOOL,
) callconv(.winapi) DWORD

FunctionWaitForMultipleObjects[src]

pub extern "kernel32" fn WaitForMultipleObjects( nCount: DWORD, lpHandle: [*]const HANDLE, bWaitAll: BOOL, dwMilliseconds: DWORD, ) callconv(.winapi) DWORD

Parameters

nCount: DWORD
lpHandle: [*]const HANDLE
bWaitAll: BOOL
dwMilliseconds: DWORD

Source Code

Source code
pub extern "kernel32" fn WaitForMultipleObjects(
    nCount: DWORD,
    lpHandle: [*]const HANDLE,
    bWaitAll: BOOL,
    dwMilliseconds: DWORD,
) callconv(.winapi) DWORD

FunctionWaitForMultipleObjectsEx[src]

pub extern "kernel32" fn WaitForMultipleObjectsEx( nCount: DWORD, lpHandle: [*]const HANDLE, bWaitAll: BOOL, dwMilliseconds: DWORD, bAlertable: BOOL, ) callconv(.winapi) DWORD

Parameters

nCount: DWORD
lpHandle: [*]const HANDLE
bWaitAll: BOOL
dwMilliseconds: DWORD
bAlertable: BOOL

Source Code

Source code
pub extern "kernel32" fn WaitForMultipleObjectsEx(
    nCount: DWORD,
    lpHandle: [*]const HANDLE,
    bWaitAll: BOOL,
    dwMilliseconds: DWORD,
    bAlertable: BOOL,
) callconv(.winapi) DWORD

FunctionCreateProcessW[src]

pub extern "kernel32" fn CreateProcessW( lpApplicationName: ?LPCWSTR, lpCommandLine: ?LPWSTR, lpProcessAttributes: ?*SECURITY_ATTRIBUTES, lpThreadAttributes: ?*SECURITY_ATTRIBUTES, bInheritHandles: BOOL, dwCreationFlags: DWORD, lpEnvironment: ?LPVOID, lpCurrentDirectory: ?LPCWSTR, lpStartupInfo: *STARTUPINFOW, lpProcessInformation: *PROCESS_INFORMATION, ) callconv(.winapi) BOOL

Parameters

lpApplicationName: ?LPCWSTR
lpCommandLine: ?LPWSTR
lpProcessAttributes: ?*SECURITY_ATTRIBUTES
lpThreadAttributes: ?*SECURITY_ATTRIBUTES
bInheritHandles: BOOL
dwCreationFlags: DWORD
lpEnvironment: ?LPVOID
lpCurrentDirectory: ?LPCWSTR
lpStartupInfo: *STARTUPINFOW
lpProcessInformation: *PROCESS_INFORMATION

Source Code

Source code
pub extern "kernel32" fn CreateProcessW(
    lpApplicationName: ?LPCWSTR,
    lpCommandLine: ?LPWSTR,
    lpProcessAttributes: ?*SECURITY_ATTRIBUTES,
    lpThreadAttributes: ?*SECURITY_ATTRIBUTES,
    bInheritHandles: BOOL,
    dwCreationFlags: DWORD,
    lpEnvironment: ?LPVOID,
    lpCurrentDirectory: ?LPCWSTR,
    lpStartupInfo: *STARTUPINFOW,
    lpProcessInformation: *PROCESS_INFORMATION,
) callconv(.winapi) BOOL

FunctionExitProcess[src]

pub extern "kernel32" fn ExitProcess( exit_code: UINT, ) callconv(.winapi) noreturn

Parameters

exit_code: UINT

Source Code

Source code
pub extern "kernel32" fn ExitProcess(
    exit_code: UINT,
) callconv(.winapi) noreturn

FunctionSleep[src]

pub extern "kernel32" fn Sleep( dwMilliseconds: DWORD, ) callconv(.winapi) void

Parameters

dwMilliseconds: DWORD

Source Code

Source code
pub extern "kernel32" fn Sleep(
    dwMilliseconds: DWORD,
) callconv(.winapi) void

FunctionGetExitCodeProcess[src]

pub extern "kernel32" fn GetExitCodeProcess( hProcess: HANDLE, lpExitCode: *DWORD, ) callconv(.winapi) BOOL

Parameters

hProcess: HANDLE
lpExitCode: *DWORD

Source Code

Source code
pub extern "kernel32" fn GetExitCodeProcess(
    hProcess: HANDLE,
    lpExitCode: *DWORD,
) callconv(.winapi) BOOL

FunctionGetCurrentProcess[src]

pub extern "kernel32" fn GetCurrentProcess() callconv(.winapi) HANDLE

Source Code

Source code
pub extern "kernel32" fn GetCurrentProcess() callconv(.winapi) HANDLE

FunctionGetEnvironmentStringsW[src]

pub extern "kernel32" fn GetEnvironmentStringsW() callconv(.winapi) ?LPWSTR

Source Code

Source code
pub extern "kernel32" fn GetEnvironmentStringsW() callconv(.winapi) ?LPWSTR

FunctionFreeEnvironmentStringsW[src]

pub extern "kernel32" fn FreeEnvironmentStringsW( penv: LPWSTR, ) callconv(.winapi) BOOL

Parameters

penv: LPWSTR

Source Code

Source code
pub extern "kernel32" fn FreeEnvironmentStringsW(
    penv: LPWSTR,
) callconv(.winapi) BOOL

FunctionGetEnvironmentVariableW[src]

pub extern "kernel32" fn GetEnvironmentVariableW( lpName: ?LPCWSTR, lpBuffer: ?[*]WCHAR, nSize: DWORD, ) callconv(.winapi) DWORD

Parameters

lpName: ?LPCWSTR
lpBuffer: ?[*]WCHAR
nSize: DWORD

Source Code

Source code
pub extern "kernel32" fn GetEnvironmentVariableW(
    lpName: ?LPCWSTR,
    lpBuffer: ?[*]WCHAR,
    nSize: DWORD,
) callconv(.winapi) DWORD

FunctionSetEnvironmentVariableW[src]

pub extern "kernel32" fn SetEnvironmentVariableW( lpName: LPCWSTR, lpValue: ?LPCWSTR, ) callconv(.winapi) BOOL

Parameters

lpName: LPCWSTR
lpValue: ?LPCWSTR

Source Code

Source code
pub extern "kernel32" fn SetEnvironmentVariableW(
    lpName: LPCWSTR,
    lpValue: ?LPCWSTR,
) callconv(.winapi) BOOL

FunctionCreateToolhelp32Snapshot[src]

pub extern "kernel32" fn CreateToolhelp32Snapshot( dwFlags: DWORD, th32ProcessID: DWORD, ) callconv(.winapi) HANDLE

Parameters

dwFlags: DWORD
th32ProcessID: DWORD

Source Code

Source code
pub extern "kernel32" fn CreateToolhelp32Snapshot(
    dwFlags: DWORD,
    th32ProcessID: DWORD,
) callconv(.winapi) HANDLE

FunctionGetCurrentThreadId[src]

pub extern "kernel32" fn GetCurrentThreadId() callconv(.winapi) DWORD

Source Code

Source code
pub extern "kernel32" fn GetCurrentThreadId() callconv(.winapi) DWORD

FunctionCreateThread[src]

pub extern "kernel32" fn CreateThread( lpThreadAttributes: ?*SECURITY_ATTRIBUTES, dwStackSize: SIZE_T, lpStartAddress: LPTHREAD_START_ROUTINE, lpParameter: ?LPVOID, dwCreationFlags: DWORD, lpThreadId: ?*DWORD, ) callconv(.winapi) ?HANDLE

Parameters

lpThreadAttributes: ?*SECURITY_ATTRIBUTES
dwStackSize: SIZE_T
lpStartAddress: LPTHREAD_START_ROUTINE
lpParameter: ?LPVOID
dwCreationFlags: DWORD
lpThreadId: ?*DWORD

Source Code

Source code
pub extern "kernel32" fn CreateThread(
    lpThreadAttributes: ?*SECURITY_ATTRIBUTES,
    dwStackSize: SIZE_T,
    lpStartAddress: LPTHREAD_START_ROUTINE,
    lpParameter: ?LPVOID,
    dwCreationFlags: DWORD,
    lpThreadId: ?*DWORD,
) callconv(.winapi) ?HANDLE

FunctionSwitchToThread[src]

pub extern "kernel32" fn SwitchToThread() callconv(.winapi) BOOL

Source Code

Source code
pub extern "kernel32" fn SwitchToThread() callconv(.winapi) BOOL

FunctionInitializeCriticalSection[src]

pub extern "kernel32" fn InitializeCriticalSection( lpCriticalSection: *CRITICAL_SECTION, ) callconv(.winapi) void

Parameters

lpCriticalSection: *CRITICAL_SECTION

Source Code

Source code
pub extern "kernel32" fn InitializeCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void

FunctionEnterCriticalSection[src]

pub extern "kernel32" fn EnterCriticalSection( lpCriticalSection: *CRITICAL_SECTION, ) callconv(.winapi) void

Parameters

lpCriticalSection: *CRITICAL_SECTION

Source Code

Source code
pub extern "kernel32" fn EnterCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void

FunctionLeaveCriticalSection[src]

pub extern "kernel32" fn LeaveCriticalSection( lpCriticalSection: *CRITICAL_SECTION, ) callconv(.winapi) void

Parameters

lpCriticalSection: *CRITICAL_SECTION

Source Code

Source code
pub extern "kernel32" fn LeaveCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void

FunctionDeleteCriticalSection[src]

pub extern "kernel32" fn DeleteCriticalSection( lpCriticalSection: *CRITICAL_SECTION, ) callconv(.winapi) void

Parameters

lpCriticalSection: *CRITICAL_SECTION

Source Code

Source code
pub extern "kernel32" fn DeleteCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void

FunctionTryAcquireSRWLockExclusive[src]

pub extern "kernel32" fn TryAcquireSRWLockExclusive( SRWLock: *SRWLOCK, ) callconv(.winapi) BOOLEAN

Parameters

SRWLock: *SRWLOCK

Source Code

Source code
pub extern "kernel32" fn TryAcquireSRWLockExclusive(
    SRWLock: *SRWLOCK,
) callconv(.winapi) BOOLEAN

FunctionAcquireSRWLockExclusive[src]

pub extern "kernel32" fn AcquireSRWLockExclusive( SRWLock: *SRWLOCK, ) callconv(.winapi) void

Parameters

SRWLock: *SRWLOCK

Source Code

Source code
pub extern "kernel32" fn AcquireSRWLockExclusive(
    SRWLock: *SRWLOCK,
) callconv(.winapi) void

FunctionReleaseSRWLockExclusive[src]

pub extern "kernel32" fn ReleaseSRWLockExclusive( SRWLock: *SRWLOCK, ) callconv(.winapi) void

Parameters

SRWLock: *SRWLOCK

Source Code

Source code
pub extern "kernel32" fn ReleaseSRWLockExclusive(
    SRWLock: *SRWLOCK,
) callconv(.winapi) void

FunctionInitOnceExecuteOnce[src]

pub extern "kernel32" fn InitOnceExecuteOnce( InitOnce: *INIT_ONCE, InitFn: INIT_ONCE_FN, Parameter: ?*anyopaque, Context: ?*anyopaque, ) callconv(.winapi) BOOL

Parameters

InitOnce: *INIT_ONCE
InitFn: INIT_ONCE_FN
Parameter: ?*anyopaque
Context: ?*anyopaque

Source Code

Source code
pub extern "kernel32" fn InitOnceExecuteOnce(
    InitOnce: *INIT_ONCE,
    InitFn: INIT_ONCE_FN,
    Parameter: ?*anyopaque,
    Context: ?*anyopaque,
) callconv(.winapi) BOOL

FunctionWakeConditionVariable[src]

pub extern "kernel32" fn WakeConditionVariable( ConditionVariable: *CONDITION_VARIABLE, ) callconv(.winapi) void

Parameters

ConditionVariable: *CONDITION_VARIABLE

Source Code

Source code
pub extern "kernel32" fn WakeConditionVariable(
    ConditionVariable: *CONDITION_VARIABLE,
) callconv(.winapi) void

FunctionWakeAllConditionVariable[src]

pub extern "kernel32" fn WakeAllConditionVariable( ConditionVariable: *CONDITION_VARIABLE, ) callconv(.winapi) void

Parameters

ConditionVariable: *CONDITION_VARIABLE

Source Code

Source code
pub extern "kernel32" fn WakeAllConditionVariable(
    ConditionVariable: *CONDITION_VARIABLE,
) callconv(.winapi) void

FunctionSleepConditionVariableSRW[src]

pub extern "kernel32" fn SleepConditionVariableSRW( ConditionVariable: *CONDITION_VARIABLE, SRWLock: *SRWLOCK, dwMilliseconds: DWORD, Flags: ULONG, ) callconv(.winapi) BOOL

Parameters

ConditionVariable: *CONDITION_VARIABLE
SRWLock: *SRWLOCK
dwMilliseconds: DWORD
Flags: ULONG

Source Code

Source code
pub extern "kernel32" fn SleepConditionVariableSRW(
    ConditionVariable: *CONDITION_VARIABLE,
    SRWLock: *SRWLOCK,
    dwMilliseconds: DWORD,
    Flags: ULONG,
) callconv(.winapi) BOOL

FunctionGetConsoleMode[src]

pub extern "kernel32" fn GetConsoleMode( hConsoleHandle: HANDLE, lpMode: *DWORD, ) callconv(.winapi) BOOL

Parameters

hConsoleHandle: HANDLE
lpMode: *DWORD

Source Code

Source code
pub extern "kernel32" fn GetConsoleMode(
    hConsoleHandle: HANDLE,
    lpMode: *DWORD,
) callconv(.winapi) BOOL

FunctionSetConsoleMode[src]

pub extern "kernel32" fn SetConsoleMode( hConsoleHandle: HANDLE, dwMode: DWORD, ) callconv(.winapi) BOOL

Parameters

hConsoleHandle: HANDLE
dwMode: DWORD

Source Code

Source code
pub extern "kernel32" fn SetConsoleMode(
    hConsoleHandle: HANDLE,
    dwMode: DWORD,
) callconv(.winapi) BOOL

FunctionGetConsoleScreenBufferInfo[src]

pub extern "kernel32" fn GetConsoleScreenBufferInfo( hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: *CONSOLE_SCREEN_BUFFER_INFO, ) callconv(.winapi) BOOL

Parameters

hConsoleOutput: HANDLE
lpConsoleScreenBufferInfo: *CONSOLE_SCREEN_BUFFER_INFO

Source Code

Source code
pub extern "kernel32" fn GetConsoleScreenBufferInfo(
    hConsoleOutput: HANDLE,
    lpConsoleScreenBufferInfo: *CONSOLE_SCREEN_BUFFER_INFO,
) callconv(.winapi) BOOL

FunctionSetConsoleTextAttribute[src]

pub extern "kernel32" fn SetConsoleTextAttribute( hConsoleOutput: HANDLE, wAttributes: WORD, ) callconv(.winapi) BOOL

Parameters

hConsoleOutput: HANDLE
wAttributes: WORD

Source Code

Source code
pub extern "kernel32" fn SetConsoleTextAttribute(
    hConsoleOutput: HANDLE,
    wAttributes: WORD,
) callconv(.winapi) BOOL

FunctionSetConsoleCtrlHandler[src]

pub extern "kernel32" fn SetConsoleCtrlHandler( HandlerRoutine: ?HANDLER_ROUTINE, Add: BOOL, ) callconv(.winapi) BOOL

Parameters

HandlerRoutine: ?HANDLER_ROUTINE
Add: BOOL

Source Code

Source code
pub extern "kernel32" fn SetConsoleCtrlHandler(
    HandlerRoutine: ?HANDLER_ROUTINE,
    Add: BOOL,
) callconv(.winapi) BOOL

FunctionSetConsoleOutputCP[src]

pub extern "kernel32" fn SetConsoleOutputCP( wCodePageID: UINT, ) callconv(.winapi) BOOL

Parameters

wCodePageID: UINT

Source Code

Source code
pub extern "kernel32" fn SetConsoleOutputCP(
    wCodePageID: UINT,
) callconv(.winapi) BOOL

FunctionGetConsoleOutputCP[src]

pub extern "kernel32" fn GetConsoleOutputCP() callconv(.winapi) UINT

Source Code

Source code
pub extern "kernel32" fn GetConsoleOutputCP() callconv(.winapi) UINT

FunctionFillConsoleOutputAttribute[src]

pub extern "kernel32" fn FillConsoleOutputAttribute( hConsoleOutput: HANDLE, wAttribute: WORD, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfAttrsWritten: *DWORD, ) callconv(.winapi) BOOL

Parameters

hConsoleOutput: HANDLE
wAttribute: WORD
nLength: DWORD
dwWriteCoord: COORD
lpNumberOfAttrsWritten: *DWORD

Source Code

Source code
pub extern "kernel32" fn FillConsoleOutputAttribute(
    hConsoleOutput: HANDLE,
    wAttribute: WORD,
    nLength: DWORD,
    dwWriteCoord: COORD,
    lpNumberOfAttrsWritten: *DWORD,
) callconv(.winapi) BOOL

FunctionFillConsoleOutputCharacterW[src]

pub extern "kernel32" fn FillConsoleOutputCharacterW( hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: *DWORD, ) callconv(.winapi) BOOL

Parameters

hConsoleOutput: HANDLE
cCharacter: WCHAR
nLength: DWORD
dwWriteCoord: COORD
lpNumberOfCharsWritten: *DWORD

Source Code

Source code
pub extern "kernel32" fn FillConsoleOutputCharacterW(
    hConsoleOutput: HANDLE,
    cCharacter: WCHAR,
    nLength: DWORD,
    dwWriteCoord: COORD,
    lpNumberOfCharsWritten: *DWORD,
) callconv(.winapi) BOOL

FunctionSetConsoleCursorPosition[src]

pub extern "kernel32" fn SetConsoleCursorPosition( hConsoleOutput: HANDLE, dwCursorPosition: COORD, ) callconv(.winapi) BOOL

Parameters

hConsoleOutput: HANDLE
dwCursorPosition: COORD

Source Code

Source code
pub extern "kernel32" fn SetConsoleCursorPosition(
    hConsoleOutput: HANDLE,
    dwCursorPosition: COORD,
) callconv(.winapi) BOOL

FunctionWriteConsoleW[src]

pub extern "kernel32" fn WriteConsoleW( hConsoleOutput: HANDLE, lpBuffer: [*]const u16, nNumberOfCharsToWrite: DWORD, lpNumberOfCharsWritten: ?*DWORD, lpReserved: ?LPVOID, ) callconv(.winapi) BOOL

Parameters

hConsoleOutput: HANDLE
lpBuffer: [*]const u16
nNumberOfCharsToWrite: DWORD
lpNumberOfCharsWritten: ?*DWORD
lpReserved: ?LPVOID

Source Code

Source code
pub extern "kernel32" fn WriteConsoleW(
    hConsoleOutput: HANDLE,
    lpBuffer: [*]const u16,
    nNumberOfCharsToWrite: DWORD,
    lpNumberOfCharsWritten: ?*DWORD,
    lpReserved: ?LPVOID,
) callconv(.winapi) BOOL

FunctionReadConsoleOutputCharacterW[src]

pub extern "kernel32" fn ReadConsoleOutputCharacterW( hConsoleOutput: HANDLE, lpCharacter: [*]u16, nLength: DWORD, dwReadCoord: COORD, lpNumberOfCharsRead: *DWORD, ) callconv(.winapi) BOOL

Parameters

hConsoleOutput: HANDLE
lpCharacter: [*]u16
nLength: DWORD
dwReadCoord: COORD
lpNumberOfCharsRead: *DWORD

Source Code

Source code
pub extern "kernel32" fn ReadConsoleOutputCharacterW(
    hConsoleOutput: HANDLE,
    lpCharacter: [*]u16,
    nLength: DWORD,
    dwReadCoord: COORD,
    lpNumberOfCharsRead: *DWORD,
) callconv(.winapi) BOOL

FunctionHeapCreate[src]

pub extern "kernel32" fn HeapCreate( flOptions: DWORD, dwInitialSize: SIZE_T, dwMaximumSize: SIZE_T, ) callconv(.winapi) ?HANDLE

Parameters

flOptions: DWORD
dwInitialSize: SIZE_T
dwMaximumSize: SIZE_T

Source Code

Source code
pub extern "kernel32" fn HeapCreate(
    flOptions: DWORD,
    dwInitialSize: SIZE_T,
    dwMaximumSize: SIZE_T,
) callconv(.winapi) ?HANDLE

FunctionHeapReAlloc[src]

pub extern "kernel32" fn HeapReAlloc( hHeap: HANDLE, dwFlags: DWORD, lpMem: *anyopaque, dwBytes: SIZE_T, ) callconv(.winapi) ?*anyopaque

Parameters

hHeap: HANDLE
dwFlags: DWORD
lpMem: *anyopaque
dwBytes: SIZE_T

Source Code

Source code
pub extern "kernel32" fn HeapReAlloc(
    hHeap: HANDLE,
    dwFlags: DWORD,
    lpMem: *anyopaque,
    dwBytes: SIZE_T,
) callconv(.winapi) ?*anyopaque

FunctionHeapAlloc[src]

pub extern "kernel32" fn HeapAlloc( hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T, ) callconv(.winapi) ?*anyopaque

Parameters

hHeap: HANDLE
dwFlags: DWORD
dwBytes: SIZE_T

Source Code

Source code
pub extern "kernel32" fn HeapAlloc(
    hHeap: HANDLE,
    dwFlags: DWORD,
    dwBytes: SIZE_T,
) callconv(.winapi) ?*anyopaque

FunctionHeapFree[src]

pub extern "kernel32" fn HeapFree( hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, ) callconv(.winapi) BOOL

Parameters

hHeap: HANDLE
dwFlags: DWORD
lpMem: LPVOID

Source Code

Source code
pub extern "kernel32" fn HeapFree(
    hHeap: HANDLE,
    dwFlags: DWORD,
    lpMem: LPVOID,
) callconv(.winapi) BOOL

FunctionHeapValidate[src]

pub extern "kernel32" fn HeapValidate( hHeap: HANDLE, dwFlags: DWORD, lpMem: ?*const anyopaque, ) callconv(.winapi) BOOL

Parameters

hHeap: HANDLE
dwFlags: DWORD
lpMem: ?*const anyopaque

Source Code

Source code
pub extern "kernel32" fn HeapValidate(
    hHeap: HANDLE,
    dwFlags: DWORD,
    lpMem: ?*const anyopaque,
) callconv(.winapi) BOOL

FunctionVirtualAlloc[src]

pub extern "kernel32" fn VirtualAlloc( lpAddress: ?LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD, ) callconv(.winapi) ?LPVOID

Parameters

lpAddress: ?LPVOID
dwSize: SIZE_T
flAllocationType: DWORD
flProtect: DWORD

Source Code

Source code
pub extern "kernel32" fn VirtualAlloc(
    lpAddress: ?LPVOID,
    dwSize: SIZE_T,
    flAllocationType: DWORD,
    flProtect: DWORD,
) callconv(.winapi) ?LPVOID

FunctionVirtualFree[src]

pub extern "kernel32" fn VirtualFree( lpAddress: ?LPVOID, dwSize: SIZE_T, dwFreeType: DWORD, ) callconv(.winapi) BOOL

Parameters

lpAddress: ?LPVOID
dwSize: SIZE_T
dwFreeType: DWORD

Source Code

Source code
pub extern "kernel32" fn VirtualFree(
    lpAddress: ?LPVOID,
    dwSize: SIZE_T,
    dwFreeType: DWORD,
) callconv(.winapi) BOOL

FunctionVirtualQuery[src]

pub extern "kernel32" fn VirtualQuery( lpAddress: ?LPVOID, lpBuffer: PMEMORY_BASIC_INFORMATION, dwLength: SIZE_T, ) callconv(.winapi) SIZE_T

Parameters

lpAddress: ?LPVOID
dwLength: SIZE_T

Source Code

Source code
pub extern "kernel32" fn VirtualQuery(
    lpAddress: ?LPVOID,
    lpBuffer: PMEMORY_BASIC_INFORMATION,
    dwLength: SIZE_T,
) callconv(.winapi) SIZE_T

FunctionGetProcessHeap[src]

pub extern "kernel32" fn GetProcessHeap() callconv(.winapi) ?HANDLE

Source Code

Source code
pub extern "kernel32" fn GetProcessHeap() callconv(.winapi) ?HANDLE

FunctionGetModuleFileNameW[src]

pub extern "kernel32" fn GetModuleFileNameW( hModule: ?HMODULE, lpFilename: [*]WCHAR, nSize: DWORD, ) callconv(.winapi) DWORD

Parameters

hModule: ?HMODULE
lpFilename: [*]WCHAR
nSize: DWORD

Source Code

Source code
pub extern "kernel32" fn GetModuleFileNameW(
    hModule: ?HMODULE,
    lpFilename: [*]WCHAR,
    nSize: DWORD,
) callconv(.winapi) DWORD

FunctionK32GetModuleFileNameExW[src]

extern "kernel32" fn K32GetModuleFileNameExW( hProcess: HANDLE, hModule: ?HMODULE, lpFilename: LPWSTR, nSize: DWORD, ) callconv(.winapi) DWORD

Parameters

hProcess: HANDLE
hModule: ?HMODULE
lpFilename: LPWSTR
nSize: DWORD

Source Code

Source code
extern "kernel32" fn K32GetModuleFileNameExW(
    hProcess: HANDLE,
    hModule: ?HMODULE,
    lpFilename: LPWSTR,
    nSize: DWORD,
) callconv(.winapi) DWORD

FunctionGetModuleHandleW[src]

pub extern "kernel32" fn GetModuleHandleW( lpModuleName: ?LPCWSTR, ) callconv(.winapi) ?HMODULE

Parameters

lpModuleName: ?LPCWSTR

Source Code

Source code
pub extern "kernel32" fn GetModuleHandleW(
    lpModuleName: ?LPCWSTR,
) callconv(.winapi) ?HMODULE

FunctionModule32First[src]

pub extern "kernel32" fn Module32First( hSnapshot: HANDLE, lpme: *MODULEENTRY32, ) callconv(.winapi) BOOL

Parameters

hSnapshot: HANDLE

Source Code

Source code
pub extern "kernel32" fn Module32First(
    hSnapshot: HANDLE,
    lpme: *MODULEENTRY32,
) callconv(.winapi) BOOL

FunctionModule32Next[src]

pub extern "kernel32" fn Module32Next( hSnapshot: HANDLE, lpme: *MODULEENTRY32, ) callconv(.winapi) BOOL

Parameters

hSnapshot: HANDLE

Source Code

Source code
pub extern "kernel32" fn Module32Next(
    hSnapshot: HANDLE,
    lpme: *MODULEENTRY32,
) callconv(.winapi) BOOL

FunctionLoadLibraryW[src]

pub extern "kernel32" fn LoadLibraryW( lpLibFileName: LPCWSTR, ) callconv(.winapi) ?HMODULE

Parameters

lpLibFileName: LPCWSTR

Source Code

Source code
pub extern "kernel32" fn LoadLibraryW(
    lpLibFileName: LPCWSTR,
) callconv(.winapi) ?HMODULE

FunctionLoadLibraryExW[src]

pub extern "kernel32" fn LoadLibraryExW( lpLibFileName: LPCWSTR, hFile: ?HANDLE, dwFlags: DWORD, ) callconv(.winapi) ?HMODULE

Parameters

lpLibFileName: LPCWSTR
hFile: ?HANDLE
dwFlags: DWORD

Source Code

Source code
pub extern "kernel32" fn LoadLibraryExW(
    lpLibFileName: LPCWSTR,
    hFile: ?HANDLE,
    dwFlags: DWORD,
) callconv(.winapi) ?HMODULE

FunctionGetProcAddress[src]

pub extern "kernel32" fn GetProcAddress( hModule: HMODULE, lpProcName: LPCSTR, ) callconv(.winapi) ?FARPROC

Parameters

hModule: HMODULE
lpProcName: LPCSTR

Source Code

Source code
pub extern "kernel32" fn GetProcAddress(
    hModule: HMODULE,
    lpProcName: LPCSTR,
) callconv(.winapi) ?FARPROC

FunctionFreeLibrary[src]

pub extern "kernel32" fn FreeLibrary( hModule: HMODULE, ) callconv(.winapi) BOOL

Parameters

hModule: HMODULE

Source Code

Source code
pub extern "kernel32" fn FreeLibrary(
    hModule: HMODULE,
) callconv(.winapi) BOOL

FunctionFormatMessageW[src]

pub extern "kernel32" fn FormatMessageW( dwFlags: DWORD, lpSource: ?LPCVOID, dwMessageId: Win32Error, dwLanguageId: DWORD, lpBuffer: LPWSTR, nSize: DWORD, Arguments: ?*va_list, ) callconv(.winapi) DWORD

Parameters

dwFlags: DWORD
lpSource: ?LPCVOID
dwMessageId: Win32Error
dwLanguageId: DWORD
lpBuffer: LPWSTR
nSize: DWORD
Arguments: ?*va_list

Source Code

Source code
pub extern "kernel32" fn FormatMessageW(
    dwFlags: DWORD,
    lpSource: ?LPCVOID,
    dwMessageId: Win32Error,
    dwLanguageId: DWORD,
    lpBuffer: LPWSTR,
    nSize: DWORD,
    Arguments: ?*va_list,
) callconv(.winapi) DWORD

FunctionGetLastError[src]

pub extern "kernel32" fn GetLastError() callconv(.winapi) Win32Error

Source Code

Source code
pub extern "kernel32" fn GetLastError() callconv(.winapi) Win32Error

FunctionSetLastError[src]

pub extern "kernel32" fn SetLastError( dwErrCode: Win32Error, ) callconv(.winapi) void

Parameters

dwErrCode: Win32Error

Source Code

Source code
pub extern "kernel32" fn SetLastError(
    dwErrCode: Win32Error,
) callconv(.winapi) void

FunctionGetSystemInfo[src]

pub extern "kernel32" fn GetSystemInfo(lpSystemInfo: *SYSTEM_INFO) callconv(.winapi) void

Parameters

lpSystemInfo: *SYSTEM_INFO

Source Code

Source code
pub extern "kernel32" fn GetSystemInfo(lpSystemInfo: *SYSTEM_INFO) callconv(.winapi) void

Source Code

Source code
const std = @import("../../std.zig");
const windows = std.os.windows;

const BOOL = windows.BOOL;
const BOOLEAN = windows.BOOLEAN;
const CONDITION_VARIABLE = windows.CONDITION_VARIABLE;
const CONSOLE_SCREEN_BUFFER_INFO = windows.CONSOLE_SCREEN_BUFFER_INFO;
const COORD = windows.COORD;
const CRITICAL_SECTION = windows.CRITICAL_SECTION;
const DWORD = windows.DWORD;
const FARPROC = windows.FARPROC;
const FILETIME = windows.FILETIME;
const HANDLE = windows.HANDLE;
const HANDLER_ROUTINE = windows.HANDLER_ROUTINE;
const HLOCAL = windows.HLOCAL;
const HMODULE = windows.HMODULE;
const INIT_ONCE = windows.INIT_ONCE;
const INIT_ONCE_FN = windows.INIT_ONCE_FN;
const LARGE_INTEGER = windows.LARGE_INTEGER;
const LPCSTR = windows.LPCSTR;
const LPCVOID = windows.LPCVOID;
const LPCWSTR = windows.LPCWSTR;
const LPTHREAD_START_ROUTINE = windows.LPTHREAD_START_ROUTINE;
const LPVOID = windows.LPVOID;
const LPWSTR = windows.LPWSTR;
const MODULEENTRY32 = windows.MODULEENTRY32;
const OVERLAPPED = windows.OVERLAPPED;
const OVERLAPPED_ENTRY = windows.OVERLAPPED_ENTRY;
const PMEMORY_BASIC_INFORMATION = windows.PMEMORY_BASIC_INFORMATION;
const PROCESS_INFORMATION = windows.PROCESS_INFORMATION;
const SECURITY_ATTRIBUTES = windows.SECURITY_ATTRIBUTES;
const SIZE_T = windows.SIZE_T;
const SRWLOCK = windows.SRWLOCK;
const STARTUPINFOW = windows.STARTUPINFOW;
const UCHAR = windows.UCHAR;
const UINT = windows.UINT;
const ULONG = windows.ULONG;
const ULONG_PTR = windows.ULONG_PTR;
const va_list = windows.va_list;
const VECTORED_EXCEPTION_HANDLER = windows.VECTORED_EXCEPTION_HANDLER;
const WCHAR = windows.WCHAR;
const WIN32_FIND_DATAW = windows.WIN32_FIND_DATAW;
const Win32Error = windows.Win32Error;
const WORD = windows.WORD;
const SYSTEM_INFO = windows.SYSTEM_INFO;

// I/O - Filesystem

pub extern "kernel32" fn ReadDirectoryChangesW(
    hDirectory: windows.HANDLE,
    lpBuffer: [*]align(@alignOf(windows.FILE_NOTIFY_INFORMATION)) u8,
    nBufferLength: windows.DWORD,
    bWatchSubtree: windows.BOOL,
    dwNotifyFilter: windows.FileNotifyChangeFilter,
    lpBytesReturned: ?*windows.DWORD,
    lpOverlapped: ?*windows.OVERLAPPED,
    lpCompletionRoutine: windows.LPOVERLAPPED_COMPLETION_ROUTINE,
) callconv(.winapi) windows.BOOL;

// TODO: Wrapper around NtCancelIoFile.
pub extern "kernel32" fn CancelIo(
    hFile: HANDLE,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtCancelIoFileEx.
pub extern "kernel32" fn CancelIoEx(
    hFile: HANDLE,
    lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn CreateFileW(
    lpFileName: LPCWSTR,
    dwDesiredAccess: DWORD,
    dwShareMode: DWORD,
    lpSecurityAttributes: ?*SECURITY_ATTRIBUTES,
    dwCreationDisposition: DWORD,
    dwFlagsAndAttributes: DWORD,
    hTemplateFile: ?HANDLE,
) callconv(.winapi) HANDLE;

// TODO A bunch of logic around NtCreateNamedPipe
pub extern "kernel32" fn CreateNamedPipeW(
    lpName: LPCWSTR,
    dwOpenMode: DWORD,
    dwPipeMode: DWORD,
    nMaxInstances: DWORD,
    nOutBufferSize: DWORD,
    nInBufferSize: DWORD,
    nDefaultTimeOut: DWORD,
    lpSecurityAttributes: ?*const SECURITY_ATTRIBUTES,
) callconv(.winapi) HANDLE;

pub extern "kernel32" fn FindFirstFileW(
    lpFileName: LPCWSTR,
    lpFindFileData: *WIN32_FIND_DATAW,
) callconv(.winapi) HANDLE;

pub extern "kernel32" fn FindClose(
    hFindFile: HANDLE,
) callconv(.winapi) BOOL;

// TODO: Wrapper around RtlGetFullPathName_UEx
pub extern "kernel32" fn GetFullPathNameW(
    lpFileName: LPCWSTR,
    nBufferLength: DWORD,
    lpBuffer: LPWSTR,
    lpFilePart: ?*?LPWSTR,
) callconv(.winapi) DWORD;

// TODO: Matches `STD_*_HANDLE` to peb().ProcessParameters.Standard*
pub extern "kernel32" fn GetStdHandle(
    nStdHandle: DWORD,
) callconv(.winapi) ?HANDLE;

pub extern "kernel32" fn MoveFileExW(
    lpExistingFileName: LPCWSTR,
    lpNewFileName: LPCWSTR,
    dwFlags: DWORD,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtSetInformationFile + `FILE_POSITION_INFORMATION`.
//  `FILE_STANDARD_INFORMATION` is also used if dwMoveMethod is `FILE_END`
pub extern "kernel32" fn SetFilePointerEx(
    hFile: HANDLE,
    liDistanceToMove: LARGE_INTEGER,
    lpNewFilePointer: ?*LARGE_INTEGER,
    dwMoveMethod: DWORD,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtSetInformationFile + `FILE_BASIC_INFORMATION`
pub extern "kernel32" fn SetFileTime(
    hFile: HANDLE,
    lpCreationTime: ?*const FILETIME,
    lpLastAccessTime: ?*const FILETIME,
    lpLastWriteTime: ?*const FILETIME,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn WriteFile(
    in_hFile: HANDLE,
    in_lpBuffer: [*]const u8,
    in_nNumberOfBytesToWrite: DWORD,
    out_lpNumberOfBytesWritten: ?*DWORD,
    in_out_lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL;

// TODO: wrapper for NtQueryInformationFile + `FILE_STANDARD_INFORMATION`
pub extern "kernel32" fn GetFileSizeEx(
    hFile: HANDLE,
    lpFileSize: *LARGE_INTEGER,
) callconv(.winapi) BOOL;

// TODO: Wrapper around GetStdHandle + NtFlushBuffersFile.
pub extern "kernel32" fn FlushFileBuffers(
    hFile: HANDLE,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtSetInformationFile + `FILE_IO_COMPLETION_NOTIFICATION_INFORMATION`.
pub extern "kernel32" fn SetFileCompletionNotificationModes(
    FileHandle: HANDLE,
    Flags: UCHAR,
) callconv(.winapi) BOOL;

// TODO: `RtlGetCurrentDirectory_U(nBufferLength * 2, lpBuffer)`
pub extern "kernel32" fn GetCurrentDirectoryW(
    nBufferLength: DWORD,
    lpBuffer: ?[*]WCHAR,
) callconv(.winapi) DWORD;

// TODO: RtlDosPathNameToNtPathNameU_WithStatus + NtQueryAttributesFile.
pub extern "kernel32" fn GetFileAttributesW(
    lpFileName: LPCWSTR,
) callconv(.winapi) DWORD;

pub extern "kernel32" fn ReadFile(
    hFile: HANDLE,
    lpBuffer: LPVOID,
    nNumberOfBytesToRead: DWORD,
    lpNumberOfBytesRead: ?*DWORD,
    lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn GetSystemDirectoryW(
    lpBuffer: LPWSTR,
    uSize: UINT,
) callconv(.winapi) UINT;

// I/O - Kernel Objects

// TODO: Wrapper around NtCreateEvent.
pub extern "kernel32" fn CreateEventExW(
    lpEventAttributes: ?*SECURITY_ATTRIBUTES,
    lpName: ?LPCWSTR,
    dwFlags: DWORD,
    dwDesiredAccess: DWORD,
) callconv(.winapi) ?HANDLE;

// TODO: Wrapper around GetStdHandle + NtDuplicateObject.
pub extern "kernel32" fn DuplicateHandle(
    hSourceProcessHandle: HANDLE,
    hSourceHandle: HANDLE,
    hTargetProcessHandle: HANDLE,
    lpTargetHandle: *HANDLE,
    dwDesiredAccess: DWORD,
    bInheritHandle: BOOL,
    dwOptions: DWORD,
) callconv(.winapi) BOOL;

// TODO: Wrapper around GetStdHandle + NtQueryObject + NtSetInformationObject with .ObjectHandleFlagInformation.
pub extern "kernel32" fn SetHandleInformation(
    hObject: HANDLE,
    dwMask: DWORD,
    dwFlags: DWORD,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtRemoveIoCompletion.
pub extern "kernel32" fn GetQueuedCompletionStatus(
    CompletionPort: HANDLE,
    lpNumberOfBytesTransferred: *DWORD,
    lpCompletionKey: *ULONG_PTR,
    lpOverlapped: *?*OVERLAPPED,
    dwMilliseconds: DWORD,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtRemoveIoCompletionEx.
pub extern "kernel32" fn GetQueuedCompletionStatusEx(
    CompletionPort: HANDLE,
    lpCompletionPortEntries: [*]OVERLAPPED_ENTRY,
    ulCount: ULONG,
    ulNumEntriesRemoved: *ULONG,
    dwMilliseconds: DWORD,
    fAlertable: BOOL,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtSetIoCompletion with `IoStatus = .SUCCESS`.
pub extern "kernel32" fn PostQueuedCompletionStatus(
    CompletionPort: HANDLE,
    dwNumberOfBytesTransferred: DWORD,
    dwCompletionKey: ULONG_PTR,
    lpOverlapped: ?*OVERLAPPED,
) callconv(.winapi) BOOL;

// TODO:
// GetOverlappedResultEx with bAlertable=false, which calls: GetStdHandle + WaitForSingleObjectEx.
// Uses the SwitchBack system to run implementations for older programs; Do we care about this?
pub extern "kernel32" fn GetOverlappedResult(
    hFile: HANDLE,
    lpOverlapped: *OVERLAPPED,
    lpNumberOfBytesTransferred: *DWORD,
    bWait: BOOL,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtCreateIoCompletion + NtSetInformationFile with FILE_COMPLETION_INFORMATION.
// This would be better splitting into two functions.
pub extern "kernel32" fn CreateIoCompletionPort(
    FileHandle: HANDLE,
    ExistingCompletionPort: ?HANDLE,
    CompletionKey: ULONG_PTR,
    NumberOfConcurrentThreads: DWORD,
) callconv(.winapi) ?HANDLE;

// TODO: Forwarder to NtAddVectoredExceptionHandler.
pub extern "kernel32" fn AddVectoredExceptionHandler(
    First: ULONG,
    Handler: ?VECTORED_EXCEPTION_HANDLER,
) callconv(.winapi) ?LPVOID;

// TODO: Forwarder to NtRemoveVectoredExceptionHandler.
pub extern "kernel32" fn RemoveVectoredExceptionHandler(
    Handle: HANDLE,
) callconv(.winapi) ULONG;

// TODO: Wrapper around RtlReportSilentProcessExit + NtTerminateProcess.
pub extern "kernel32" fn TerminateProcess(
    hProcess: HANDLE,
    uExitCode: UINT,
) callconv(.winapi) BOOL;

// TODO: WaitForSingleObjectEx with bAlertable=false.
pub extern "kernel32" fn WaitForSingleObject(
    hHandle: HANDLE,
    dwMilliseconds: DWORD,
) callconv(.winapi) DWORD;

// TODO: Wrapper for GetStdHandle + NtWaitForSingleObject.
// Sets up an activation context before calling NtWaitForSingleObject.
pub extern "kernel32" fn WaitForSingleObjectEx(
    hHandle: HANDLE,
    dwMilliseconds: DWORD,
    bAlertable: BOOL,
) callconv(.winapi) DWORD;

// TODO: WaitForMultipleObjectsEx with alertable=false
pub extern "kernel32" fn WaitForMultipleObjects(
    nCount: DWORD,
    lpHandle: [*]const HANDLE,
    bWaitAll: BOOL,
    dwMilliseconds: DWORD,
) callconv(.winapi) DWORD;

// TODO: Wrapper around NtWaitForMultipleObjects.
pub extern "kernel32" fn WaitForMultipleObjectsEx(
    nCount: DWORD,
    lpHandle: [*]const HANDLE,
    bWaitAll: BOOL,
    dwMilliseconds: DWORD,
    bAlertable: BOOL,
) callconv(.winapi) DWORD;

// Process Management

pub extern "kernel32" fn CreateProcessW(
    lpApplicationName: ?LPCWSTR,
    lpCommandLine: ?LPWSTR,
    lpProcessAttributes: ?*SECURITY_ATTRIBUTES,
    lpThreadAttributes: ?*SECURITY_ATTRIBUTES,
    bInheritHandles: BOOL,
    dwCreationFlags: DWORD,
    lpEnvironment: ?LPVOID,
    lpCurrentDirectory: ?LPCWSTR,
    lpStartupInfo: *STARTUPINFOW,
    lpProcessInformation: *PROCESS_INFORMATION,
) callconv(.winapi) BOOL;

// TODO: Fowarder to RtlExitUserProcess.
pub extern "kernel32" fn ExitProcess(
    exit_code: UINT,
) callconv(.winapi) noreturn;

// TODO: SleepEx with bAlertable=false.
pub extern "kernel32" fn Sleep(
    dwMilliseconds: DWORD,
) callconv(.winapi) void;

// TODO: Wrapper around NtQueryInformationProcess with `PROCESS_BASIC_INFORMATION`.
pub extern "kernel32" fn GetExitCodeProcess(
    hProcess: HANDLE,
    lpExitCode: *DWORD,
) callconv(.winapi) BOOL;

// TODO: Already a wrapper for this, see `windows.GetCurrentProcess`.
pub extern "kernel32" fn GetCurrentProcess() callconv(.winapi) HANDLE;

// TODO: memcpy peb().ProcessParameters.Environment, mem.span(0). Requires locking the PEB.
pub extern "kernel32" fn GetEnvironmentStringsW() callconv(.winapi) ?LPWSTR;

// TODO: RtlFreeHeap on the output of GetEnvironmentStringsW.
pub extern "kernel32" fn FreeEnvironmentStringsW(
    penv: LPWSTR,
) callconv(.winapi) BOOL;

// TODO: Wrapper around RtlQueryEnvironmentVariable.
pub extern "kernel32" fn GetEnvironmentVariableW(
    lpName: ?LPCWSTR,
    lpBuffer: ?[*]WCHAR,
    nSize: DWORD,
) callconv(.winapi) DWORD;

// TODO: Wrapper around RtlSetEnvironmentVar.
pub extern "kernel32" fn SetEnvironmentVariableW(
    lpName: LPCWSTR,
    lpValue: ?LPCWSTR,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn CreateToolhelp32Snapshot(
    dwFlags: DWORD,
    th32ProcessID: DWORD,
) callconv(.winapi) HANDLE;

// Threading

// TODO: Already a wrapper for this, see `windows.GetCurrentThreadId`.
pub extern "kernel32" fn GetCurrentThreadId() callconv(.winapi) DWORD;

// TODO: CreateRemoteThread with hProcess=NtCurrentProcess().
pub extern "kernel32" fn CreateThread(
    lpThreadAttributes: ?*SECURITY_ATTRIBUTES,
    dwStackSize: SIZE_T,
    lpStartAddress: LPTHREAD_START_ROUTINE,
    lpParameter: ?LPVOID,
    dwCreationFlags: DWORD,
    lpThreadId: ?*DWORD,
) callconv(.winapi) ?HANDLE;

// TODO: Wrapper around RtlDelayExecution.
pub extern "kernel32" fn SwitchToThread() callconv(.winapi) BOOL;

// Locks, critical sections, initializers

// TODO: Forwarder to RtlInitializeCriticalSection
pub extern "kernel32" fn InitializeCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void;

// TODO: Forwarder to RtlEnterCriticalSection
pub extern "kernel32" fn EnterCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void;

// TODO: Forwarder to RtlLeaveCriticalSection
pub extern "kernel32" fn LeaveCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void;

// TODO: Forwarder to RtlDeleteCriticalSection
pub extern "kernel32" fn DeleteCriticalSection(
    lpCriticalSection: *CRITICAL_SECTION,
) callconv(.winapi) void;

// TODO: Forwarder to RtlTryAcquireSRWLockExclusive
pub extern "kernel32" fn TryAcquireSRWLockExclusive(
    SRWLock: *SRWLOCK,
) callconv(.winapi) BOOLEAN;

// TODO: Forwarder to RtlAcquireSRWLockExclusive
pub extern "kernel32" fn AcquireSRWLockExclusive(
    SRWLock: *SRWLOCK,
) callconv(.winapi) void;

// TODO: Forwarder to RtlReleaseSRWLockExclusive
pub extern "kernel32" fn ReleaseSRWLockExclusive(
    SRWLock: *SRWLOCK,
) callconv(.winapi) void;

pub extern "kernel32" fn InitOnceExecuteOnce(
    InitOnce: *INIT_ONCE,
    InitFn: INIT_ONCE_FN,
    Parameter: ?*anyopaque,
    Context: ?*anyopaque,
) callconv(.winapi) BOOL;

// TODO: Forwarder to RtlWakeConditionVariable
pub extern "kernel32" fn WakeConditionVariable(
    ConditionVariable: *CONDITION_VARIABLE,
) callconv(.winapi) void;

// TODO: Forwarder to RtlWakeAllConditionVariable
pub extern "kernel32" fn WakeAllConditionVariable(
    ConditionVariable: *CONDITION_VARIABLE,
) callconv(.winapi) void;

// TODO:
//  - dwMilliseconds -> LARGE_INTEGER.
//  - RtlSleepConditionVariableSRW
//  - return rc != .TIMEOUT
pub extern "kernel32" fn SleepConditionVariableSRW(
    ConditionVariable: *CONDITION_VARIABLE,
    SRWLock: *SRWLOCK,
    dwMilliseconds: DWORD,
    Flags: ULONG,
) callconv(.winapi) BOOL;

// Console management

pub extern "kernel32" fn GetConsoleMode(
    hConsoleHandle: HANDLE,
    lpMode: *DWORD,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn SetConsoleMode(
    hConsoleHandle: HANDLE,
    dwMode: DWORD,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn GetConsoleScreenBufferInfo(
    hConsoleOutput: HANDLE,
    lpConsoleScreenBufferInfo: *CONSOLE_SCREEN_BUFFER_INFO,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn SetConsoleTextAttribute(
    hConsoleOutput: HANDLE,
    wAttributes: WORD,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn SetConsoleCtrlHandler(
    HandlerRoutine: ?HANDLER_ROUTINE,
    Add: BOOL,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn SetConsoleOutputCP(
    wCodePageID: UINT,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn GetConsoleOutputCP() callconv(.winapi) UINT;

pub extern "kernel32" fn FillConsoleOutputAttribute(
    hConsoleOutput: HANDLE,
    wAttribute: WORD,
    nLength: DWORD,
    dwWriteCoord: COORD,
    lpNumberOfAttrsWritten: *DWORD,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn FillConsoleOutputCharacterW(
    hConsoleOutput: HANDLE,
    cCharacter: WCHAR,
    nLength: DWORD,
    dwWriteCoord: COORD,
    lpNumberOfCharsWritten: *DWORD,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn SetConsoleCursorPosition(
    hConsoleOutput: HANDLE,
    dwCursorPosition: COORD,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn WriteConsoleW(
    hConsoleOutput: HANDLE,
    lpBuffer: [*]const u16,
    nNumberOfCharsToWrite: DWORD,
    lpNumberOfCharsWritten: ?*DWORD,
    lpReserved: ?LPVOID,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn ReadConsoleOutputCharacterW(
    hConsoleOutput: HANDLE,
    lpCharacter: [*]u16,
    nLength: DWORD,
    dwReadCoord: COORD,
    lpNumberOfCharsRead: *DWORD,
) callconv(.winapi) BOOL;

// Memory Mapping/Allocation

// TODO: Wrapper around RtlCreateHeap.
pub extern "kernel32" fn HeapCreate(
    flOptions: DWORD,
    dwInitialSize: SIZE_T,
    dwMaximumSize: SIZE_T,
) callconv(.winapi) ?HANDLE;

// TODO: Forwarder to RtlReAllocateHeap.
pub extern "kernel32" fn HeapReAlloc(
    hHeap: HANDLE,
    dwFlags: DWORD,
    lpMem: *anyopaque,
    dwBytes: SIZE_T,
) callconv(.winapi) ?*anyopaque;

// TODO: Fowrarder to RtlAllocateHeap.
pub extern "kernel32" fn HeapAlloc(
    hHeap: HANDLE,
    dwFlags: DWORD,
    dwBytes: SIZE_T,
) callconv(.winapi) ?*anyopaque;

// TODO: Fowrarder to RtlFreeHeap.
pub extern "kernel32" fn HeapFree(
    hHeap: HANDLE,
    dwFlags: DWORD,
    lpMem: LPVOID,
) callconv(.winapi) BOOL;

// TODO: Wrapper around RtlValidateHeap (BOOLEAN -> BOOL)
pub extern "kernel32" fn HeapValidate(
    hHeap: HANDLE,
    dwFlags: DWORD,
    lpMem: ?*const anyopaque,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtAllocateVirtualMemory.
pub extern "kernel32" fn VirtualAlloc(
    lpAddress: ?LPVOID,
    dwSize: SIZE_T,
    flAllocationType: DWORD,
    flProtect: DWORD,
) callconv(.winapi) ?LPVOID;

// TODO: Wrapper around NtFreeVirtualMemory.
// If the return value is .INVALID_PAGE_PROTECTION, calls RtlFlushSecureMemoryCache and try again.
pub extern "kernel32" fn VirtualFree(
    lpAddress: ?LPVOID,
    dwSize: SIZE_T,
    dwFreeType: DWORD,
) callconv(.winapi) BOOL;

// TODO: Wrapper around NtQueryVirtualMemory.
pub extern "kernel32" fn VirtualQuery(
    lpAddress: ?LPVOID,
    lpBuffer: PMEMORY_BASIC_INFORMATION,
    dwLength: SIZE_T,
) callconv(.winapi) SIZE_T;

// TODO: Getter for peb.ProcessHeap
pub extern "kernel32" fn GetProcessHeap() callconv(.winapi) ?HANDLE;

// Code Libraries/Modules

// TODO: Wrapper around LdrGetDllFullName.
pub extern "kernel32" fn GetModuleFileNameW(
    hModule: ?HMODULE,
    lpFilename: [*]WCHAR,
    nSize: DWORD,
) callconv(.winapi) DWORD;

extern "kernel32" fn K32GetModuleFileNameExW(
    hProcess: HANDLE,
    hModule: ?HMODULE,
    lpFilename: LPWSTR,
    nSize: DWORD,
) callconv(.winapi) DWORD;
pub const GetModuleFileNameExW = K32GetModuleFileNameExW;

// TODO: Wrapper around ntdll.LdrGetDllHandle, which is a wrapper around LdrGetDllHandleEx
pub extern "kernel32" fn GetModuleHandleW(
    lpModuleName: ?LPCWSTR,
) callconv(.winapi) ?HMODULE;

pub extern "kernel32" fn Module32First(
    hSnapshot: HANDLE,
    lpme: *MODULEENTRY32,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn Module32Next(
    hSnapshot: HANDLE,
    lpme: *MODULEENTRY32,
) callconv(.winapi) BOOL;

pub extern "kernel32" fn LoadLibraryW(
    lpLibFileName: LPCWSTR,
) callconv(.winapi) ?HMODULE;

pub extern "kernel32" fn LoadLibraryExW(
    lpLibFileName: LPCWSTR,
    hFile: ?HANDLE,
    dwFlags: DWORD,
) callconv(.winapi) ?HMODULE;

pub extern "kernel32" fn GetProcAddress(
    hModule: HMODULE,
    lpProcName: LPCSTR,
) callconv(.winapi) ?FARPROC;

pub extern "kernel32" fn FreeLibrary(
    hModule: HMODULE,
) callconv(.winapi) BOOL;

// Error Management

pub extern "kernel32" fn FormatMessageW(
    dwFlags: DWORD,
    lpSource: ?LPCVOID,
    dwMessageId: Win32Error,
    dwLanguageId: DWORD,
    lpBuffer: LPWSTR,
    nSize: DWORD,
    Arguments: ?*va_list,
) callconv(.winapi) DWORD;

// TODO: Getter for teb().LastErrorValue.
pub extern "kernel32" fn GetLastError() callconv(.winapi) Win32Error;

// TODO: Wrapper around RtlSetLastWin32Error.
pub extern "kernel32" fn SetLastError(
    dwErrCode: Win32Error,
) callconv(.winapi) void;

// Everything Else

pub extern "kernel32" fn GetSystemInfo(lpSystemInfo: *SYSTEM_INFO) callconv(.winapi) void;