mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Merge pull request #3732 from FrancisTheCat/master
add missing functions to core:sys/windows
This commit is contained in:
@@ -64,6 +64,7 @@ foreign kernel32 {
|
|||||||
RemoveVectoredContinueHandler :: proc(Handle: LPVOID) -> DWORD ---
|
RemoveVectoredContinueHandler :: proc(Handle: LPVOID) -> DWORD ---
|
||||||
RaiseException :: proc(dwExceptionCode, dwExceptionFlags, nNumberOfArguments: DWORD, lpArguments: ^ULONG_PTR) -> ! ---
|
RaiseException :: proc(dwExceptionCode, dwExceptionFlags, nNumberOfArguments: DWORD, lpArguments: ^ULONG_PTR) -> ! ---
|
||||||
|
|
||||||
|
SetUnhandledExceptionFilter :: proc(lpTopLevelExceptionFilter: LPTOP_LEVEL_EXCEPTION_FILTER) -> LPTOP_LEVEL_EXCEPTION_FILTER ---
|
||||||
|
|
||||||
CreateHardLinkW :: proc(lpSymlinkFileName: LPCWSTR,
|
CreateHardLinkW :: proc(lpSymlinkFileName: LPCWSTR,
|
||||||
lpTargetFileName: LPCWSTR,
|
lpTargetFileName: LPCWSTR,
|
||||||
@@ -464,6 +465,8 @@ foreign kernel32 {
|
|||||||
GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL ---
|
GetHandleInformation :: proc(hObject: HANDLE, lpdwFlags: ^DWORD) -> BOOL ---
|
||||||
|
|
||||||
RtlCaptureStackBackTrace :: proc(FramesToSkip: ULONG, FramesToCapture: ULONG, BackTrace: [^]PVOID, BackTraceHash: PULONG) -> USHORT ---
|
RtlCaptureStackBackTrace :: proc(FramesToSkip: ULONG, FramesToCapture: ULONG, BackTrace: [^]PVOID, BackTraceHash: PULONG) -> USHORT ---
|
||||||
|
|
||||||
|
GetSystemPowerStatus :: proc(lpSystemPowerStatus: ^SYSTEM_POWER_STATUS) -> BOOL ---
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_PROCESS :: 0x00000001
|
DEBUG_PROCESS :: 0x00000001
|
||||||
@@ -1223,6 +1226,30 @@ SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct {
|
|||||||
DummyUnion: DUMMYUNIONNAME_u,
|
DummyUnion: DUMMYUNIONNAME_u,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SYSTEM_POWER_STATUS :: struct {
|
||||||
|
ACLineStatus: AC_Line_Status,
|
||||||
|
BatteryFlag: Battery_Flags,
|
||||||
|
BatteryLifePercent: BYTE,
|
||||||
|
SystemStatusFlag: BYTE,
|
||||||
|
BatteryLifeTime: DWORD,
|
||||||
|
BatteryFullLifeTime: DWORD,
|
||||||
|
}
|
||||||
|
|
||||||
|
AC_Line_Status :: enum BYTE {
|
||||||
|
Offline = 0,
|
||||||
|
Online = 1,
|
||||||
|
Unknown = 255,
|
||||||
|
}
|
||||||
|
|
||||||
|
Battery_Flag :: enum BYTE {
|
||||||
|
High = 0,
|
||||||
|
Low = 1,
|
||||||
|
Critical = 2,
|
||||||
|
Charging = 3,
|
||||||
|
No_Battery = 7,
|
||||||
|
}
|
||||||
|
Battery_Flags :: bit_set[Battery_Flag; BYTE]
|
||||||
|
|
||||||
/* Global Memory Flags */
|
/* Global Memory Flags */
|
||||||
GMEM_FIXED :: 0x0000
|
GMEM_FIXED :: 0x0000
|
||||||
GMEM_MOVEABLE :: 0x0002
|
GMEM_MOVEABLE :: 0x0002
|
||||||
@@ -1241,3 +1268,5 @@ GMEM_INVALID_HANDLE :: 0x8000
|
|||||||
|
|
||||||
GHND :: (GMEM_MOVEABLE | GMEM_ZEROINIT)
|
GHND :: (GMEM_MOVEABLE | GMEM_ZEROINIT)
|
||||||
GPTR :: (GMEM_FIXED | GMEM_ZEROINIT)
|
GPTR :: (GMEM_FIXED | GMEM_ZEROINIT)
|
||||||
|
|
||||||
|
LPTOP_LEVEL_EXCEPTION_FILTER :: PVECTORED_EXCEPTION_HANDLER
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ HGDIOBJ :: distinct HANDLE
|
|||||||
HBITMAP :: distinct HANDLE
|
HBITMAP :: distinct HANDLE
|
||||||
HGLOBAL :: distinct HANDLE
|
HGLOBAL :: distinct HANDLE
|
||||||
HHOOK :: distinct HANDLE
|
HHOOK :: distinct HANDLE
|
||||||
|
HWINEVENTHOOK :: distinct HANDLE
|
||||||
HKEY :: distinct HANDLE
|
HKEY :: distinct HANDLE
|
||||||
HDESK :: distinct HANDLE
|
HDESK :: distinct HANDLE
|
||||||
HFONT :: distinct HANDLE
|
HFONT :: distinct HANDLE
|
||||||
@@ -703,6 +704,14 @@ WNDPROC :: #type proc "system" (HWND, UINT, WPARAM, LPARAM) -> LRESULT
|
|||||||
|
|
||||||
HOOKPROC :: #type proc "system" (code: c_int, wParam: WPARAM, lParam: LPARAM) -> LRESULT
|
HOOKPROC :: #type proc "system" (code: c_int, wParam: WPARAM, lParam: LPARAM) -> LRESULT
|
||||||
|
|
||||||
|
WINEVENTPROC :: #type proc "system" (
|
||||||
|
hWinEventHook: HWINEVENTHOOK,
|
||||||
|
event: DWORD,
|
||||||
|
hwnd: HWND,
|
||||||
|
idObject, idChild: LONG,
|
||||||
|
idEventThread, dwmsEventTime: DWORD,
|
||||||
|
)
|
||||||
|
|
||||||
CWPRETSTRUCT :: struct {
|
CWPRETSTRUCT :: struct {
|
||||||
lResult: LRESULT,
|
lResult: LRESULT,
|
||||||
lParam: LPARAM,
|
lParam: LPARAM,
|
||||||
|
|||||||
@@ -17,6 +17,18 @@ foreign user32 {
|
|||||||
|
|
||||||
GetClassNameW :: proc(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: c_int) -> c_int ---
|
GetClassNameW :: proc(hWnd: HWND, lpClassName: LPWSTR, nMaxCount: c_int) -> c_int ---
|
||||||
|
|
||||||
|
GetParent :: proc(hWnd: HWND) -> HWND ---
|
||||||
|
IsWindowVisible :: proc(hWnd: HWND) -> BOOL ---
|
||||||
|
SetWinEventHook :: proc(
|
||||||
|
eventMin, eventMax: DWORD,
|
||||||
|
hmodWinEventProc: HMODULE,
|
||||||
|
pfnWinEvenProc: WINEVENTPROC,
|
||||||
|
idProcess, idThread: DWORD,
|
||||||
|
dwFlags: WinEventFlags,
|
||||||
|
) -> HWINEVENTHOOK ---
|
||||||
|
|
||||||
|
IsChild :: proc(hWndParent, hWnd: HWND) -> BOOL ---
|
||||||
|
|
||||||
RegisterClassW :: proc(lpWndClass: ^WNDCLASSW) -> ATOM ---
|
RegisterClassW :: proc(lpWndClass: ^WNDCLASSW) -> ATOM ---
|
||||||
RegisterClassExW :: proc(^WNDCLASSEXW) -> ATOM ---
|
RegisterClassExW :: proc(^WNDCLASSEXW) -> ATOM ---
|
||||||
UnregisterClassW :: proc(lpClassName: LPCWSTR, hInstance: HINSTANCE) -> BOOL ---
|
UnregisterClassW :: proc(lpClassName: LPCWSTR, hInstance: HINSTANCE) -> BOOL ---
|
||||||
@@ -568,3 +580,12 @@ RedrawWindowFlags :: enum UINT {
|
|||||||
RDW_FRAME = 0x0400,
|
RDW_FRAME = 0x0400,
|
||||||
RDW_NOFRAME = 0x0800,
|
RDW_NOFRAME = 0x0800,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OUTOFCONTEXT is the zero value, use {}
|
||||||
|
WinEventFlags :: bit_set[WinEventFlag; DWORD]
|
||||||
|
|
||||||
|
WinEventFlag :: enum DWORD {
|
||||||
|
SKIPOWNTHREAD = 0,
|
||||||
|
SKIPOWNPROCESS = 1,
|
||||||
|
INCONTEXT = 2,
|
||||||
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ ERROR_PIPE_BUSY : DWORD : 231
|
|||||||
|
|
||||||
E_NOTIMPL :: HRESULT(-0x7fff_bfff) // 0x8000_4001
|
E_NOTIMPL :: HRESULT(-0x7fff_bfff) // 0x8000_4001
|
||||||
|
|
||||||
SUCCEEDED :: #force_inline proc(#any_int result: int) -> bool { return result >= 0 }
|
SUCCEEDED :: #force_inline proc "contextless" (#any_int result: int) -> bool { return result >= 0 }
|
||||||
|
|
||||||
|
|
||||||
System_Error :: enum DWORD {
|
System_Error :: enum DWORD {
|
||||||
|
|||||||
Reference in New Issue
Block a user