mirror of
https://github.com/odin-lang/Odin.git
synced 2026-05-29 15:15:08 +00:00
85 lines
3.1 KiB
Odin
85 lines
3.1 KiB
Odin
#+build windows
|
|
package sys_windows
|
|
|
|
foreign import kernel32 "system:Kernel32.lib"
|
|
|
|
@(default_calling_convention="system")
|
|
foreign kernel32 {
|
|
GetSystemWow64Directory2W :: proc(lpBuffer: LPWSTR, uSize: UINT, ImageFileMachineTyp: WORD) -> UINT ---
|
|
GetSystemWow64DirectoryW :: proc(lpBuffer: LPWSTR, uSize: UINT) -> UINT ---
|
|
IsWow64GuestMachineSupported :: proc(WowGuestMachine: USHORT, MachineIsSupported: ^BOOL) -> HRESULT ---
|
|
IsWow64Process :: proc(hProcess: HANDLE, Wow64Process: PBOOL) -> BOOL ---
|
|
IsWow64Process2 :: proc(hProcess: HANDLE, pProcessMachine: ^USHORT, pNativeMachine: ^USHORT) -> BOOL ---
|
|
Wow64EnableWow64FsRedirection :: proc(Wow64FsEnableRedirection: BOOLEAN) -> BOOLEAN ---
|
|
Wow64DisableWow64FsRedirection :: proc(OldValue: ^PVOID) -> BOOL ---
|
|
Wow64RevertWow64FsRedirection :: proc(OlValue: PVOID) -> BOOL ---
|
|
Wow64GetThreadContext :: proc(hThread: HANDLE, lpContext: PWOW64_CONTEXT) -> BOOL ---
|
|
Wow64SetThreadContext :: proc(hThread: HANDLE, lpContext: ^WOW64_CONTEXT) -> BOOL ---
|
|
Wow64SetThreadDefaultGuestMachine :: proc(Machine: USHORT) -> USHORT ---
|
|
Wow64SuspendThread :: proc(hThread: HANDLE) -> DWORD ---
|
|
}
|
|
|
|
WOW64_CONTEXT_i386 :: 0x00010000
|
|
|
|
WOW64_CONTEXT_CONTROL :: (WOW64_CONTEXT_i386 | 0x00000001)
|
|
WOW64_CONTEXT_INTEGER :: (WOW64_CONTEXT_i386 | 0x00000002)
|
|
WOW64_CONTEXT_SEGMENTS :: (WOW64_CONTEXT_i386 | 0x00000004)
|
|
|
|
WOW64_CONTEXT_FLOATING_POINT :: (WOW64_CONTEXT_i386 | 0x00000008)
|
|
WOW64_CONTEXT_DEBUG_REGISTERS :: (WOW64_CONTEXT_i386 | 0x00000010)
|
|
WOW64_CONTEXT_EXTENDED_REGISTERS :: (WOW64_CONTEXT_i386 | 0x00000020)
|
|
WOW64_CONTEXT_FULL :: (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS)
|
|
WOW64_CONTEXT_ALL :: (
|
|
WOW64_CONTEXT_CONTROL |
|
|
WOW64_CONTEXT_INTEGER |
|
|
WOW64_CONTEXT_SEGMENTS |
|
|
WOW64_CONTEXT_FLOATING_POINT |
|
|
WOW64_CONTEXT_DEBUG_REGISTERS |
|
|
WOW64_CONTEXT_EXTENDED_REGISTERS)
|
|
|
|
WOW64_SIZE_OF_80387_REGISTERS :: 80
|
|
WOW64_MAXIMUM_SUPPORTED_EXTENSION :: 512
|
|
|
|
WOW64_CONTEXT :: struct {
|
|
ContextFlags: DWORD,
|
|
Dr0: DWORD,
|
|
Dr1: DWORD,
|
|
Dr2: DWORD,
|
|
Dr3: DWORD,
|
|
Dr6: DWORD,
|
|
Dr7: DWORD,
|
|
FloatSave: WOW64_FLOATING_SAVE_AREA,
|
|
SegGs: DWORD,
|
|
SegFs: DWORD,
|
|
SegEs: DWORD,
|
|
SegDs: DWORD,
|
|
Edi: DWORD,
|
|
Esi: DWORD,
|
|
Ebx: DWORD,
|
|
Edx: DWORD,
|
|
Ecx: DWORD,
|
|
Eax: DWORD,
|
|
Ebp: DWORD,
|
|
Eip: DWORD,
|
|
SegCs: DWORD,
|
|
EFlags: DWORD,
|
|
Esp: DWORD,
|
|
SegSs: DWORD,
|
|
ExtendedRegisters: [WOW64_MAXIMUM_SUPPORTED_EXTENSION]BYTE,
|
|
}
|
|
|
|
PWOW64_CONTEXT :: ^WOW64_CONTEXT
|
|
|
|
WOW64_FLOATING_SAVE_AREA :: struct {
|
|
ControlWord: DWORD,
|
|
StatusWord: DWORD,
|
|
TagWord: DWORD,
|
|
ErrorOffset: DWORD,
|
|
ErrorSelector: DWORD,
|
|
DataOffset: DWORD,
|
|
DataSelector: DWORD,
|
|
RegisterArea: [WOW64_SIZE_OF_80387_REGISTERS]BYTE,
|
|
Cr0NpxState: DWORD,
|
|
}
|
|
|
|
PWOW64_FLOATING_SAVE_AREA :: ^WOW64_FLOATING_SAVE_AREA |