| // created by cgo -cdefs and then converted to Go |
| // cgo -cdefs defs_windows.go |
| |
| package runtime |
| |
| const ( |
| _PROT_NONE = 0 |
| _PROT_READ = 1 |
| _PROT_WRITE = 2 |
| _PROT_EXEC = 4 |
| |
| _MAP_ANON = 1 |
| _MAP_PRIVATE = 2 |
| |
| _DUPLICATE_SAME_ACCESS = 0x2 |
| _THREAD_PRIORITY_HIGHEST = 0x2 |
| |
| _SIGINT = 0x2 |
| _SIGTERM = 0xF |
| _CTRL_C_EVENT = 0x0 |
| _CTRL_BREAK_EVENT = 0x1 |
| _CTRL_CLOSE_EVENT = 0x2 |
| _CTRL_LOGOFF_EVENT = 0x5 |
| _CTRL_SHUTDOWN_EVENT = 0x6 |
| |
| _CONTEXT_CONTROL = 0x10001 |
| _CONTEXT_FULL = 0x10007 |
| |
| _EXCEPTION_ACCESS_VIOLATION = 0xc0000005 |
| _EXCEPTION_BREAKPOINT = 0x80000003 |
| _EXCEPTION_FLT_DENORMAL_OPERAND = 0xc000008d |
| _EXCEPTION_FLT_DIVIDE_BY_ZERO = 0xc000008e |
| _EXCEPTION_FLT_INEXACT_RESULT = 0xc000008f |
| _EXCEPTION_FLT_OVERFLOW = 0xc0000091 |
| _EXCEPTION_FLT_UNDERFLOW = 0xc0000093 |
| _EXCEPTION_INT_DIVIDE_BY_ZERO = 0xc0000094 |
| _EXCEPTION_INT_OVERFLOW = 0xc0000095 |
| |
| _INFINITE = 0xffffffff |
| _WAIT_TIMEOUT = 0x102 |
| |
| _EXCEPTION_CONTINUE_EXECUTION = -0x1 |
| _EXCEPTION_CONTINUE_SEARCH = 0x0 |
| ) |
| |
| type systeminfo struct { |
| anon0 [4]byte |
| dwpagesize uint32 |
| lpminimumapplicationaddress *byte |
| lpmaximumapplicationaddress *byte |
| dwactiveprocessormask uint32 |
| dwnumberofprocessors uint32 |
| dwprocessortype uint32 |
| dwallocationgranularity uint32 |
| wprocessorlevel uint16 |
| wprocessorrevision uint16 |
| } |
| |
| type exceptionrecord struct { |
| exceptioncode uint32 |
| exceptionflags uint32 |
| exceptionrecord *exceptionrecord |
| exceptionaddress *byte |
| numberparameters uint32 |
| exceptioninformation [15]uint32 |
| } |
| |
| type floatingsavearea struct { |
| controlword uint32 |
| statusword uint32 |
| tagword uint32 |
| erroroffset uint32 |
| errorselector uint32 |
| dataoffset uint32 |
| dataselector uint32 |
| registerarea [80]uint8 |
| cr0npxstate uint32 |
| } |
| |
| type context struct { |
| contextflags uint32 |
| dr0 uint32 |
| dr1 uint32 |
| dr2 uint32 |
| dr3 uint32 |
| dr6 uint32 |
| dr7 uint32 |
| floatsave floatingsavearea |
| seggs uint32 |
| segfs uint32 |
| seges uint32 |
| segds uint32 |
| edi uint32 |
| esi uint32 |
| ebx uint32 |
| edx uint32 |
| ecx uint32 |
| eax uint32 |
| ebp uint32 |
| eip uint32 |
| segcs uint32 |
| eflags uint32 |
| esp uint32 |
| segss uint32 |
| extendedregisters [512]uint8 |
| } |
| |
| func (c *context) ip() uintptr { return uintptr(c.eip) } |
| func (c *context) sp() uintptr { return uintptr(c.esp) } |
| |
| // 386 does not have link register, so this returns 0. |
| func (c *context) lr() uintptr { return 0 } |
| func (c *context) set_lr(x uintptr) {} |
| |
| func (c *context) set_ip(x uintptr) { c.eip = uint32(x) } |
| func (c *context) set_sp(x uintptr) { c.esp = uint32(x) } |
| |
| func dumpregs(r *context) { |
| print("eax ", hex(r.eax), "\n") |
| print("ebx ", hex(r.ebx), "\n") |
| print("ecx ", hex(r.ecx), "\n") |
| print("edx ", hex(r.edx), "\n") |
| print("edi ", hex(r.edi), "\n") |
| print("esi ", hex(r.esi), "\n") |
| print("ebp ", hex(r.ebp), "\n") |
| print("esp ", hex(r.esp), "\n") |
| print("eip ", hex(r.eip), "\n") |
| print("eflags ", hex(r.eflags), "\n") |
| print("cs ", hex(r.segcs), "\n") |
| print("fs ", hex(r.segfs), "\n") |
| print("gs ", hex(r.seggs), "\n") |
| } |
| |
| type overlapped struct { |
| internal uint32 |
| internalhigh uint32 |
| anon0 [8]byte |
| hevent *byte |
| } |
| |
| type memoryBasicInformation struct { |
| baseAddress uintptr |
| allocationBase uintptr |
| allocationProtect uint32 |
| regionSize uintptr |
| state uint32 |
| protect uint32 |
| type_ uint32 |
| } |