mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-29 09:24:33 +00:00
102 lines
2.6 KiB
Odin
102 lines
2.6 KiB
Odin
#+build windows
|
|
package sys_windows
|
|
|
|
foreign import kernel32 "system:Kernel32.lib"
|
|
|
|
@(default_calling_convention="system")
|
|
foreign kernel32 {
|
|
CreateToolhelp32Snapshot :: proc (dwFlags: DWORD, th32ProcessID: DWORD) -> HANDLE ---
|
|
Process32FirstW :: proc (hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W) -> BOOL ---
|
|
Process32NextW :: proc (hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W) -> BOOL ---
|
|
Thread32First :: proc (hSnapshot: HANDLE, lpte: LPTHREADENTRY32) -> BOOL ---
|
|
Thread32Next :: proc (hSnapshot: HANDLE, lpte: LPTHREADENTRY32) -> BOOL ---
|
|
Module32FirstW :: proc (hSnapshot: HANDLE, lpme: LPMODULEENTRY32W) -> BOOL ---
|
|
Module32NextW :: proc (hSnapshot: HANDLE, lpme: LPMODULEENTRY32W) -> BOOL ---
|
|
Heap32ListFirst :: proc (hSnapshot: HANDLE, lphl: LPHEAPLIST32) -> BOOL ---
|
|
Heap32ListNext :: proc (hSnapshot: HANDLE, lphl: LPHEAPLIST32) -> BOOL ---
|
|
Heap32First :: proc (lphe: LPHEAPENTRY32, th32ProcessID: DWORD, th32HeapID: ULONG_PTR) -> BOOL ---
|
|
Heap32Next :: proc (lphe: LPHEAPENTRY32) -> BOOL ---
|
|
Toolhelp32ReadProcessMemory :: proc (
|
|
th32ProcessID: DWORD,
|
|
lpBaseAddress: LPCVOID,
|
|
lpBuffer: LPVOID,
|
|
cbRead: SIZE_T,
|
|
lpNumberOfBytesRead: ^SIZE_T,
|
|
) -> BOOL ---
|
|
}
|
|
|
|
MAX_MODULE_NAME32 :: 255
|
|
|
|
TH32CS_INHERIT :: 0x80000000
|
|
TH32CS_SNAPHEAPLIST :: 0x00000001
|
|
TH32CS_SNAPPROCESS :: 0x00000002
|
|
TH32CS_SNAPTHREAD :: 0x00000004
|
|
TH32CS_SNAPMODULE :: 0x00000008
|
|
TH32CS_SNAPMODULE32 :: 0x00000010
|
|
TH32CS_SNAPALL :: TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE
|
|
|
|
PROCESSENTRY32W :: struct {
|
|
dwSize: DWORD,
|
|
cntUsage: DWORD,
|
|
th32ProcessID: DWORD,
|
|
th32DefaultHeapID: ULONG_PTR,
|
|
th32ModuleID: DWORD,
|
|
cntThreads: DWORD,
|
|
th32ParentProcessID: DWORD,
|
|
pcPriClassBase: LONG,
|
|
dwFlags: DWORD,
|
|
szExeFile: [MAX_PATH]WCHAR,
|
|
}
|
|
|
|
LPPROCESSENTRY32W :: ^PROCESSENTRY32W
|
|
|
|
THREADENTRY32 :: struct {
|
|
dwSize: DWORD,
|
|
cntUsage: DWORD,
|
|
th32ThreadID: DWORD,
|
|
th32OwnerProcessID: DWORD,
|
|
tpBasePri: LONG,
|
|
tpDeltaPri: LONG,
|
|
dwFlags: DWORD,
|
|
}
|
|
|
|
LPTHREADENTRY32 :: ^THREADENTRY32
|
|
|
|
MODULEENTRY32W :: struct {
|
|
dwSize: DWORD,
|
|
th32ModuleID: DWORD,
|
|
th32ProcessID: DWORD,
|
|
GlblcntUsage: DWORD,
|
|
ProccntUsage: DWORD,
|
|
modBaseAddr: ^BYTE,
|
|
modBaseSize: DWORD,
|
|
hModule: HMODULE,
|
|
szModule: [MAX_MODULE_NAME32 + 1]WCHAR,
|
|
szExePath: [MAX_PATH]WCHAR,
|
|
}
|
|
|
|
LPMODULEENTRY32W :: ^MODULEENTRY32W
|
|
|
|
HEAPLIST32 :: struct {
|
|
dwSize: SIZE_T,
|
|
th32ProcessID: DWORD,
|
|
th32HeapID: ULONG_PTR,
|
|
dwFlags: DWORD,
|
|
}
|
|
|
|
LPHEAPLIST32 :: ^HEAPLIST32
|
|
|
|
HEAPENTRY32 :: struct {
|
|
dwSize: SIZE_T,
|
|
hHandle: HANDLE,
|
|
dwAddress: ULONG_PTR,
|
|
dwBlockSize: SIZE_T,
|
|
dwFlags: DWORD,
|
|
dwLockCount: DWORD,
|
|
dwResvd: DWORD,
|
|
th32ProcessID: DWORD,
|
|
th32HeapID: ULONG_PTR,
|
|
}
|
|
|
|
LPHEAPENTRY32 :: ^HEAPENTRY32
|