diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 80238af04..bea14deff 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -26,10 +26,14 @@ foreign kernel32 { SetHandleInformation :: proc(hObject: HANDLE, dwMask: DWORD, dwFlags: DWORD) -> BOOL --- + AddVectoredExceptionHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- AddVectoredContinueHandler :: proc(FirstHandler: ULONG, VectoredHandler: PVECTORED_EXCEPTION_HANDLER) -> LPVOID --- RemoveVectoredExceptionHandler :: proc(Handle: LPVOID) -> DWORD --- RemoveVectoredContinueHandler :: proc(Handle: LPVOID) -> DWORD --- + RaiseException :: proc(dwExceptionCode, dwExceptionFlags, nNumberOfArguments: DWORD, lpArguments: ^ULONG_PTR) -> ! --- + + CreateHardLinkW :: proc(lpSymlinkFileName: LPCWSTR, lpTargetFileName: LPCWSTR, lpSecurityAttributes: LPSECURITY_ATTRIBUTES) -> BOOL --- @@ -39,7 +43,6 @@ foreign kernel32 { lpFileInformation: LPVOID, dwBufferSize: DWORD) -> BOOL --- - GetCurrentProcessId :: proc() -> DWORD --- InitializeCriticalSection :: proc(CriticalSection: ^CRITICAL_SECTION) --- InitializeCriticalSectionAndSpinCount :: proc(CriticalSection: ^CRITICAL_SECTION, dwSpinCount: DWORD) -> BOOL --- EnterCriticalSection :: proc(CriticalSection: ^CRITICAL_SECTION) --- @@ -53,6 +56,7 @@ foreign kernel32 { GetCommandLineW :: proc() -> LPCWSTR --- GetTempPathW :: proc(nBufferLength: DWORD, lpBuffer: LPCWSTR) -> DWORD --- GetCurrentProcess :: proc() -> HANDLE --- + GetCurrentProcessId :: proc() -> DWORD --- GetCurrentThread :: proc() -> HANDLE --- GetCurrentThreadId :: proc() -> DWORD --- GetStdHandle :: proc(which: DWORD) -> HANDLE --- diff --git a/core/sys/windows/types.odin b/core/sys/windows/types.odin index c4f440667..dd7f8377c 100644 --- a/core/sys/windows/types.odin +++ b/core/sys/windows/types.odin @@ -319,7 +319,6 @@ FILE_TYPE_CHAR :: 0x0002; FILE_TYPE_PIPE :: 0x0003; - when size_of(uintptr) == 4 { WSADATA :: struct { wVersion: WORD, @@ -606,10 +605,23 @@ timeval :: struct { tv_usec: c_long, } + EXCEPTION_CONTINUE_SEARCH: LONG : 0; -EXCEPTION_STACK_OVERFLOW: DWORD : 0xc00000fd; +EXCEPTION_CONTINUE_EXECUTION: LONG : -1; +EXCEPTION_EXECUTE_HANDLER: LONG : 1; + EXCEPTION_MAXIMUM_PARAMETERS :: 15; +EXCEPTION_DATATYPE_MISALIGNMENT :: 0x80000002; +EXCEPTION_ACCESS_VIOLATION :: 0xC0000005; +EXCEPTION_ILLEGAL_INSTRUCTION :: 0xC000001D; +EXCEPTION_ARRAY_BOUNDS_EXCEEDED :: 0xC000008C; +EXCEPTION_INT_DIVIDE_BY_ZERO :: 0xC0000094; +EXCEPTION_INT_OVERFLOW :: 0xC0000095; +EXCEPTION_STACK_OVERFLOW :: 0xC00000FD; +STATUS_PRIVILEGED_INSTRUCTION :: 0xC0000096; + + EXCEPTION_RECORD :: struct { ExceptionCode: DWORD, ExceptionFlags: DWORD,