1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
// Created by cgo -cdefs - DO NOT EDIT
// cgo -cdefs defs_windows.go
enum {
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,
CTRL_C_EVENT = 0x0,
CTRL_BREAK_EVENT = 0x1,
CONTEXT_CONTROL = 0x100001,
CONTEXT_FULL = 0x10000b,
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,
};
typedef struct SystemInfo SystemInfo;
typedef struct ExceptionRecord ExceptionRecord;
typedef struct FloatingSaveArea FloatingSaveArea;
typedef struct M128a M128a;
typedef struct Context Context;
typedef struct Overlapped Overlapped;
#pragma pack on
struct SystemInfo {
byte anon0[4];
uint32 dwPageSize;
byte *lpMinimumApplicationAddress;
byte *lpMaximumApplicationAddress;
uint64 dwActiveProcessorMask;
uint32 dwNumberOfProcessors;
uint32 dwProcessorType;
uint32 dwAllocationGranularity;
uint16 wProcessorLevel;
uint16 wProcessorRevision;
};
struct ExceptionRecord {
uint32 ExceptionCode;
uint32 ExceptionFlags;
ExceptionRecord *ExceptionRecord;
byte *ExceptionAddress;
uint32 NumberParameters;
byte Pad_cgo_0[4];
uint64 ExceptionInformation[15];
};
struct M128a {
uint64 Low;
int64 High;
};
struct Context {
uint64 P1Home;
uint64 P2Home;
uint64 P3Home;
uint64 P4Home;
uint64 P5Home;
uint64 P6Home;
uint32 ContextFlags;
uint32 MxCsr;
uint16 SegCs;
uint16 SegDs;
uint16 SegEs;
uint16 SegFs;
uint16 SegGs;
uint16 SegSs;
uint32 EFlags;
uint64 Dr0;
uint64 Dr1;
uint64 Dr2;
uint64 Dr3;
uint64 Dr6;
uint64 Dr7;
uint64 Rax;
uint64 Rcx;
uint64 Rdx;
uint64 Rbx;
uint64 Rsp;
uint64 Rbp;
uint64 Rsi;
uint64 Rdi;
uint64 R8;
uint64 R9;
uint64 R10;
uint64 R11;
uint64 R12;
uint64 R13;
uint64 R14;
uint64 R15;
uint64 Rip;
byte anon0[512];
M128a VectorRegister[26];
uint64 VectorControl;
uint64 DebugControl;
uint64 LastBranchToRip;
uint64 LastBranchFromRip;
uint64 LastExceptionToRip;
uint64 LastExceptionFromRip;
};
struct Overlapped {
uint64 Internal;
uint64 InternalHigh;
byte anon0[8];
byte *hEvent;
};
#pragma pack off
|