Add stack frame procedures for core:sys/windows

This commit is contained in:
gingerBill
2024-04-28 11:31:50 +01:00
parent 5e1b376e22
commit 00b1a41540
3 changed files with 44 additions and 0 deletions
+38
View File
@@ -228,6 +228,38 @@ MINIDUMP_TYPE :: enum u32 {
ValidTypeFlags = 0x01ffffff,
}
SYMBOL_INFOW :: struct {
SizeOfStruct: ULONG,
TypeIndex: ULONG,
Reserved: [2]ULONG64,
Index: ULONG,
Size: ULONG,
ModBase: ULONG64,
Flags: ULONG,
Value: ULONG64,
Address: ULONG64,
Register: ULONG,
Scope: ULONG,
Tag: ULONG,
NameLen: ULONG,
MaxNameLen: ULONG,
Name: [1]WCHAR,
}
IMAGEHLP_LINE64 :: struct {
SizeOfStruct: DWORD,
Key: PVOID,
LineNumber: DWORD,
FileName: PWSTR,
Address: DWORD64,
}
PSYMBOL_INFOW :: ^SYMBOL_INFOW
PIMAGEHLP_LINEW64 :: ^IMAGEHLP_LINE64
SYMOPT_LOAD_LINES :: 0x00000010
@(default_calling_convention = "system")
foreign Dbghelp {
MiniDumpWriteDump :: proc(
@@ -247,4 +279,10 @@ foreign Dbghelp {
StreamPointer: ^PVOID,
StreamSize: ^ULONG,
) -> BOOL ---
SymInitialize :: proc(hProcess: HANDLE, UserSearchPath: PCSTR, fInvadeProcess: BOOL) -> BOOL ---
SymCleanup :: proc(hProcess: HANDLE) -> BOOL ---
SymSetOptions :: proc(SymOptions: DWORD) -> DWORD ---
SymFromAddrW :: proc(hProcess: HANDLE, Address: DWORD64, Displacement: PDWORD64, Symbol: PSYMBOL_INFOW) -> BOOL ---
SymGetLineFromAddrW64 :: proc(hProcess: HANDLE, dwAddr: DWORD64, pdwDisplacement: PDWORD, Line: PIMAGEHLP_LINEW64) -> BOOL ---
}
+2
View File
@@ -460,6 +460,8 @@ foreign kernel32 {
PostQueuedCompletionStatus :: proc(CompletionPort: HANDLE, dwNumberOfBytesTransferred: DWORD, dwCompletionKey: c_ulong, lpOverlapped: ^OVERLAPPED) -> BOOL ---
// [MS-Docs](https://learn.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-gethandleinformation)
GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL ---
RtlCaptureStackBackTrace :: proc(FramesToSkip: ULONG, FramesToCapture: ULONG, BackTrace: [^]PVOID, BackTraceHash: PULONG) -> USHORT ---;
}
DEBUG_PROCESS :: 0x00000001
+4
View File
@@ -93,10 +93,14 @@ LONG32 :: i32
ULONG64 :: u64
LONG64 :: i64
DWORD64 :: u64
PDWORD64 :: ^DWORD64
PDWORD_PTR :: ^DWORD_PTR
ATOM :: distinct WORD
wstring :: [^]WCHAR
PWSTR :: [^]WCHAR
PBYTE :: ^BYTE
LPBYTE :: ^BYTE