Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6429 | siemargl | 1 | /** |
2 | * This file has no copyright assigned and is placed in the Public Domain. |
||
3 | * This file is part of the w64 mingw-runtime package. |
||
4 | * No warranty is given; refer to the file DISCLAIMER within this package. |
||
5 | */ |
||
6 | #ifndef _WINNT_ |
||
7 | #define _WINNT_ |
||
8 | |||
9 | #ifdef __cplusplus |
||
10 | extern "C" { |
||
11 | #endif |
||
12 | |||
13 | #include |
||
14 | #define ANYSIZE_ARRAY 1 |
||
15 | |||
16 | #include |
||
17 | |||
18 | #define RESTRICTED_POINTER |
||
19 | |||
20 | #ifndef __CRT_UNALIGNED |
||
21 | #define __CRT_UNALIGNED |
||
22 | #endif |
||
23 | |||
24 | #if defined(__ia64__) || defined(__x86_64) |
||
25 | #define UNALIGNED __CRT_UNALIGNED |
||
26 | #ifdef _WIN64 |
||
27 | #define UNALIGNED64 __CRT_UNALIGNED |
||
28 | #else |
||
29 | #define UNALIGNED64 |
||
30 | #endif |
||
31 | #else |
||
32 | #define UNALIGNED |
||
33 | #define UNALIGNED64 |
||
34 | #endif |
||
35 | |||
36 | #if !defined(I_X86_) && !defined(_IA64_) && !defined(_AMD64_) && (defined(_X86_) && !defined(__x86_64)) |
||
37 | #define I_X86_ |
||
38 | #endif |
||
39 | |||
40 | #if !defined(I_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(__x86_64) |
||
41 | #define _AMD64_ |
||
42 | #endif |
||
43 | |||
44 | #if !defined(I_X86_) && !(defined(_X86_) && !defined(__x86_64)) && !defined(_AMD64_) && defined(__ia64__) |
||
45 | #if !defined(_IA64_) |
||
46 | #define _IA64_ |
||
47 | #endif |
||
48 | #endif |
||
49 | |||
50 | |||
51 | #ifdef _WIN64 |
||
52 | #define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG) |
||
53 | #define MEMORY_ALLOCATION_ALIGNMENT 16 |
||
54 | #else |
||
55 | #define MAX_NATURAL_ALIGNMENT sizeof(DWORD) |
||
56 | #define MEMORY_ALLOCATION_ALIGNMENT 8 |
||
57 | #endif |
||
58 | |||
59 | #ifdef __cplusplus |
||
60 | #define TYPE_ALIGNMENT(t) __alignof__ (t) |
||
61 | #else |
||
62 | #define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; },test) |
||
63 | #endif |
||
64 | |||
65 | #ifdef _WIN64 |
||
66 | #ifdef _AMD64_ |
||
67 | #define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT(DWORD) |
||
68 | #elif defined(_IA64_) |
||
69 | #define PROBE_ALIGNMENT(_s) (TYPE_ALIGNMENT(_s) > TYPE_ALIGNMENT(DWORD) ? TYPE_ALIGNMENT(_s) : TYPE_ALIGNMENT(DWORD)) |
||
70 | #else |
||
71 | #error No Target Architecture |
||
72 | #endif |
||
73 | #define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT(DWORD) |
||
74 | #else |
||
75 | #define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT(DWORD) |
||
76 | #endif |
||
77 | |||
78 | #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] |
||
79 | |||
80 | #include |
||
81 | |||
82 | #if defined(_X86_) || defined(__ia64__) || defined(__x86_64) |
||
83 | #define DECLSPEC_IMPORT __declspec(dllimport) |
||
84 | #else |
||
85 | #define DECLSPEC_IMPORT |
||
86 | #endif |
||
87 | |||
88 | #ifndef DECLSPEC_NORETURN |
||
89 | #define DECLSPEC_NORETURN __declspec(noreturn) |
||
90 | #endif |
||
91 | |||
92 | #ifndef DECLSPEC_ALIGN |
||
93 | #define DECLSPEC_ALIGN(x) __attribute__ ((aligned(x))) |
||
94 | #endif |
||
95 | |||
96 | #ifndef SYSTEM_CACHE_ALIGNMENT_SIZE |
||
97 | #if defined(_AMD64_) || defined(I_X86_) |
||
98 | #define SYSTEM_CACHE_ALIGNMENT_SIZE 64 |
||
99 | #else |
||
100 | #define SYSTEM_CACHE_ALIGNMENT_SIZE 128 |
||
101 | #endif |
||
102 | #endif |
||
103 | |||
104 | #ifndef DECLSPEC_CACHEALIGN |
||
105 | #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(SYSTEM_CACHE_ALIGNMENT_SIZE) |
||
106 | #endif |
||
107 | |||
108 | #ifndef DECLSPEC_UUID |
||
109 | #define DECLSPEC_UUID(x) |
||
110 | #endif |
||
111 | |||
112 | #ifndef DECLSPEC_NOVTABLE |
||
113 | #define DECLSPEC_NOVTABLE |
||
114 | #endif |
||
115 | |||
116 | #ifndef DECLSPEC_SELECTANY |
||
117 | #define DECLSPEC_SELECTANY __declspec(selectany) |
||
118 | #endif |
||
119 | |||
120 | #ifndef NOP_FUNCTION |
||
121 | #define NOP_FUNCTION (void)0 |
||
122 | #endif |
||
123 | |||
124 | #ifndef DECLSPEC_NOINLINE |
||
125 | #define DECLSPEC_NOINLINE |
||
126 | #endif |
||
127 | |||
128 | #ifndef FORCEINLINE |
||
129 | #define FORCEINLINE static __inline__ |
||
130 | #endif |
||
131 | |||
132 | #ifndef DECLSPEC_DEPRECATED |
||
133 | #define DECLSPEC_DEPRECATED __declspec(deprecated) |
||
134 | #define DEPRECATE_SUPPORTED |
||
135 | #endif |
||
136 | |||
137 | #define DECLSPEC_DEPRECATED_DDK |
||
138 | #define PRAGMA_DEPRECATED_DDK 0 |
||
139 | |||
140 | typedef void *PVOID; |
||
141 | typedef void *PVOID64; |
||
142 | |||
143 | #define NTAPI __stdcall |
||
144 | #define NTSYSAPI DECLSPEC_IMPORT |
||
145 | #define NTSYSCALLAPI DECLSPEC_IMPORT |
||
146 | |||
147 | #ifndef VOID |
||
148 | #define VOID void |
||
149 | typedef char CHAR; |
||
150 | typedef short SHORT; |
||
151 | typedef long LONG; |
||
152 | #endif |
||
153 | |||
154 | typedef wchar_t WCHAR; |
||
155 | typedef WCHAR *PWCHAR,*LPWCH,*PWCH; |
||
156 | typedef CONST WCHAR *LPCWCH,*PCWCH; |
||
157 | typedef WCHAR *NWPSTR,*LPWSTR,*PWSTR; |
||
158 | typedef PWSTR *PZPWSTR; |
||
159 | typedef CONST PWSTR *PCZPWSTR; |
||
160 | typedef WCHAR UNALIGNED *LPUWSTR,*PUWSTR; |
||
161 | typedef CONST WCHAR *LPCWSTR,*PCWSTR; |
||
162 | typedef PCWSTR *PZPCWSTR; |
||
163 | typedef CONST WCHAR UNALIGNED *LPCUWSTR,*PCUWSTR; |
||
164 | typedef CHAR *PCHAR,*LPCH,*PCH; |
||
165 | typedef CONST CHAR *LPCCH,*PCCH; |
||
166 | typedef CHAR *NPSTR,*LPSTR,*PSTR; |
||
167 | typedef PSTR *PZPSTR; |
||
168 | typedef CONST PSTR *PCZPSTR; |
||
169 | typedef CONST CHAR *LPCSTR,*PCSTR; |
||
170 | typedef PCSTR *PZPCSTR; |
||
171 | |||
172 | #ifdef UNICODE |
||
173 | #ifndef _TCHAR_DEFINED |
||
174 | #define _TCHAR_DEFINED |
||
175 | typedef WCHAR TCHAR,*PTCHAR; |
||
176 | typedef WCHAR TBYTE ,*PTBYTE; |
||
177 | #endif |
||
178 | |||
179 | typedef LPWSTR LPTCH,PTCH; |
||
180 | typedef LPWSTR PTSTR,LPTSTR; |
||
181 | typedef LPCWSTR PCTSTR,LPCTSTR; |
||
182 | typedef LPUWSTR PUTSTR,LPUTSTR; |
||
183 | typedef LPCUWSTR PCUTSTR,LPCUTSTR; |
||
184 | typedef LPWSTR LP; |
||
185 | #define __TEXT(quote) L##quote |
||
186 | #else |
||
187 | #ifndef _TCHAR_DEFINED |
||
188 | #define _TCHAR_DEFINED |
||
189 | typedef char TCHAR,*PTCHAR; |
||
190 | typedef unsigned char TBYTE ,*PTBYTE; |
||
191 | #endif |
||
192 | |||
193 | typedef LPSTR LPTCH,PTCH; |
||
194 | typedef LPSTR PTSTR,LPTSTR,PUTSTR,LPUTSTR; |
||
195 | typedef LPCSTR PCTSTR,LPCTSTR,PCUTSTR,LPCUTSTR; |
||
196 | #define __TEXT(quote) quote |
||
197 | #endif |
||
198 | |||
199 | #define TEXT(quote) __TEXT(quote) |
||
200 | |||
201 | typedef SHORT *PSHORT; |
||
202 | typedef LONG *PLONG; |
||
203 | |||
204 | typedef void *HANDLE; |
||
205 | #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name |
||
206 | typedef HANDLE *PHANDLE; |
||
207 | |||
208 | typedef BYTE FCHAR; |
||
209 | typedef WORD FSHORT; |
||
210 | typedef DWORD FLONG; |
||
211 | |||
212 | #ifndef _HRESULT_DEFINED |
||
213 | #define _HRESULT_DEFINED |
||
214 | typedef LONG HRESULT; |
||
215 | #endif |
||
216 | |||
217 | #ifdef __cplusplus |
||
218 | #define EXTERN_C extern "C" |
||
219 | #else |
||
220 | #define EXTERN_C extern |
||
221 | #endif |
||
222 | |||
223 | #define STDMETHODCALLTYPE WINAPI |
||
224 | #define STDMETHODVCALLTYPE __cdecl |
||
225 | #define STDAPICALLTYPE WINAPI |
||
226 | #define STDAPIVCALLTYPE __cdecl |
||
227 | #define STDAPI EXTERN_C HRESULT WINAPI |
||
228 | #define STDAPI_(type) EXTERN_C type WINAPI |
||
229 | #define STDMETHODIMP HRESULT WINAPI |
||
230 | #define STDMETHODIMP_(type) type WINAPI |
||
231 | #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE |
||
232 | #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE |
||
233 | #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE |
||
234 | #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE |
||
235 | |||
236 | typedef char CCHAR; |
||
237 | #ifndef _LCID_DEFINED |
||
238 | #define _LCID_DEFINED |
||
239 | typedef DWORD LCID; |
||
240 | #endif |
||
241 | typedef PDWORD PLCID; |
||
242 | #ifndef _LANGID_DEFINED |
||
243 | #define _LANGID_DEFINED |
||
244 | typedef WORD LANGID; |
||
245 | #endif |
||
246 | #define APPLICATION_ERROR_MASK 0x20000000 |
||
247 | #define ERROR_SEVERITY_SUCCESS 0x00000000 |
||
248 | #define ERROR_SEVERITY_INFORMATIONAL 0x40000000 |
||
249 | #define ERROR_SEVERITY_WARNING 0x80000000 |
||
250 | #define ERROR_SEVERITY_ERROR 0xC0000000 |
||
251 | |||
252 | #ifdef __ia64__ |
||
253 | __declspec(align(16)) |
||
254 | #endif |
||
255 | typedef struct _FLOAT128 { |
||
256 | __int64 LowPart; |
||
257 | __int64 HighPart; |
||
258 | } FLOAT128; |
||
259 | |||
260 | typedef FLOAT128 *PFLOAT128; |
||
261 | |||
262 | #define _ULONGLONG_ |
||
263 | #if((!(defined(_X86_) && !defined(__x86_64)) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))) |
||
264 | typedef __int64 LONGLONG; |
||
265 | typedef unsigned __int64 ULONGLONG; |
||
266 | |||
267 | #define MAXLONGLONG (0x7fffffffffffffff) |
||
268 | #else |
||
269 | |||
270 | typedef double LONGLONG; |
||
271 | typedef double ULONGLONG; |
||
272 | #endif |
||
273 | |||
274 | typedef LONGLONG *PLONGLONG; |
||
275 | typedef ULONGLONG *PULONGLONG; |
||
276 | |||
277 | typedef LONGLONG USN; |
||
278 | |||
279 | typedef union _LARGE_INTEGER { |
||
280 | struct { |
||
281 | DWORD LowPart; |
||
282 | LONG HighPart; |
||
283 | }; |
||
284 | struct { |
||
285 | DWORD LowPart; |
||
286 | LONG HighPart; |
||
287 | } u; |
||
288 | LONGLONG QuadPart; |
||
289 | } LARGE_INTEGER; |
||
290 | |||
291 | typedef LARGE_INTEGER *PLARGE_INTEGER; |
||
292 | |||
293 | typedef union _ULARGE_INTEGER { |
||
294 | struct { |
||
295 | DWORD LowPart; |
||
296 | DWORD HighPart; |
||
297 | }; |
||
298 | struct { |
||
299 | DWORD LowPart; |
||
300 | DWORD HighPart; |
||
301 | } u; |
||
302 | ULONGLONG QuadPart; |
||
303 | } ULARGE_INTEGER; |
||
304 | |||
305 | typedef ULARGE_INTEGER *PULARGE_INTEGER; |
||
306 | |||
307 | typedef struct _LUID { |
||
308 | DWORD LowPart; |
||
309 | LONG HighPart; |
||
310 | } LUID,*PLUID; |
||
311 | |||
312 | #define _DWORDLONG_ |
||
313 | typedef ULONGLONG DWORDLONG; |
||
314 | typedef DWORDLONG *PDWORDLONG; |
||
315 | |||
316 | #ifdef RC_INVOKED |
||
317 | #define Int32x32To64(a,b) ((LONGLONG)((LONG)(a)) *(LONGLONG)((LONG)(b))) |
||
318 | #define UInt32x32To64(a,b) ((ULONGLONG)((DWORD)(a)) *(ULONGLONG)((DWORD)(b))) |
||
319 | #define Int64ShrlMod32(a,b) ((ULONGLONG)(a) >> (b)) |
||
320 | #elif (defined(_X86_) && !defined(__x86_64)) |
||
321 | #define Int32x32To64(a,b) (LONGLONG)((LONGLONG)(LONG)(a) *(LONG)(b)) |
||
322 | #define UInt32x32To64(a,b) (ULONGLONG)((ULONGLONG)(DWORD)(a) *(DWORD)(b)) |
||
323 | #define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b)) |
||
324 | #elif defined(__ia64__) || defined(__x86_64) |
||
325 | #define Int32x32To64(a,b) ((LONGLONG)((LONG)(a)) *(LONGLONG)((LONG)(b))) |
||
326 | #define UInt32x32To64(a,b) ((ULONGLONG)((DWORD)(a)) *(ULONGLONG)((DWORD)(b))) |
||
327 | #define Int64ShrlMod32(a,b) ((ULONGLONG)(a) >> (b)) |
||
328 | #else |
||
329 | #error Must define a target architecture. |
||
330 | #endif |
||
331 | |||
332 | #define Int64ShraMod32(a,b) ((LONGLONG)(a) >> (b)) |
||
333 | #define Int64ShllMod32(a,b) ((ULONGLONG)(a) << (b)) |
||
334 | |||
335 | #ifdef __cplusplus |
||
336 | extern "C" { |
||
337 | #endif |
||
338 | |||
339 | #ifdef __x86_64 |
||
340 | |||
341 | #define RotateLeft8 _rotl8 |
||
342 | #define RotateLeft16 _rotl16 |
||
343 | #define RotateRight8 _rotr8 |
||
344 | #define RotateRight16 _rotr16 |
||
345 | |||
346 | unsigned char __cdecl _rotl8(unsigned char Value,unsigned char Shift); |
||
347 | unsigned short __cdecl _rotl16(unsigned short Value,unsigned char Shift); |
||
348 | unsigned char __cdecl _rotr8(unsigned char Value,unsigned char Shift); |
||
349 | unsigned short __cdecl _rotr16(unsigned short Value,unsigned char Shift); |
||
350 | #endif |
||
351 | |||
352 | #define RotateLeft32 _rotl |
||
353 | #define RotateLeft64 _rotl64 |
||
354 | #define RotateRight32 _rotr |
||
355 | #define RotateRight64 _rotr64 |
||
356 | |||
357 | unsigned int __cdecl _rotl(unsigned int Value,int Shift); |
||
358 | unsigned __int64 __cdecl _rotl64(unsigned __int64 Value,int Shift); |
||
359 | unsigned int __cdecl _rotr(unsigned int Value,int Shift); |
||
360 | unsigned __int64 __cdecl _rotr64(unsigned __int64 Value,int Shift); |
||
361 | #ifdef __cplusplus |
||
362 | } |
||
363 | #endif |
||
364 | |||
365 | #define ANSI_NULL ((CHAR)0) |
||
366 | #define UNICODE_NULL ((WCHAR)0) |
||
367 | #define UNICODE_STRING_MAX_BYTES ((WORD) 65534) |
||
368 | #define UNICODE_STRING_MAX_CHARS (32767) |
||
369 | |||
370 | #ifndef _BOOLEAN_ |
||
371 | #define _BOOLEAN_ |
||
372 | typedef BYTE BOOLEAN; |
||
373 | #endif |
||
374 | typedef BOOLEAN *PBOOLEAN; |
||
375 | |||
376 | typedef struct _LIST_ENTRY { |
||
377 | struct _LIST_ENTRY *Flink; |
||
378 | struct _LIST_ENTRY *Blink; |
||
379 | } LIST_ENTRY,*PLIST_ENTRY,*RESTRICTED_POINTER PRLIST_ENTRY; |
||
380 | |||
381 | typedef struct _SINGLE_LIST_ENTRY { |
||
382 | struct _SINGLE_LIST_ENTRY *Next; |
||
383 | } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY; |
||
384 | |||
385 | typedef struct LIST_ENTRY32 { |
||
386 | DWORD Flink; |
||
387 | DWORD Blink; |
||
388 | } LIST_ENTRY32; |
||
389 | typedef LIST_ENTRY32 *PLIST_ENTRY32; |
||
390 | |||
391 | typedef struct LIST_ENTRY64 { |
||
392 | ULONGLONG Flink; |
||
393 | ULONGLONG Blink; |
||
394 | } LIST_ENTRY64; |
||
395 | typedef LIST_ENTRY64 *PLIST_ENTRY64; |
||
396 | |||
397 | #include |
||
398 | |||
399 | #ifndef __OBJECTID_DEFINED |
||
400 | #define __OBJECTID_DEFINED |
||
401 | typedef struct _OBJECTID { |
||
402 | GUID Lineage; |
||
403 | DWORD Uniquifier; |
||
404 | } OBJECTID; |
||
405 | #endif |
||
406 | |||
407 | #define MINCHAR 0x80 |
||
408 | #define MAXCHAR 0x7f |
||
409 | #define MINSHORT 0x8000 |
||
410 | #define MAXSHORT 0x7fff |
||
411 | #define MINLONG 0x80000000 |
||
412 | #define MAXLONG 0x7fffffff |
||
413 | #define MAXBYTE 0xff |
||
414 | #define MAXWORD 0xffff |
||
415 | #define MAXDWORD 0xffffffff |
||
416 | |||
417 | #define FIELD_OFFSET(type,field) ((LONG)(LONG_PTR)&(((type *)0)->field)) |
||
418 | #define RTL_FIELD_SIZE(type,field) (sizeof(((type *)0)->field)) |
||
419 | #define RTL_SIZEOF_THROUGH_FIELD(type,field) (FIELD_OFFSET(type,field) + RTL_FIELD_SIZE(type,field)) |
||
420 | #define RTL_CONTAINS_FIELD(Struct,Size,Field) ((((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size))) |
||
421 | #define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0])) |
||
422 | #define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A) |
||
423 | |||
424 | #ifdef ENABLE_RTL_NUMBER_OF_V2 |
||
425 | #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A) |
||
426 | #else |
||
427 | #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A) |
||
428 | #endif |
||
429 | |||
430 | #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) |
||
431 | #define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A) |
||
432 | |||
433 | #define RTL_FIELD_TYPE(type,field) (((type*)0)->field) |
||
434 | #define RTL_NUMBER_OF_FIELD(type,field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type,field))) |
||
435 | #define RTL_PADDING_BETWEEN_FIELDS(T,F1,F2) ((FIELD_OFFSET(T,F2) > FIELD_OFFSET(T,F1)) ? (FIELD_OFFSET(T,F2) - FIELD_OFFSET(T,F1) - RTL_FIELD_SIZE(T,F1)) : (FIELD_OFFSET(T,F1) - FIELD_OFFSET(T,F2) - RTL_FIELD_SIZE(T,F2))) |
||
436 | |||
437 | #ifdef __cplusplus |
||
438 | #define RTL_CONST_CAST(type) const_cast |
||
439 | #else |
||
440 | #define RTL_CONST_CAST(type) (type) |
||
441 | #endif |
||
442 | |||
443 | #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) *8) |
||
444 | #define RTL_BITS_OF_FIELD(type,field) (RTL_BITS_OF(RTL_FIELD_TYPE(type,field))) |
||
445 | #define CONTAINING_RECORD(address,type,field) ((type *)((PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field))) |
||
446 | |||
447 | #define VER_SERVER_NT 0x80000000 |
||
448 | #define VER_WORKSTATION_NT 0x40000000 |
||
449 | #define VER_SUITE_SMALLBUSINESS 0x00000001 |
||
450 | #define VER_SUITE_ENTERPRISE 0x00000002 |
||
451 | #define VER_SUITE_BACKOFFICE 0x00000004 |
||
452 | #define VER_SUITE_COMMUNICATIONS 0x00000008 |
||
453 | #define VER_SUITE_TERMINAL 0x00000010 |
||
454 | #define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 |
||
455 | #define VER_SUITE_EMBEDDEDNT 0x00000040 |
||
456 | #define VER_SUITE_DATACENTER 0x00000080 |
||
457 | #define VER_SUITE_SINGLEUSERTS 0x00000100 |
||
458 | #define VER_SUITE_PERSONAL 0x00000200 |
||
459 | #define VER_SUITE_BLADE 0x00000400 |
||
460 | #define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800 |
||
461 | #define VER_SUITE_SECURITY_APPLIANCE 0x00001000 |
||
462 | #define VER_SUITE_STORAGE_SERVER 0x00002000 |
||
463 | #define VER_SUITE_COMPUTE_SERVER 0x00004000 |
||
464 | |||
465 | #define PRODUCT_UNDEFINED 0x0 |
||
466 | |||
467 | #define PRODUCT_ULTIMATE 0x1 |
||
468 | #define PRODUCT_HOME_BASIC 0x2 |
||
469 | #define PRODUCT_HOME_PREMIUM 0x3 |
||
470 | #define PRODUCT_ENTERPRISE 0x4 |
||
471 | #define PRODUCT_HOME_BASIC_N 0x5 |
||
472 | #define PRODUCT_BUSINESS 0x6 |
||
473 | #define PRODUCT_STANDARD_SERVER 0x7 |
||
474 | #define PRODUCT_DATACENTER_SERVER 0x8 |
||
475 | #define PRODUCT_SMALLBUSINESS_SERVER 0x9 |
||
476 | #define PRODUCT_ENTERPRISE_SERVER 0xa |
||
477 | #define PRODUCT_STARTER 0xb |
||
478 | #define PRODUCT_DATACENTER_SERVER_CORE 0xc |
||
479 | #define PRODUCT_STANDARD_SERVER_CORE 0xd |
||
480 | #define PRODUCT_ENTERPRISE_SERVER_CORE 0xe |
||
481 | #define PRODUCT_ENTERPRISE_SERVER_IA64 0xf |
||
482 | #define PRODUCT_BUSINESS_N 0x10 |
||
483 | #define PRODUCT_WEB_SERVER 0x11 |
||
484 | #define PRODUCT_CLUSTER_SERVER 0x12 |
||
485 | #define PRODUCT_HOME_SERVER 0x13 |
||
486 | #define PRODUCT_STORAGE_EXPRESS_SERVER 0x14 |
||
487 | #define PRODUCT_STORAGE_STANDARD_SERVER 0x15 |
||
488 | #define PRODUCT_STORAGE_WORKGROUP_SERVER 0x16 |
||
489 | #define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x17 |
||
490 | #define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x18 |
||
491 | #define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19 |
||
492 | |||
493 | #define PRODUCT_UNLICENSED 0xabcdabcd |
||
494 | |||
495 | #define LANG_NEUTRAL 0x00 |
||
496 | #define LANG_INVARIANT 0x7f |
||
497 | |||
498 | #define LANG_AFRIKAANS 0x36 |
||
499 | #define LANG_ALBANIAN 0x1c |
||
500 | #define LANG_ALSATIAN 0x84 |
||
501 | #define LANG_AMHARIC 0x5e |
||
502 | #define LANG_ARABIC 0x01 |
||
503 | #define LANG_ARMENIAN 0x2b |
||
504 | #define LANG_ASSAMESE 0x4d |
||
505 | #define LANG_AZERI 0x2c |
||
506 | #define LANG_BASHKIR 0x6d |
||
507 | #define LANG_BASQUE 0x2d |
||
508 | #define LANG_BELARUSIAN 0x23 |
||
509 | #define LANG_BENGALI 0x45 |
||
510 | #define LANG_BRETON 0x7e |
||
511 | #define LANG_BOSNIAN 0x1a |
||
512 | #define LANG_BOSNIAN_NEUTRAL 0x781a |
||
513 | #define LANG_BULGARIAN 0x02 |
||
514 | #define LANG_CATALAN 0x03 |
||
515 | #define LANG_CHINESE 0x04 |
||
516 | #define LANG_CHINESE_SIMPLIFIED 0x04 |
||
517 | #define LANG_CHINESE_TRADITIONAL 0x7c04 |
||
518 | #define LANG_CORSICAN 0x83 |
||
519 | #define LANG_CROATIAN 0x1a |
||
520 | #define LANG_CZECH 0x05 |
||
521 | #define LANG_DANISH 0x06 |
||
522 | #define LANG_DARI 0x8c |
||
523 | #define LANG_DIVEHI 0x65 |
||
524 | #define LANG_DUTCH 0x13 |
||
525 | #define LANG_ENGLISH 0x09 |
||
526 | #define LANG_ESTONIAN 0x25 |
||
527 | #define LANG_FAEROESE 0x38 |
||
528 | #define LANG_FARSI 0x29 |
||
529 | #define LANG_FILIPINO 0x64 |
||
530 | #define LANG_FINNISH 0x0b |
||
531 | #define LANG_FRENCH 0x0c |
||
532 | #define LANG_FRISIAN 0x62 |
||
533 | #define LANG_GALICIAN 0x56 |
||
534 | #define LANG_GEORGIAN 0x37 |
||
535 | #define LANG_GERMAN 0x07 |
||
536 | #define LANG_GREEK 0x08 |
||
537 | #define LANG_GREENLANDIC 0x6f |
||
538 | #define LANG_GUJARATI 0x47 |
||
539 | #define LANG_HAUSA 0x68 |
||
540 | #define LANG_HEBREW 0x0d |
||
541 | #define LANG_HINDI 0x39 |
||
542 | #define LANG_HUNGARIAN 0x0e |
||
543 | #define LANG_ICELANDIC 0x0f |
||
544 | #define LANG_IGBO 0x70 |
||
545 | #define LANG_INDONESIAN 0x21 |
||
546 | #define LANG_INUKTITUT 0x5d |
||
547 | #define LANG_IRISH 0x3c |
||
548 | #define LANG_ITALIAN 0x10 |
||
549 | #define LANG_JAPANESE 0x11 |
||
550 | #define LANG_KANNADA 0x4b |
||
551 | #define LANG_KASHMIRI 0x60 |
||
552 | #define LANG_KAZAK 0x3f |
||
553 | #define LANG_KHMER 0x53 |
||
554 | #define LANG_KICHE 0x86 |
||
555 | #define LANG_KINYARWANDA 0x87 |
||
556 | #define LANG_KONKANI 0x57 |
||
557 | #define LANG_KOREAN 0x12 |
||
558 | #define LANG_KYRGYZ 0x40 |
||
559 | #define LANG_LAO 0x54 |
||
560 | #define LANG_LATVIAN 0x26 |
||
561 | #define LANG_LITHUANIAN 0x27 |
||
562 | #define LANG_LOWER_SORBIAN 0x2e |
||
563 | #define LANG_LUXEMBOURGISH 0x6e |
||
564 | #define LANG_MACEDONIAN 0x2f |
||
565 | #define LANG_MALAY 0x3e |
||
566 | #define LANG_MALAYALAM 0x4c |
||
567 | #define LANG_MALTESE 0x3a |
||
568 | #define LANG_MANIPURI 0x58 |
||
569 | #define LANG_MAORI 0x81 |
||
570 | #define LANG_MAPUDUNGUN 0x7a |
||
571 | #define LANG_MARATHI 0x4e |
||
572 | #define LANG_MOHAWK 0x7c |
||
573 | #define LANG_MONGOLIAN 0x50 |
||
574 | #define LANG_NEPALI 0x61 |
||
575 | #define LANG_NORWEGIAN 0x14 |
||
576 | #define LANG_OCCITAN 0x82 |
||
577 | #define LANG_ORIYA 0x48 |
||
578 | #define LANG_PASHTO 0x63 |
||
579 | #define LANG_PERSIAN 0x29 |
||
580 | #define LANG_POLISH 0x15 |
||
581 | #define LANG_PORTUGUESE 0x16 |
||
582 | #define LANG_PUNJABI 0x46 |
||
583 | #define LANG_QUECHUA 0x6b |
||
584 | #define LANG_ROMANIAN 0x18 |
||
585 | #define LANG_RUSSIAN 0x19 |
||
586 | #define LANG_SAMI 0x3b |
||
587 | #define LANG_ROMANSH 0x17 |
||
588 | #define LANG_SANSKRIT 0x4f |
||
589 | #define LANG_SERBIAN 0x1a |
||
590 | #define LANG_SERBIAN_NEUTRAL 0x7c1a |
||
591 | #define LANG_SINDHI 0x59 |
||
592 | #define LANG_SINHALESE 0x5b |
||
593 | #define LANG_SLOVAK 0x1b |
||
594 | #define LANG_SLOVENIAN 0x24 |
||
595 | #define LANG_SOTHO 0x6c |
||
596 | #define LANG_SPANISH 0x0a |
||
597 | #define LANG_SWAHILI 0x41 |
||
598 | #define LANG_SWEDISH 0x1d |
||
599 | #define LANG_SYRIAC 0x5a |
||
600 | #define LANG_TAJIK 0x28 |
||
601 | #define LANG_TAMAZIGHT 0x5f |
||
602 | #define LANG_TAMIL 0x49 |
||
603 | #define LANG_TATAR 0x44 |
||
604 | #define LANG_TELUGU 0x4a |
||
605 | #define LANG_THAI 0x1e |
||
606 | #define LANG_TIBETAN 0x51 |
||
607 | #define LANG_TIGRIGNA 0x73 |
||
608 | #define LANG_TSWANA 0x32 |
||
609 | #define LANG_TURKISH 0x1f |
||
610 | #define LANG_TURKMEN 0x42 |
||
611 | #define LANG_UIGHUR 0x80 |
||
612 | #define LANG_UKRAINIAN 0x22 |
||
613 | #define LANG_UPPER_SORBIAN 0x2e |
||
614 | #define LANG_URDU 0x20 |
||
615 | #define LANG_UZBEK 0x43 |
||
616 | #define LANG_VIETNAMESE 0x2a |
||
617 | #define LANG_WELSH 0x52 |
||
618 | #define LANG_WOLOF 0x88 |
||
619 | #define LANG_XHOSA 0x34 |
||
620 | #define LANG_YAKUT 0x85 |
||
621 | #define LANG_YI 0x78 |
||
622 | #define LANG_YORUBA 0x6a |
||
623 | #define LANG_ZULU 0x35 |
||
624 | |||
625 | #define SUBLANG_NEUTRAL 0x0 |
||
626 | #define SUBLANG_DEFAULT 0x1 |
||
627 | #define SUBLANG_SYS_DEFAULT 0x2 |
||
628 | #define SUBLANG_CUSTOM_DEFAULT 0x3 |
||
629 | #define SUBLANG_CUSTOM_UNSPECIFIED 0x4 |
||
630 | #define SUBLANG_UI_CUSTOM_DEFAULT 0x5 |
||
631 | |||
632 | #define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 |
||
633 | #define SUBLANG_ARABIC_IRAQ 0x02 |
||
634 | #define SUBLANG_ARABIC_EGYPT 0x03 |
||
635 | #define SUBLANG_ARABIC_LIBYA 0x04 |
||
636 | #define SUBLANG_ARABIC_ALGERIA 0x05 |
||
637 | #define SUBLANG_ARABIC_MOROCCO 0x06 |
||
638 | #define SUBLANG_ARABIC_TUNISIA 0x07 |
||
639 | #define SUBLANG_ARABIC_OMAN 0x08 |
||
640 | #define SUBLANG_ARABIC_YEMEN 0x09 |
||
641 | #define SUBLANG_ARABIC_SYRIA 0x0a |
||
642 | #define SUBLANG_ARABIC_JORDAN 0x0b |
||
643 | #define SUBLANG_ARABIC_LEBANON 0x0c |
||
644 | #define SUBLANG_ARABIC_KUWAIT 0x0d |
||
645 | #define SUBLANG_ARABIC_UAE 0x0e |
||
646 | #define SUBLANG_ARABIC_BAHRAIN 0x0f |
||
647 | #define SUBLANG_ARABIC_QATAR 0x10 |
||
648 | #define SUBLANG_AZERI_LATIN 0x01 |
||
649 | #define SUBLANG_AZERI_CYRILLIC 0x02 |
||
650 | #define SUBLANG_CHINESE_TRADITIONAL 0x01 |
||
651 | #define SUBLANG_CHINESE_SIMPLIFIED 0x02 |
||
652 | #define SUBLANG_CHINESE_HONGKONG 0x03 |
||
653 | #define SUBLANG_CHINESE_SINGAPORE 0x04 |
||
654 | #define SUBLANG_CHINESE_MACAU 0x05 |
||
655 | #define SUBLANG_DUTCH 0x01 |
||
656 | #define SUBLANG_DUTCH_BELGIAN 0x02 |
||
657 | #define SUBLANG_ENGLISH_US 0x01 |
||
658 | #define SUBLANG_ENGLISH_UK 0x02 |
||
659 | #define SUBLANG_ENGLISH_AUS 0x03 |
||
660 | #define SUBLANG_ENGLISH_CAN 0x04 |
||
661 | #define SUBLANG_ENGLISH_NZ 0x05 |
||
662 | #define SUBLANG_ENGLISH_EIRE 0x06 |
||
663 | #define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 |
||
664 | #define SUBLANG_ENGLISH_JAMAICA 0x08 |
||
665 | #define SUBLANG_ENGLISH_CARIBBEAN 0x09 |
||
666 | #define SUBLANG_ENGLISH_BELIZE 0x0a |
||
667 | #define SUBLANG_ENGLISH_TRINIDAD 0x0b |
||
668 | #define SUBLANG_ENGLISH_ZIMBABWE 0x0c |
||
669 | #define SUBLANG_ENGLISH_PHILIPPINES 0x0d |
||
670 | #define SUBLANG_FRENCH 0x01 |
||
671 | #define SUBLANG_FRENCH_BELGIAN 0x02 |
||
672 | #define SUBLANG_FRENCH_CANADIAN 0x03 |
||
673 | #define SUBLANG_FRENCH_SWISS 0x04 |
||
674 | #define SUBLANG_FRENCH_LUXEMBOURG 0x05 |
||
675 | #define SUBLANG_FRENCH_MONACO 0x06 |
||
676 | #define SUBLANG_GERMAN 0x01 |
||
677 | #define SUBLANG_GERMAN_SWISS 0x02 |
||
678 | #define SUBLANG_GERMAN_AUSTRIAN 0x03 |
||
679 | #define SUBLANG_GERMAN_LUXEMBOURG 0x04 |
||
680 | #define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 |
||
681 | #define SUBLANG_ITALIAN 0x01 |
||
682 | #define SUBLANG_ITALIAN_SWISS 0x02 |
||
683 | #define SUBLANG_KASHMIRI_SASIA 0x02 |
||
684 | #define SUBLANG_KASHMIRI_INDIA 0x02 |
||
685 | #define SUBLANG_KOREAN 0x01 |
||
686 | #define SUBLANG_LITHUANIAN 0x01 |
||
687 | #define SUBLANG_MALAY_MALAYSIA 0x01 |
||
688 | #define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 |
||
689 | #define SUBLANG_NEPALI_INDIA 0x02 |
||
690 | #define SUBLANG_NORWEGIAN_BOKMAL 0x01 |
||
691 | #define SUBLANG_NORWEGIAN_NYNORSK 0x02 |
||
692 | #define SUBLANG_PORTUGUESE 0x02 |
||
693 | #define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 |
||
694 | #define SUBLANG_SERBIAN_LATIN 0x02 |
||
695 | #define SUBLANG_SERBIAN_CYRILLIC 0x03 |
||
696 | #define SUBLANG_SPANISH 0x01 |
||
697 | #define SUBLANG_SPANISH_MEXICAN 0x02 |
||
698 | #define SUBLANG_SPANISH_MODERN 0x03 |
||
699 | #define SUBLANG_SPANISH_GUATEMALA 0x04 |
||
700 | #define SUBLANG_SPANISH_COSTA_RICA 0x05 |
||
701 | #define SUBLANG_SPANISH_PANAMA 0x06 |
||
702 | #define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 |
||
703 | #define SUBLANG_SPANISH_VENEZUELA 0x08 |
||
704 | #define SUBLANG_SPANISH_COLOMBIA 0x09 |
||
705 | #define SUBLANG_SPANISH_PERU 0x0a |
||
706 | #define SUBLANG_SPANISH_ARGENTINA 0x0b |
||
707 | #define SUBLANG_SPANISH_ECUADOR 0x0c |
||
708 | #define SUBLANG_SPANISH_CHILE 0x0d |
||
709 | #define SUBLANG_SPANISH_URUGUAY 0x0e |
||
710 | #define SUBLANG_SPANISH_PARAGUAY 0x0f |
||
711 | #define SUBLANG_SPANISH_BOLIVIA 0x10 |
||
712 | #define SUBLANG_SPANISH_EL_SALVADOR 0x11 |
||
713 | #define SUBLANG_SPANISH_HONDURAS 0x12 |
||
714 | #define SUBLANG_SPANISH_NICARAGUA 0x13 |
||
715 | #define SUBLANG_SPANISH_PUERTO_RICO 0x14 |
||
716 | #define SUBLANG_SWEDISH 0x01 |
||
717 | #define SUBLANG_SWEDISH_FINLAND 0x02 |
||
718 | #define SUBLANG_URDU_PAKISTAN 0x01 |
||
719 | #define SUBLANG_URDU_INDIA 0x02 |
||
720 | #define SUBLANG_UZBEK_LATIN 0x01 |
||
721 | #define SUBLANG_UZBEK_CYRILLIC 0x02 |
||
722 | |||
723 | #define SORT_DEFAULT 0x0 |
||
724 | #define SORT_INVARIANT_MATH 0x1 |
||
725 | |||
726 | #define SORT_JAPANESE_XJIS 0x0 |
||
727 | #define SORT_JAPANESE_UNICODE 0x1 |
||
728 | #define SORT_JAPANESE_RADICALSTROKE 0x4 |
||
729 | |||
730 | #define SORT_CHINESE_BIG5 0x0 |
||
731 | #define SORT_CHINESE_PRCP 0x0 |
||
732 | #define SORT_CHINESE_UNICODE 0x1 |
||
733 | #define SORT_CHINESE_PRC 0x2 |
||
734 | #define SORT_CHINESE_BOPOMOFO 0x3 |
||
735 | |||
736 | #define SORT_KOREAN_KSC 0x0 |
||
737 | #define SORT_KOREAN_UNICODE 0x1 |
||
738 | |||
739 | #define SORT_GERMAN_PHONE_BOOK 0x1 |
||
740 | |||
741 | #define SORT_HUNGARIAN_DEFAULT 0x0 |
||
742 | #define SORT_HUNGARIAN_TECHNICAL 0x1 |
||
743 | |||
744 | #define SORT_GEORGIAN_TRADITIONAL 0x0 |
||
745 | #define SORT_GEORGIAN_MODERN 0x1 |
||
746 | |||
747 | #define MAKELANGID(p,s) ((((WORD)(s)) << 10) | (WORD)(p)) |
||
748 | #define PRIMARYLANGID(lgid) ((WORD)(lgid) & 0x3ff) |
||
749 | #define SUBLANGID(lgid) ((WORD)(lgid) >> 10) |
||
750 | |||
751 | #define NLS_VALID_LOCALE_MASK 0x000fffff |
||
752 | |||
753 | #define MAKELCID(lgid,srtid) ((DWORD)((((DWORD)((WORD)(srtid))) << 16) | ((DWORD)((WORD)(lgid))))) |
||
754 | #define MAKESORTLCID(lgid,srtid,ver) ((DWORD)((MAKELCID(lgid,srtid)) | (((DWORD)((WORD)(ver))) << 20))) |
||
755 | #define LANGIDFROMLCID(lcid) ((WORD)(lcid)) |
||
756 | #define SORTIDFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 16) & 0xf)) |
||
757 | #define SORTVERSIONFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 20) & 0xf)) |
||
758 | |||
759 | #define LOCALE_NAME_MAX_LENGTH 85 |
||
760 | #define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)) |
||
761 | #define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)) |
||
762 | |||
763 | #define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT,SORT_DEFAULT)) |
||
764 | #define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT,SORT_DEFAULT)) |
||
765 | |||
766 | #define LOCALE_NEUTRAL (MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)) |
||
767 | |||
768 | #define LOCALE_CUSTOM_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT)) |
||
769 | #define LOCALE_CUSTOM_UNSPECIFIED (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT)) |
||
770 | #define LOCALE_CUSTOM_UI_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT)) |
||
771 | |||
772 | #define LOCALE_INVARIANT (MAKELCID(MAKELANGID(LANG_INVARIANT,SUBLANG_NEUTRAL),SORT_DEFAULT)) |
||
773 | |||
774 | #define UNREFERENCED_PARAMETER(P) (P) |
||
775 | #define DBG_UNREFERENCED_PARAMETER(P) (P) |
||
776 | #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V) |
||
777 | |||
778 | #define DEFAULT_UNREACHABLE |
||
779 | |||
780 | #ifndef WIN32_NO_STATUS |
||
781 | #define STATUS_WAIT_0 ((DWORD)0x00000000L) |
||
782 | #define STATUS_ABANDONED_WAIT_0 ((DWORD)0x00000080L) |
||
783 | #define STATUS_USER_APC ((DWORD)0x000000C0L) |
||
784 | #define STATUS_TIMEOUT ((DWORD)0x00000102L) |
||
785 | #define STATUS_PENDING ((DWORD)0x00000103L) |
||
786 | #define DBG_EXCEPTION_HANDLED ((DWORD)0x00010001L) |
||
787 | #define DBG_CONTINUE ((DWORD)0x00010002L) |
||
788 | #define STATUS_SEGMENT_NOTIFICATION ((DWORD)0x40000005L) |
||
789 | #define DBG_TERMINATE_THREAD ((DWORD)0x40010003L) |
||
790 | #define DBG_TERMINATE_PROCESS ((DWORD)0x40010004L) |
||
791 | #define DBG_CONTROL_C ((DWORD)0x40010005L) |
||
792 | #define DBG_CONTROL_BREAK ((DWORD)0x40010008L) |
||
793 | #define DBG_COMMAND_EXCEPTION ((DWORD)0x40010009L) |
||
794 | #define STATUS_GUARD_PAGE_VIOLATION ((DWORD)0x80000001L) |
||
795 | #define STATUS_DATATYPE_MISALIGNMENT ((DWORD)0x80000002L) |
||
796 | #define STATUS_BREAKPOINT ((DWORD)0x80000003L) |
||
797 | #define STATUS_SINGLE_STEP ((DWORD)0x80000004L) |
||
798 | #define DBG_EXCEPTION_NOT_HANDLED ((DWORD)0x80010001L) |
||
799 | #define STATUS_ACCESS_VIOLATION ((DWORD)0xC0000005L) |
||
800 | #define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006L) |
||
801 | #define STATUS_INVALID_HANDLE ((DWORD)0xC0000008L) |
||
802 | #define STATUS_NO_MEMORY ((DWORD)0xC0000017L) |
||
803 | #define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001DL) |
||
804 | #define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD)0xC0000025L) |
||
805 | #define STATUS_INVALID_DISPOSITION ((DWORD)0xC0000026L) |
||
806 | #define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008CL) |
||
807 | #define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008DL) |
||
808 | #define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008EL) |
||
809 | #define STATUS_FLOAT_INEXACT_RESULT ((DWORD)0xC000008FL) |
||
810 | #define STATUS_FLOAT_INVALID_OPERATION ((DWORD)0xC0000090L) |
||
811 | #define STATUS_FLOAT_OVERFLOW ((DWORD)0xC0000091L) |
||
812 | #define STATUS_FLOAT_STACK_CHECK ((DWORD)0xC0000092L) |
||
813 | #define STATUS_FLOAT_UNDERFLOW ((DWORD)0xC0000093L) |
||
814 | #define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD)0xC0000094L) |
||
815 | #define STATUS_INTEGER_OVERFLOW ((DWORD)0xC0000095L) |
||
816 | #define STATUS_PRIVILEGED_INSTRUCTION ((DWORD)0xC0000096L) |
||
817 | #define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FDL) |
||
818 | #define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013AL) |
||
819 | #define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD)0xC00002B4L) |
||
820 | #define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD)0xC00002B5L) |
||
821 | #define STATUS_REG_NAT_CONSUMPTION ((DWORD)0xC00002C9L) |
||
822 | #define STATUS_SXS_EARLY_DEACTIVATION ((DWORD)0xC015000FL) |
||
823 | #define STATUS_SXS_INVALID_DEACTIVATION ((DWORD)0xC0150010L) |
||
824 | #endif |
||
825 | |||
826 | #define MAXIMUM_WAIT_OBJECTS 64 |
||
827 | #define MAXIMUM_SUSPEND_COUNT MAXCHAR |
||
828 | |||
829 | typedef ULONG_PTR KSPIN_LOCK; |
||
830 | typedef KSPIN_LOCK *PKSPIN_LOCK; |
||
831 | |||
832 | #ifdef _AMD64_ |
||
833 | |||
834 | #if defined(__x86_64) && !defined(RC_INVOKED) |
||
835 | |||
836 | #ifdef __cplusplus |
||
837 | extern "C" { |
||
838 | #endif |
||
839 | |||
840 | #define BitTest _bittest |
||
841 | #define BitTestAndComplement _bittestandcomplement |
||
842 | #define BitTestAndSet _bittestandset |
||
843 | #define BitTestAndReset _bittestandreset |
||
844 | #define InterlockedBitTestAndSet _interlockedbittestandset |
||
845 | #define InterlockedBitTestAndReset _interlockedbittestandreset |
||
846 | #define BitTest64 _bittest64 |
||
847 | #define BitTestAndComplement64 _bittestandcomplement64 |
||
848 | #define BitTestAndSet64 _bittestandset64 |
||
849 | #define BitTestAndReset64 _bittestandreset64 |
||
850 | #define InterlockedBitTestAndSet64 _interlockedbittestandset64 |
||
851 | #define InterlockedBitTestAndReset64 _interlockedbittestandreset64 |
||
852 | |||
853 | __CRT_INLINE BOOLEAN _bittest(LONG const *Base,LONG Offset) { |
||
854 | int old = 0; |
||
855 | __asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0 " |
||
856 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
857 | :"Ir" (Offset)); |
||
858 | return (BOOLEAN) (old!=0); |
||
859 | } |
||
860 | __CRT_INLINE BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset) { |
||
861 | int old = 0; |
||
862 | __asm__ __volatile__("btcl %2,%1\n\tsbbl %0,%0 " |
||
863 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
864 | :"Ir" (Offset)); |
||
865 | return (BOOLEAN) (old!=0); |
||
866 | } |
||
867 | __CRT_INLINE BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit) { |
||
868 | int old = 0; |
||
869 | __asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 " |
||
870 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
871 | :"Ir" (Bit)); |
||
872 | return (BOOLEAN) (old!=0); |
||
873 | } |
||
874 | __CRT_INLINE BOOLEAN _bittestandset(LONG *Base,LONG Offset) { |
||
875 | int old = 0; |
||
876 | __asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0 " |
||
877 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
878 | :"Ir" (Offset)); |
||
879 | return (BOOLEAN) (old!=0); |
||
880 | } |
||
881 | __CRT_INLINE BOOLEAN _bittestandreset(LONG *Base,LONG Offset) { |
||
882 | int old = 0; |
||
883 | __asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0 " |
||
884 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
885 | :"Ir" (Offset)); |
||
886 | return (BOOLEAN) (old!=0); |
||
887 | } |
||
888 | __CRT_INLINE BOOLEAN _interlockedbittestandset(LONG *Base,LONG Offset) { |
||
889 | int old = 0; |
||
890 | __asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 " |
||
891 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
892 | :"Ir" (Offset)); |
||
893 | return (BOOLEAN) (old!=0); |
||
894 | } |
||
895 | __CRT_INLINE BOOLEAN _interlockedbittestandreset(LONG *Base,LONG Offset) { |
||
896 | int old = 0; |
||
897 | __asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 " |
||
898 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
899 | :"Ir" (Offset)); |
||
900 | return (BOOLEAN) (old!=0); |
||
901 | } |
||
902 | __CRT_INLINE BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset) { |
||
903 | int old = 0; |
||
904 | __asm__ __volatile__("btq %2,%1\n\tsbbl %0,%0 " |
||
905 | :"=r" (old),"=m" ((*(volatile long long *) Base)) |
||
906 | :"Ir" (Offset)); |
||
907 | return (BOOLEAN) (old!=0); |
||
908 | } |
||
909 | __CRT_INLINE BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset) { |
||
910 | int old = 0; |
||
911 | __asm__ __volatile__("btcq %2,%1\n\tsbbl %0,%0 " |
||
912 | :"=r" (old),"=m" ((*(volatile long long *) Base)) |
||
913 | :"Ir" (Offset)); |
||
914 | return (BOOLEAN) (old!=0); |
||
915 | } |
||
916 | __CRT_INLINE BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset) { |
||
917 | int old = 0; |
||
918 | __asm__ __volatile__("btsq %2,%1\n\tsbbl %0,%0 " |
||
919 | :"=r" (old),"=m" ((*(volatile long long *) Base)) |
||
920 | :"Ir" (Offset)); |
||
921 | return (BOOLEAN) (old!=0); |
||
922 | } |
||
923 | __CRT_INLINE BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset) { |
||
924 | int old = 0; |
||
925 | __asm__ __volatile__("btrq %2,%1\n\tsbbl %0,%0 " |
||
926 | :"=r" (old),"=m" ((*(volatile long long *) Base)) |
||
927 | :"Ir" (Offset)); |
||
928 | return (BOOLEAN) (old!=0); |
||
929 | } |
||
930 | __CRT_INLINE BOOLEAN _interlockedbittestandset64(LONG64 *Base,LONG64 Offset) { |
||
931 | int old = 0; |
||
932 | __asm__ __volatile__("lock ; btsq %2,%1\n\tsbbl %0,%0 " |
||
933 | :"=r" (old),"=m" ((*(volatile long long *) Base)) |
||
934 | :"Ir" (Offset)); |
||
935 | return (BOOLEAN) (old!=0); |
||
936 | } |
||
937 | __CRT_INLINE BOOLEAN _interlockedbittestandreset64(LONG64 *Base,LONG64 Offset) { |
||
938 | int old = 0; |
||
939 | __asm__ __volatile__("lock ; btrq %2,%1\n\tsbbl %0,%0 " |
||
940 | :"=r" (old),"=m" ((*(volatile long long *) Base)) |
||
941 | :"Ir" (Offset)); |
||
942 | return (BOOLEAN) (old!=0); |
||
943 | } |
||
944 | #define BitScanForward _BitScanForward |
||
945 | #define BitScanReverse _BitScanReverse |
||
946 | #define BitScanForward64 _BitScanForward64 |
||
947 | #define BitScanReverse64 _BitScanReverse64 |
||
948 | |||
949 | __CRT_INLINE BOOLEAN _BitScanForward(DWORD *Index,DWORD Mask) { |
||
950 | __asm__ __volatile__("bsfl %1,%0" : "=r" (Mask),"=m" ((*(volatile long *)Index))); |
||
951 | return Mask!=0; |
||
952 | } |
||
953 | __CRT_INLINE BOOLEAN _BitScanReverse(DWORD *Index,DWORD Mask) { |
||
954 | __asm__ __volatile__("bsrl %1,%0" : "=r" (Mask),"=m" ((*(volatile long *)Index))); |
||
955 | return Mask!=0; |
||
956 | } |
||
957 | __CRT_INLINE BOOLEAN _BitScanForward64(DWORD *Index,DWORD64 Mask) { |
||
958 | __asm__ __volatile__("bsfq %1,%0" : "=r" (Mask),"=m" ((*(volatile long long *)Index))); |
||
959 | return Mask!=0; |
||
960 | } |
||
961 | __CRT_INLINE BOOLEAN _BitScanReverse64(DWORD *Index,DWORD64 Mask) { |
||
962 | __asm__ __volatile__("bsrq %1,%0" : "=r" (Mask),"=m" ((*(volatile long long *)Index))); |
||
963 | return Mask!=0; |
||
964 | } |
||
965 | |||
966 | #define InterlockedIncrement16 _InterlockedIncrement16 |
||
967 | #define InterlockedDecrement16 _InterlockedDecrement16 |
||
968 | #define InterlockedCompareExchange16 _InterlockedCompareExchange16 |
||
969 | |||
970 | #define InterlockedAnd _InterlockedAnd |
||
971 | #define InterlockedOr _InterlockedOr |
||
972 | #define InterlockedXor _InterlockedXor |
||
973 | #define InterlockedIncrement _InterlockedIncrement |
||
974 | #define InterlockedIncrementAcquire InterlockedIncrement |
||
975 | #define InterlockedIncrementRelease InterlockedIncrement |
||
976 | #define InterlockedDecrement _InterlockedDecrement |
||
977 | #define InterlockedDecrementAcquire InterlockedDecrement |
||
978 | #define InterlockedDecrementRelease InterlockedDecrement |
||
979 | #define InterlockedAdd _InterlockedAdd |
||
980 | #define InterlockedExchange _InterlockedExchange |
||
981 | #define InterlockedExchangeAdd _InterlockedExchangeAdd |
||
982 | #define InterlockedCompareExchange _InterlockedCompareExchange |
||
983 | #define InterlockedCompareExchangeAcquire InterlockedCompareExchange |
||
984 | #define InterlockedCompareExchangeRelease InterlockedCompareExchange |
||
985 | |||
986 | #define InterlockedAnd64 _InterlockedAnd64 |
||
987 | #define InterlockedAndAffinity InterlockedAnd64 |
||
988 | #define InterlockedOr64 _InterlockedOr64 |
||
989 | #define InterlockedOrAffinity InterlockedOr64 |
||
990 | #define InterlockedXor64 _InterlockedXor64 |
||
991 | #define InterlockedIncrement64 _InterlockedIncrement64 |
||
992 | #define InterlockedDecrement64 _InterlockedDecrement64 |
||
993 | #define InterlockedAdd64 _InterlockedAdd64 |
||
994 | #define InterlockedExchange64 _InterlockedExchange64 |
||
995 | #define InterlockedExchangeAcquire64 InterlockedExchange64 |
||
996 | #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 |
||
997 | #define InterlockedCompareExchange64 _InterlockedCompareExchange64 |
||
998 | #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 |
||
999 | #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 |
||
1000 | |||
1001 | #define InterlockedExchangePointer _InterlockedExchangePointer |
||
1002 | #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer |
||
1003 | #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer |
||
1004 | #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer |
||
1005 | |||
1006 | #define InterlockedExchangeAddSizeT(a,b) InterlockedExchangeAdd64((LONG64 *)a,b) |
||
1007 | #define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a) |
||
1008 | #define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a) |
||
1009 | |||
1010 | __CRT_INLINE SHORT InterlockedIncrement16(SHORT volatile *Addend) { |
||
1011 | unsigned char c; |
||
1012 | unsigned char s; |
||
1013 | __asm__ __volatile__( |
||
1014 | "lock ; addw $1,%0; sete %1 ; sets %2" |
||
1015 | :"=m" (*Addend), "=qm" (c), "=qm" (s) |
||
1016 | :"m" (*Addend) : "memory"); |
||
1017 | return (c != 0 ? 0 : (s != 0 ? -1 : 1)); |
||
1018 | } |
||
1019 | __CRT_INLINE SHORT InterlockedDecrement16(SHORT volatile *Addend) { |
||
1020 | unsigned char c; |
||
1021 | unsigned char s; |
||
1022 | __asm__ __volatile__( |
||
1023 | "lock ; subw $1,%0; sete %1 ; sets %2" |
||
1024 | :"=m" (*Addend), "=qm" (c), "=qm" (s) |
||
1025 | :"m" (*Addend) : "memory"); |
||
1026 | return (c != 0 ? 0 : (s != 0 ? -1 : 1)); |
||
1027 | } |
||
1028 | __CRT_INLINE SHORT InterlockedCompareExchange16(SHORT volatile *Destination,SHORT ExChange,SHORT Comperand) { |
||
1029 | SHORT prev; |
||
1030 | __asm__ __volatile__("lock ; cmpxchgw %w1,%2" |
||
1031 | :"=a"(prev) |
||
1032 | :"q"(ExChange), "m"(*Destination), "0"(Comperand) |
||
1033 | : "memory"); |
||
1034 | return prev; |
||
1035 | } |
||
1036 | __CRT_INLINE LONG InterlockedAnd(LONG volatile *Destination,LONG Value) { |
||
1037 | __asm__ __volatile__("lock ; andl %0,%1" |
||
1038 | : :"r"(Value),"m"(*Destination) |
||
1039 | : "memory"); |
||
1040 | return *Destination; |
||
1041 | } |
||
1042 | __CRT_INLINE LONG InterlockedOr(LONG volatile *Destination,LONG Value) { |
||
1043 | __asm__ __volatile__("lock ; orl %0,%1" |
||
1044 | : : "r"(Value),"m"(*Destination) : "memory"); |
||
1045 | return *Destination; |
||
1046 | } |
||
1047 | __CRT_INLINE LONG InterlockedXor(LONG volatile *Destination,LONG Value) { |
||
1048 | __asm__ __volatile__("lock ; xorl %0,%1" |
||
1049 | : : "r"(Value),"m"(*Destination) : "memory"); |
||
1050 | return *Destination; |
||
1051 | } |
||
1052 | // $$$$ |
||
1053 | __CRT_INLINE LONG64 InterlockedAnd64(LONG64 volatile *Destination,LONG64 Value) { |
||
1054 | __asm__ __volatile__("lock ; andq %0,%1" |
||
1055 | : : "r"(Value),"m"(*Destination) : "memory"); |
||
1056 | return *Destination; |
||
1057 | } |
||
1058 | __CRT_INLINE LONG64 InterlockedOr64(LONG64 volatile *Destination,LONG64 Value) { |
||
1059 | __asm__ __volatile__("lock ; orq %0,%1" |
||
1060 | : : "r"(Value),"m"(*Destination) : "memory"); |
||
1061 | return *Destination; |
||
1062 | } |
||
1063 | __CRT_INLINE LONG64 InterlockedXor64(LONG64 volatile *Destination,LONG64 Value) { |
||
1064 | __asm__ __volatile__("lock ; xorq %0,%1" |
||
1065 | : : "r"(Value),"m"(*Destination) : "memory"); |
||
1066 | return *Destination; |
||
1067 | } |
||
1068 | __CRT_INLINE LONG InterlockedIncrement(LONG volatile *Addend) { |
||
1069 | unsigned char c; |
||
1070 | unsigned char s; |
||
1071 | __asm__ __volatile__( |
||
1072 | "lock ; addl $1,%0; sete %1 ; sets %2" |
||
1073 | :"=m" (*Addend), "=qm" (c), "=qm" (s) |
||
1074 | :"m" (*Addend) : "memory"); |
||
1075 | return (c != 0 ? 0 : (s != 0 ? -1 : 1)); |
||
1076 | } |
||
1077 | __CRT_INLINE LONG InterlockedDecrement(LONG volatile *Addend) { |
||
1078 | unsigned char c; |
||
1079 | unsigned char s; |
||
1080 | __asm__ __volatile__( |
||
1081 | "lock ; subl $1,%0; sete %1 ; sets %2" |
||
1082 | :"=m" (*Addend), "=qm" (c), "=qm" (s) |
||
1083 | :"m" (*Addend) : "memory"); |
||
1084 | return (c != 0 ? 0 : (s != 0 ? -1 : 1)); |
||
1085 | } |
||
1086 | __CRT_INLINE LONG InterlockedExchange(LONG volatile *Target,LONG Value) { |
||
1087 | __asm__ __volatile("lock ; xchgl %0,%1" |
||
1088 | : "=r"(Value) |
||
1089 | : "m"(*Target),"0"(Value) |
||
1090 | : "memory"); |
||
1091 | return Value; |
||
1092 | } |
||
1093 | LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value); |
||
1094 | |||
1095 | #ifndef _X86AMD64_ |
||
1096 | __CRT_INLINE LONG InterlockedAdd(LONG volatile *Addend,LONG Value) { return InterlockedExchangeAdd(Addend,Value) + Value; } |
||
1097 | #endif |
||
1098 | __CRT_INLINE LONG InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand) { |
||
1099 | LONG prev; |
||
1100 | __asm__ __volatile__("lock ; cmpxchgl %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory"); |
||
1101 | return prev; |
||
1102 | } |
||
1103 | __CRT_INLINE LONG64 InterlockedIncrement64(LONG64 volatile *Addend) { |
||
1104 | unsigned char c; |
||
1105 | unsigned char s; |
||
1106 | __asm__ __volatile__( |
||
1107 | "lock ; addq $1,%0; sete %1 ; sets %2" |
||
1108 | :"=m" (*Addend), "=qm" (c), "=qm" (s) |
||
1109 | :"m" (*Addend) : "memory"); |
||
1110 | return (c != 0 ? 0 : (s != 0 ? -1 : 1)); |
||
1111 | } |
||
1112 | __CRT_INLINE LONG64 InterlockedDecrement64(LONG64 volatile *Addend) { |
||
1113 | unsigned char c; |
||
1114 | unsigned char s; |
||
1115 | __asm__ __volatile__( |
||
1116 | "lock ; subq $1,%0; sete %1 ; sets %2" |
||
1117 | :"=m" (*Addend), "=qm" (c), "=qm" (s) |
||
1118 | :"m" (*Addend) : "memory"); |
||
1119 | return (c != 0 ? 0 : (s != 0 ? -1 : 1)); |
||
1120 | } |
||
1121 | __CRT_INLINE LONG64 InterlockedExchange64(LONG64 volatile *Target,LONG64 Value) { |
||
1122 | __asm__ __volatile("lock ; xchgq %0,%1" |
||
1123 | : "=r"(Value) |
||
1124 | : "m"(*Target),"0"(Value) |
||
1125 | : "memory"); |
||
1126 | return Value; |
||
1127 | } |
||
1128 | LONG64 InterlockedExchangeAdd64(LONG64 volatile *Addend,LONG64 Value); |
||
1129 | |||
1130 | #ifndef _X86AMD64_ |
||
1131 | __CRT_INLINE LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value) { return InterlockedExchangeAdd64(Addend,Value) + Value; } |
||
1132 | #endif |
||
1133 | |||
1134 | __CRT_INLINE LONG64 InterlockedCompareExchange64(LONG64 volatile *Destination,LONG64 ExChange,LONG64 Comperand) { |
||
1135 | LONG64 prev; |
||
1136 | __asm__ __volatile__("lock ; cmpxchgq %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory"); |
||
1137 | return prev; |
||
1138 | } |
||
1139 | __CRT_INLINE PVOID InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand) { |
||
1140 | PVOID prev; |
||
1141 | __asm__ __volatile__("lock ; cmpxchgq %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory"); |
||
1142 | return prev; |
||
1143 | } |
||
1144 | __CRT_INLINE PVOID InterlockedExchangePointer(PVOID volatile *Target,PVOID Value) { |
||
1145 | __asm__ __volatile("lock ; xchgq %0,%1" |
||
1146 | : "=r"(Value) |
||
1147 | : "m"(*Target),"0"(Value) |
||
1148 | : "memory"); |
||
1149 | return Value; |
||
1150 | } |
||
1151 | |||
1152 | #define CacheLineFlush(Address) _mm_clflush(Address) |
||
1153 | |||
1154 | VOID _ReadWriteBarrier(VOID); |
||
1155 | |||
1156 | #define FastFence __faststorefence |
||
1157 | #define LoadFence _mm_lfence |
||
1158 | #define MemoryFence _mm_mfence |
||
1159 | #define StoreFence _mm_sfence |
||
1160 | |||
1161 | VOID __faststorefence(VOID); |
||
1162 | VOID _m_prefetchw(volatile CONST VOID *Source); |
||
1163 | |||
1164 | //!__TINYC__: #include |
||
1165 | |||
1166 | #define YieldProcessor _mm_pause |
||
1167 | #define MemoryBarrier __faststorefence |
||
1168 | #define PreFetchCacheLine(l,a) _mm_prefetch((CHAR CONST *) a,l) |
||
1169 | #define PrefetchForWrite(p) _m_prefetchw(p) |
||
1170 | #define ReadForWriteAccess(p) (_m_prefetchw(p),*(p)) |
||
1171 | |||
1172 | #define PF_TEMPORAL_LEVEL_1 _MM_HINT_T0 |
||
1173 | #define PF_TEMPORAL_LEVEL_2 _MM_HINT_T1 |
||
1174 | #define PF_TEMPORAL_LEVEL_3 _MM_HINT_T2 |
||
1175 | #define PF_NON_TEMPORAL_LEVEL_ALL _MM_HINT_NTA |
||
1176 | |||
1177 | #define ReadMxCsr _mm_getcsr |
||
1178 | #define WriteMxCsr _mm_setcsr |
||
1179 | |||
1180 | VOID __int2c(VOID); |
||
1181 | |||
1182 | #define DbgRaiseAssertionFailure() __int2c() |
||
1183 | #define GetCallersEflags() __getcallerseflags() |
||
1184 | |||
1185 | unsigned __int32 __getcallerseflags(VOID); |
||
1186 | |||
1187 | #define GetSegmentLimit __segmentlimit |
||
1188 | |||
1189 | DWORD __segmentlimit(DWORD Selector); |
||
1190 | |||
1191 | #define ReadTimeStampCounter() __rdtsc() |
||
1192 | |||
1193 | DWORD64 __rdtsc(VOID); |
||
1194 | VOID __movsb(PBYTE Destination,BYTE const *Source,SIZE_T Count); |
||
1195 | VOID __movsw(PWORD Destination,WORD const *Source,SIZE_T Count); |
||
1196 | VOID __movsd(PDWORD Destination,DWORD const *Source,SIZE_T Count); |
||
1197 | VOID __movsq(PDWORD64 Destination,DWORD64 const *Source,SIZE_T Count); |
||
1198 | VOID __stosb(PBYTE Destination,BYTE Value,SIZE_T Count); |
||
1199 | VOID __stosw(PWORD Destination,WORD Value,SIZE_T Count); |
||
1200 | VOID __stosd(PDWORD Destination,DWORD Value,SIZE_T Count); |
||
1201 | VOID __stosq(PDWORD64 Destination,DWORD64 Value,SIZE_T Count); |
||
1202 | |||
1203 | #define MultiplyHigh __mulh |
||
1204 | #define UnsignedMultiplyHigh __umulh |
||
1205 | |||
1206 | LONGLONG MultiplyHigh(LONGLONG Multiplier,LONGLONG Multiplicand); |
||
1207 | ULONGLONG UnsignedMultiplyHigh(ULONGLONG Multiplier,ULONGLONG Multiplicand); |
||
1208 | |||
1209 | #define ShiftLeft128 __shiftleft128 |
||
1210 | #define ShiftRight128 __shiftright128 |
||
1211 | |||
1212 | DWORD64 ShiftLeft128(DWORD64 LowPart,DWORD64 HighPart,BYTE Shift); |
||
1213 | DWORD64 ShiftRight128(DWORD64 LowPart,DWORD64 HighPart,BYTE Shift); |
||
1214 | |||
1215 | #define Multiply128 _mul128 |
||
1216 | |||
1217 | LONG64 Multiply128(LONG64 Multiplier,LONG64 Multiplicand,LONG64 *HighProduct); |
||
1218 | |||
1219 | #define UnsignedMultiply128 _umul128 |
||
1220 | |||
1221 | DWORD64 UnsignedMultiply128(DWORD64 Multiplier,DWORD64 Multiplicand,DWORD64 *HighProduct); |
||
1222 | |||
1223 | __CRT_INLINE LONG64 MultiplyExtract128(LONG64 Multiplier,LONG64 Multiplicand,BYTE Shift) { |
||
1224 | LONG64 extractedProduct; |
||
1225 | LONG64 highProduct; |
||
1226 | LONG64 lowProduct; |
||
1227 | lowProduct = Multiply128(Multiplier,Multiplicand,&highProduct); |
||
1228 | extractedProduct = (LONG64)ShiftRight128((LONG64)lowProduct,(LONG64)highProduct,Shift); |
||
1229 | return extractedProduct; |
||
1230 | } |
||
1231 | |||
1232 | __CRT_INLINE DWORD64 UnsignedMultiplyExtract128(DWORD64 Multiplier,DWORD64 Multiplicand,BYTE Shift) { |
||
1233 | DWORD64 extractedProduct; |
||
1234 | DWORD64 highProduct; |
||
1235 | DWORD64 lowProduct; |
||
1236 | lowProduct = UnsignedMultiply128(Multiplier,Multiplicand,&highProduct); |
||
1237 | extractedProduct = ShiftRight128(lowProduct,highProduct,Shift); |
||
1238 | return extractedProduct; |
||
1239 | } |
||
1240 | |||
1241 | __CRT_INLINE BYTE __readgsbyte(DWORD Offset) { |
||
1242 | BYTE ret; |
||
1243 | __asm__ volatile ("movb %%gs:%1,%0" |
||
1244 | : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1245 | return ret; |
||
1246 | } |
||
1247 | __CRT_INLINE WORD __readgsword(DWORD Offset) { |
||
1248 | WORD ret; |
||
1249 | __asm__ volatile ("movw %%gs:%1,%0" |
||
1250 | : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1251 | return ret; |
||
1252 | } |
||
1253 | __CRT_INLINE DWORD __readgsdword(DWORD Offset) { |
||
1254 | DWORD ret; |
||
1255 | __asm__ volatile ("movl %%gs:%1,%0" |
||
1256 | : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1257 | return ret; |
||
1258 | } |
||
1259 | __CRT_INLINE DWORD64 __readgsqword(DWORD Offset) { |
||
1260 | void *ret; |
||
1261 | __asm__ volatile ("movq %%gs:%1,%0" |
||
1262 | : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1263 | return (DWORD64) ret; |
||
1264 | } |
||
1265 | __CRT_INLINE VOID __writegsbyte(DWORD Offset,BYTE Data) { |
||
1266 | __asm__ volatile ("movb %0,%%gs:%1" |
||
1267 | : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1268 | } |
||
1269 | __CRT_INLINE VOID __writegsword(DWORD Offset,WORD Data) { |
||
1270 | __asm__ volatile ("movw %0,%%gs:%1" |
||
1271 | : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1272 | } |
||
1273 | __CRT_INLINE VOID __writegsdword(DWORD Offset,DWORD Data) { |
||
1274 | __asm__ volatile ("movl %0,%%gs:%1" |
||
1275 | : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1276 | } |
||
1277 | __CRT_INLINE VOID __writegsqword(DWORD Offset,DWORD64 Data) { |
||
1278 | __asm__ volatile ("movq %0,%%gs:%1" |
||
1279 | : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset))); |
||
1280 | } |
||
1281 | |||
1282 | #ifdef __cplusplus |
||
1283 | } |
||
1284 | #endif |
||
1285 | #endif |
||
1286 | |||
1287 | #define EXCEPTION_READ_FAULT 0 |
||
1288 | #define EXCEPTION_WRITE_FAULT 1 |
||
1289 | #define EXCEPTION_EXECUTE_FAULT 8 |
||
1290 | |||
1291 | #if !defined(RC_INVOKED) |
||
1292 | |||
1293 | #define CONTEXT_AMD64 0x100000 |
||
1294 | |||
1295 | #define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L) |
||
1296 | #define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L) |
||
1297 | #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L) |
||
1298 | #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) |
||
1299 | #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) |
||
1300 | |||
1301 | #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) |
||
1302 | #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) |
||
1303 | |||
1304 | #define CONTEXT_EXCEPTION_ACTIVE 0x8000000 |
||
1305 | #define CONTEXT_SERVICE_ACTIVE 0x10000000 |
||
1306 | #define CONTEXT_EXCEPTION_REQUEST 0x40000000 |
||
1307 | #define CONTEXT_EXCEPTION_REPORTING 0x80000000 |
||
1308 | #endif |
||
1309 | |||
1310 | #define INITIAL_MXCSR 0x1f80 |
||
1311 | #define INITIAL_FPCSR 0x027f |
||
1312 | |||
1313 | typedef DECLSPEC_ALIGN(16) struct _M128A { |
||
1314 | ULONGLONG Low; |
||
1315 | LONGLONG High; |
||
1316 | } M128A,*PM128A; |
||
1317 | |||
1318 | typedef struct _XMM_SAVE_AREA32 { |
||
1319 | WORD ControlWord; |
||
1320 | WORD StatusWord; |
||
1321 | BYTE TagWord; |
||
1322 | BYTE Reserved1; |
||
1323 | WORD ErrorOpcode; |
||
1324 | DWORD ErrorOffset; |
||
1325 | WORD ErrorSelector; |
||
1326 | WORD Reserved2; |
||
1327 | DWORD DataOffset; |
||
1328 | WORD DataSelector; |
||
1329 | WORD Reserved3; |
||
1330 | DWORD MxCsr; |
||
1331 | DWORD MxCsr_Mask; |
||
1332 | M128A FloatRegisters[8]; |
||
1333 | M128A XmmRegisters[16]; |
||
1334 | BYTE Reserved4[96]; |
||
1335 | } XMM_SAVE_AREA32,*PXMM_SAVE_AREA32; |
||
1336 | |||
1337 | #define LEGACY_SAVE_AREA_LENGTH sizeof(XMM_SAVE_AREA32) |
||
1338 | |||
1339 | typedef DECLSPEC_ALIGN(16) struct _CONTEXT { |
||
1340 | DWORD64 P1Home; |
||
1341 | DWORD64 P2Home; |
||
1342 | DWORD64 P3Home; |
||
1343 | DWORD64 P4Home; |
||
1344 | DWORD64 P5Home; |
||
1345 | DWORD64 P6Home; |
||
1346 | DWORD ContextFlags; |
||
1347 | DWORD MxCsr; |
||
1348 | WORD SegCs; |
||
1349 | WORD SegDs; |
||
1350 | WORD SegEs; |
||
1351 | WORD SegFs; |
||
1352 | WORD SegGs; |
||
1353 | WORD SegSs; |
||
1354 | DWORD EFlags; |
||
1355 | DWORD64 Dr0; |
||
1356 | DWORD64 Dr1; |
||
1357 | DWORD64 Dr2; |
||
1358 | DWORD64 Dr3; |
||
1359 | DWORD64 Dr6; |
||
1360 | DWORD64 Dr7; |
||
1361 | DWORD64 Rax; |
||
1362 | DWORD64 Rcx; |
||
1363 | DWORD64 Rdx; |
||
1364 | DWORD64 Rbx; |
||
1365 | DWORD64 Rsp; |
||
1366 | DWORD64 Rbp; |
||
1367 | DWORD64 Rsi; |
||
1368 | DWORD64 Rdi; |
||
1369 | DWORD64 R8; |
||
1370 | DWORD64 R9; |
||
1371 | DWORD64 R10; |
||
1372 | DWORD64 R11; |
||
1373 | DWORD64 R12; |
||
1374 | DWORD64 R13; |
||
1375 | DWORD64 R14; |
||
1376 | DWORD64 R15; |
||
1377 | DWORD64 Rip; |
||
1378 | union { |
||
1379 | XMM_SAVE_AREA32 FltSave; |
||
1380 | XMM_SAVE_AREA32 FloatSave; |
||
1381 | struct { |
||
1382 | M128A Header[2]; |
||
1383 | M128A Legacy[8]; |
||
1384 | M128A Xmm0; |
||
1385 | M128A Xmm1; |
||
1386 | M128A Xmm2; |
||
1387 | M128A Xmm3; |
||
1388 | M128A Xmm4; |
||
1389 | M128A Xmm5; |
||
1390 | M128A Xmm6; |
||
1391 | M128A Xmm7; |
||
1392 | M128A Xmm8; |
||
1393 | M128A Xmm9; |
||
1394 | M128A Xmm10; |
||
1395 | M128A Xmm11; |
||
1396 | M128A Xmm12; |
||
1397 | M128A Xmm13; |
||
1398 | M128A Xmm14; |
||
1399 | M128A Xmm15; |
||
1400 | }; |
||
1401 | }; |
||
1402 | M128A VectorRegister[26]; |
||
1403 | DWORD64 VectorControl; |
||
1404 | DWORD64 DebugControl; |
||
1405 | DWORD64 LastBranchToRip; |
||
1406 | DWORD64 LastBranchFromRip; |
||
1407 | DWORD64 LastExceptionToRip; |
||
1408 | DWORD64 LastExceptionFromRip; |
||
1409 | } CONTEXT,*PCONTEXT; |
||
1410 | |||
1411 | #define RUNTIME_FUNCTION_INDIRECT 0x1 |
||
1412 | |||
1413 | typedef struct _RUNTIME_FUNCTION { |
||
1414 | DWORD BeginAddress; |
||
1415 | DWORD EndAddress; |
||
1416 | DWORD UnwindData; |
||
1417 | } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION; |
||
1418 | |||
1419 | typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context); |
||
1420 | typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions); |
||
1421 | |||
1422 | #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" |
||
1423 | |||
1424 | NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord,struct _EXCEPTION_RECORD *ExceptionRecord); |
||
1425 | NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable(PRUNTIME_FUNCTION FunctionTable,DWORD EntryCount,DWORD64 BaseAddress); |
||
1426 | NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback(DWORD64 TableIdentifier,DWORD64 BaseAddress,DWORD Length,PGET_RUNTIME_FUNCTION_CALLBACK Callback,PVOID Context,PCWSTR OutOfProcessCallbackDll); |
||
1427 | NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable(PRUNTIME_FUNCTION FunctionTable); |
||
1428 | #endif |
||
1429 | |||
1430 | #ifdef I_X86_ |
||
1431 | #if(defined(_X86_) && !defined(__x86_64)) && !defined(RC_INVOKED) |
||
1432 | #ifdef __cplusplus |
||
1433 | extern "C" { |
||
1434 | #endif |
||
1435 | |||
1436 | __CRT_INLINE BOOLEAN InterlockedBitTestAndSet(LONG *Base,LONG Bit) { |
||
1437 | int old = 0; |
||
1438 | __asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 " |
||
1439 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
1440 | :"Ir" (Bit)); |
||
1441 | return (BOOLEAN) (old!=0); |
||
1442 | } |
||
1443 | |||
1444 | __CRT_INLINE BOOLEAN InterlockedBitTestAndReset(LONG *Base,LONG Bit) { |
||
1445 | int old = 0; |
||
1446 | __asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 " |
||
1447 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
1448 | :"Ir" (Bit)); |
||
1449 | return (BOOLEAN) (old!=0); |
||
1450 | } |
||
1451 | |||
1452 | __CRT_INLINE BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit) { |
||
1453 | int old = 0; |
||
1454 | __asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 " |
||
1455 | :"=r" (old),"=m" ((*(volatile long *) Base)) |
||
1456 | :"Ir" (Bit)); |
||
1457 | return (BOOLEAN) (old!=0); |
||
1458 | } |
||
1459 | |||
1460 | #ifdef _PREFIX_ |
||
1461 | BYTE __readfsbyte(DWORD Offset); |
||
1462 | WORD __readfsword(DWORD Offset); |
||
1463 | DWORD __readfsdword(DWORD Offset); |
||
1464 | VOID __writefsbyte(DWORD Offset,BYTE Data); |
||
1465 | VOID __writefsword(DWORD Offset,WORD Data); |
||
1466 | VOID __writefsdword(DWORD Offset,DWORD Data); |
||
1467 | #endif |
||
1468 | |||
1469 | #ifdef __cplusplus |
||
1470 | } |
||
1471 | #endif |
||
1472 | #endif |
||
1473 | |||
1474 | #if(defined(_X86_) && !defined(__x86_64)) |
||
1475 | __CRT_INLINE VOID MemoryBarrier(VOID) { |
||
1476 | LONG Barrier; |
||
1477 | __asm__ __volatile__("xchgl %eax,%0 " |
||
1478 | :"=r" (Barrier)); |
||
1479 | } |
||
1480 | #define YieldProcessor() __asm__ __volatile__("rep nop "); |
||
1481 | |||
1482 | #define PreFetchCacheLine(l,a) |
||
1483 | #define ReadForWriteAccess(p) (*(p)) |
||
1484 | |||
1485 | #define PF_TEMPORAL_LEVEL_1 |
||
1486 | #define PF_NON_TEMPORAL_LEVEL_ALL |
||
1487 | |||
1488 | __CRT_INLINE VOID DbgRaiseAssertionFailure(void) { |
||
1489 | __asm__ __volatile__("int 0x2c "); |
||
1490 | } |
||
1491 | PVOID GetCurrentFiber(void); |
||
1492 | __CRT_INLINE PVOID GetCurrentFiber(void) |
||
1493 | { |
||
1494 | void *ret; |
||
1495 | __asm__ volatile ("movl %%fs:0x10,%0" |
||
1496 | : "=r" (ret)); |
||
1497 | return ret; |
||
1498 | } |
||
1499 | PVOID GetFiberData(void); |
||
1500 | __CRT_INLINE PVOID GetFiberData(void) |
||
1501 | { |
||
1502 | void *ret; |
||
1503 | __asm__ volatile ("movl %%fs:0x10,%0\n" |
||
1504 | "movl (%0),%0" |
||
1505 | : "=r" (ret)); |
||
1506 | return ret; |
||
1507 | } |
||
1508 | #endif |
||
1509 | |||
1510 | #define EXCEPTION_READ_FAULT 0 |
||
1511 | #define EXCEPTION_WRITE_FAULT 1 |
||
1512 | #define EXCEPTION_EXECUTE_FAULT 8 |
||
1513 | |||
1514 | #define SIZE_OF_80387_REGISTERS 80 |
||
1515 | |||
1516 | #if !defined(RC_INVOKED) |
||
1517 | |||
1518 | #define CONTEXT_i386 0x00010000 |
||
1519 | #define CONTEXT_i486 0x00010000 |
||
1520 | |||
1521 | #define CONTEXT_CONTROL (CONTEXT_i386 | 0x00000001L) |
||
1522 | #define CONTEXT_INTEGER (CONTEXT_i386 | 0x00000002L) |
||
1523 | #define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x00000004L) |
||
1524 | #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x00000008L) |
||
1525 | #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x00000010L) |
||
1526 | #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | 0x00000020L) |
||
1527 | |||
1528 | #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS) |
||
1529 | |||
1530 | #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS) |
||
1531 | #endif |
||
1532 | |||
1533 | #define MAXIMUM_SUPPORTED_EXTENSION 512 |
||
1534 | |||
1535 | typedef struct _FLOATING_SAVE_AREA { |
||
1536 | DWORD ControlWord; |
||
1537 | DWORD StatusWord; |
||
1538 | DWORD TagWord; |
||
1539 | DWORD ErrorOffset; |
||
1540 | DWORD ErrorSelector; |
||
1541 | DWORD DataOffset; |
||
1542 | DWORD DataSelector; |
||
1543 | BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; |
||
1544 | DWORD Cr0NpxState; |
||
1545 | } FLOATING_SAVE_AREA; |
||
1546 | |||
1547 | typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA; |
||
1548 | |||
1549 | typedef struct _CONTEXT { |
||
1550 | DWORD ContextFlags; |
||
1551 | DWORD Dr0; |
||
1552 | DWORD Dr1; |
||
1553 | DWORD Dr2; |
||
1554 | DWORD Dr3; |
||
1555 | DWORD Dr6; |
||
1556 | DWORD Dr7; |
||
1557 | FLOATING_SAVE_AREA FloatSave; |
||
1558 | DWORD SegGs; |
||
1559 | DWORD SegFs; |
||
1560 | DWORD SegEs; |
||
1561 | DWORD SegDs; |
||
1562 | |||
1563 | DWORD Edi; |
||
1564 | DWORD Esi; |
||
1565 | DWORD Ebx; |
||
1566 | DWORD Edx; |
||
1567 | DWORD Ecx; |
||
1568 | DWORD Eax; |
||
1569 | DWORD Ebp; |
||
1570 | DWORD Eip; |
||
1571 | DWORD SegCs; |
||
1572 | DWORD EFlags; |
||
1573 | DWORD Esp; |
||
1574 | DWORD SegSs; |
||
1575 | BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; |
||
1576 | } CONTEXT; |
||
1577 | |||
1578 | typedef CONTEXT *PCONTEXT; |
||
1579 | #endif |
||
1580 | |||
1581 | #ifndef _LDT_ENTRY_DEFINED |
||
1582 | #define _LDT_ENTRY_DEFINED |
||
1583 | |||
1584 | typedef struct _LDT_ENTRY { |
||
1585 | WORD LimitLow; |
||
1586 | WORD BaseLow; |
||
1587 | union { |
||
1588 | struct { |
||
1589 | BYTE BaseMid; |
||
1590 | BYTE Flags1; |
||
1591 | BYTE Flags2; |
||
1592 | BYTE BaseHi; |
||
1593 | } Bytes; |
||
1594 | struct { |
||
1595 | DWORD BaseMid : 8; |
||
1596 | DWORD Type : 5; |
||
1597 | DWORD Dpl : 2; |
||
1598 | DWORD Pres : 1; |
||
1599 | DWORD LimitHi : 4; |
||
1600 | DWORD Sys : 1; |
||
1601 | DWORD Reserved_0 : 1; |
||
1602 | DWORD Default_Big : 1; |
||
1603 | DWORD Granularity : 1; |
||
1604 | DWORD BaseHi : 8; |
||
1605 | } Bits; |
||
1606 | } HighWord; |
||
1607 | } LDT_ENTRY,*PLDT_ENTRY; |
||
1608 | #endif |
||
1609 | |||
1610 | #if defined(__ia64__) && !defined(RC_INVOKED) |
||
1611 | |||
1612 | #ifdef __cplusplus |
||
1613 | extern "C" { |
||
1614 | #endif |
||
1615 | |||
1616 | BOOLEAN BitScanForward64(DWORD *Index,DWORD64 Mask); |
||
1617 | BOOLEAN BitScanReverse64(DWORD *Index,DWORD64 Mask); |
||
1618 | |||
1619 | #ifdef __cplusplus |
||
1620 | } |
||
1621 | #endif |
||
1622 | #endif |
||
1623 | |||
1624 | #if !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_) |
||
1625 | |||
1626 | void *_cdecl _rdteb(void); |
||
1627 | #ifdef __ia64__ |
||
1628 | |||
1629 | #define NtCurrentTeb() ((struct _TEB *)_rdteb()) |
||
1630 | #define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData) |
||
1631 | #define GetFiberData() (*(PVOID *)(GetCurrentFiber())) |
||
1632 | |||
1633 | #ifdef __cplusplus |
||
1634 | extern "C" { |
||
1635 | #endif |
||
1636 | |||
1637 | void __break(int); |
||
1638 | void __yield(void); |
||
1639 | void __mf(void); |
||
1640 | void __lfetch(int Level,VOID CONST *Address); |
||
1641 | void __lfetchfault(int Level,VOID CONST *Address); |
||
1642 | void __lfetch_excl(int Level,VOID CONST *Address); |
||
1643 | void __lfetchfault_excl(int Level,VOID CONST *Address); |
||
1644 | |||
1645 | #define MD_LFHINT_NONE 0x00 |
||
1646 | #define MD_LFHINT_NT1 0x01 |
||
1647 | #define MD_LFHINT_NT2 0x02 |
||
1648 | #define MD_LFHINT_NTA 0x03 |
||
1649 | |||
1650 | #ifdef __cplusplus |
||
1651 | } |
||
1652 | #endif |
||
1653 | |||
1654 | #define YieldProcessor __yield |
||
1655 | #define MemoryBarrier __mf |
||
1656 | #define PreFetchCacheLine __lfetch |
||
1657 | #define ReadForWriteAccess(p) (*(p)) |
||
1658 | #define DbgRaiseAssertionFailure() __break(ASSERT_BREAKPOINT) |
||
1659 | |||
1660 | #define PF_TEMPORAL_LEVEL_1 MD_LFHINT_NONE |
||
1661 | #define PF_NON_TEMPORAL_LEVEL_ALL MD_LFHINT_NTA |
||
1662 | |||
1663 | #define UnsignedMultiplyHigh __UMULH |
||
1664 | |||
1665 | ULONGLONG UnsignedMultiplyHigh(ULONGLONG Multiplier,ULONGLONG Multiplicand); |
||
1666 | #else |
||
1667 | struct _TEB *NtCurrentTeb(void); |
||
1668 | #endif |
||
1669 | #endif |
||
1670 | |||
1671 | #ifdef _IA64_ |
||
1672 | |||
1673 | #define EXCEPTION_READ_FAULT 0 |
||
1674 | #define EXCEPTION_WRITE_FAULT 1 |
||
1675 | #define EXCEPTION_EXECUTE_FAULT 2 |
||
1676 | |||
1677 | #if !defined(RC_INVOKED) |
||
1678 | |||
1679 | #define CONTEXT_IA64 0x00080000 |
||
1680 | |||
1681 | #define CONTEXT_CONTROL (CONTEXT_IA64 | 0x00000001L) |
||
1682 | #define CONTEXT_LOWER_FLOATING_POINT (CONTEXT_IA64 | 0x00000002L) |
||
1683 | #define CONTEXT_HIGHER_FLOATING_POINT (CONTEXT_IA64 | 0x00000004L) |
||
1684 | #define CONTEXT_INTEGER (CONTEXT_IA64 | 0x00000008L) |
||
1685 | #define CONTEXT_DEBUG (CONTEXT_IA64 | 0x00000010L) |
||
1686 | #define CONTEXT_IA32_CONTROL (CONTEXT_IA64 | 0x00000020L) |
||
1687 | |||
1688 | #define CONTEXT_FLOATING_POINT (CONTEXT_LOWER_FLOATING_POINT | CONTEXT_HIGHER_FLOATING_POINT) |
||
1689 | #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_IA32_CONTROL) |
||
1690 | #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_DEBUG | CONTEXT_IA32_CONTROL) |
||
1691 | |||
1692 | #define CONTEXT_EXCEPTION_ACTIVE 0x8000000 |
||
1693 | #define CONTEXT_SERVICE_ACTIVE 0x10000000 |
||
1694 | #define CONTEXT_EXCEPTION_REQUEST 0x40000000 |
||
1695 | #define CONTEXT_EXCEPTION_REPORTING 0x80000000 |
||
1696 | #endif |
||
1697 | |||
1698 | typedef struct _CONTEXT { |
||
1699 | DWORD ContextFlags; |
||
1700 | DWORD Fill1[3]; |
||
1701 | ULONGLONG DbI0; |
||
1702 | ULONGLONG DbI1; |
||
1703 | ULONGLONG DbI2; |
||
1704 | ULONGLONG DbI3; |
||
1705 | ULONGLONG DbI4; |
||
1706 | ULONGLONG DbI5; |
||
1707 | ULONGLONG DbI6; |
||
1708 | ULONGLONG DbI7; |
||
1709 | ULONGLONG DbD0; |
||
1710 | ULONGLONG DbD1; |
||
1711 | ULONGLONG DbD2; |
||
1712 | ULONGLONG DbD3; |
||
1713 | ULONGLONG DbD4; |
||
1714 | ULONGLONG DbD5; |
||
1715 | ULONGLONG DbD6; |
||
1716 | ULONGLONG DbD7; |
||
1717 | FLOAT128 FltS0; |
||
1718 | FLOAT128 FltS1; |
||
1719 | FLOAT128 FltS2; |
||
1720 | FLOAT128 FltS3; |
||
1721 | FLOAT128 FltT0; |
||
1722 | FLOAT128 FltT1; |
||
1723 | FLOAT128 FltT2; |
||
1724 | FLOAT128 FltT3; |
||
1725 | FLOAT128 FltT4; |
||
1726 | FLOAT128 FltT5; |
||
1727 | FLOAT128 FltT6; |
||
1728 | FLOAT128 FltT7; |
||
1729 | FLOAT128 FltT8; |
||
1730 | FLOAT128 FltT9; |
||
1731 | FLOAT128 FltS4; |
||
1732 | FLOAT128 FltS5; |
||
1733 | FLOAT128 FltS6; |
||
1734 | FLOAT128 FltS7; |
||
1735 | FLOAT128 FltS8; |
||
1736 | FLOAT128 FltS9; |
||
1737 | FLOAT128 FltS10; |
||
1738 | FLOAT128 FltS11; |
||
1739 | FLOAT128 FltS12; |
||
1740 | FLOAT128 FltS13; |
||
1741 | FLOAT128 FltS14; |
||
1742 | FLOAT128 FltS15; |
||
1743 | FLOAT128 FltS16; |
||
1744 | FLOAT128 FltS17; |
||
1745 | FLOAT128 FltS18; |
||
1746 | FLOAT128 FltS19; |
||
1747 | FLOAT128 FltF32; |
||
1748 | FLOAT128 FltF33; |
||
1749 | FLOAT128 FltF34; |
||
1750 | FLOAT128 FltF35; |
||
1751 | FLOAT128 FltF36; |
||
1752 | FLOAT128 FltF37; |
||
1753 | FLOAT128 FltF38; |
||
1754 | FLOAT128 FltF39; |
||
1755 | FLOAT128 FltF40; |
||
1756 | FLOAT128 FltF41; |
||
1757 | FLOAT128 FltF42; |
||
1758 | FLOAT128 FltF43; |
||
1759 | FLOAT128 FltF44; |
||
1760 | FLOAT128 FltF45; |
||
1761 | FLOAT128 FltF46; |
||
1762 | FLOAT128 FltF47; |
||
1763 | FLOAT128 FltF48; |
||
1764 | FLOAT128 FltF49; |
||
1765 | FLOAT128 FltF50; |
||
1766 | FLOAT128 FltF51; |
||
1767 | FLOAT128 FltF52; |
||
1768 | FLOAT128 FltF53; |
||
1769 | FLOAT128 FltF54; |
||
1770 | FLOAT128 FltF55; |
||
1771 | FLOAT128 FltF56; |
||
1772 | FLOAT128 FltF57; |
||
1773 | FLOAT128 FltF58; |
||
1774 | FLOAT128 FltF59; |
||
1775 | FLOAT128 FltF60; |
||
1776 | FLOAT128 FltF61; |
||
1777 | FLOAT128 FltF62; |
||
1778 | FLOAT128 FltF63; |
||
1779 | FLOAT128 FltF64; |
||
1780 | FLOAT128 FltF65; |
||
1781 | FLOAT128 FltF66; |
||
1782 | FLOAT128 FltF67; |
||
1783 | FLOAT128 FltF68; |
||
1784 | FLOAT128 FltF69; |
||
1785 | FLOAT128 FltF70; |
||
1786 | FLOAT128 FltF71; |
||
1787 | FLOAT128 FltF72; |
||
1788 | FLOAT128 FltF73; |
||
1789 | FLOAT128 FltF74; |
||
1790 | FLOAT128 FltF75; |
||
1791 | FLOAT128 FltF76; |
||
1792 | FLOAT128 FltF77; |
||
1793 | FLOAT128 FltF78; |
||
1794 | FLOAT128 FltF79; |
||
1795 | FLOAT128 FltF80; |
||
1796 | FLOAT128 FltF81; |
||
1797 | FLOAT128 FltF82; |
||
1798 | FLOAT128 FltF83; |
||
1799 | FLOAT128 FltF84; |
||
1800 | FLOAT128 FltF85; |
||
1801 | FLOAT128 FltF86; |
||
1802 | FLOAT128 FltF87; |
||
1803 | FLOAT128 FltF88; |
||
1804 | FLOAT128 FltF89; |
||
1805 | FLOAT128 FltF90; |
||
1806 | FLOAT128 FltF91; |
||
1807 | FLOAT128 FltF92; |
||
1808 | FLOAT128 FltF93; |
||
1809 | FLOAT128 FltF94; |
||
1810 | FLOAT128 FltF95; |
||
1811 | FLOAT128 FltF96; |
||
1812 | FLOAT128 FltF97; |
||
1813 | FLOAT128 FltF98; |
||
1814 | FLOAT128 FltF99; |
||
1815 | FLOAT128 FltF100; |
||
1816 | FLOAT128 FltF101; |
||
1817 | FLOAT128 FltF102; |
||
1818 | FLOAT128 FltF103; |
||
1819 | FLOAT128 FltF104; |
||
1820 | FLOAT128 FltF105; |
||
1821 | FLOAT128 FltF106; |
||
1822 | FLOAT128 FltF107; |
||
1823 | FLOAT128 FltF108; |
||
1824 | FLOAT128 FltF109; |
||
1825 | FLOAT128 FltF110; |
||
1826 | FLOAT128 FltF111; |
||
1827 | FLOAT128 FltF112; |
||
1828 | FLOAT128 FltF113; |
||
1829 | FLOAT128 FltF114; |
||
1830 | FLOAT128 FltF115; |
||
1831 | FLOAT128 FltF116; |
||
1832 | FLOAT128 FltF117; |
||
1833 | FLOAT128 FltF118; |
||
1834 | FLOAT128 FltF119; |
||
1835 | FLOAT128 FltF120; |
||
1836 | FLOAT128 FltF121; |
||
1837 | FLOAT128 FltF122; |
||
1838 | FLOAT128 FltF123; |
||
1839 | FLOAT128 FltF124; |
||
1840 | FLOAT128 FltF125; |
||
1841 | FLOAT128 FltF126; |
||
1842 | FLOAT128 FltF127; |
||
1843 | ULONGLONG StFPSR; |
||
1844 | ULONGLONG IntGp; |
||
1845 | ULONGLONG IntT0; |
||
1846 | ULONGLONG IntT1; |
||
1847 | ULONGLONG IntS0; |
||
1848 | ULONGLONG IntS1; |
||
1849 | ULONGLONG IntS2; |
||
1850 | ULONGLONG IntS3; |
||
1851 | ULONGLONG IntV0; |
||
1852 | ULONGLONG IntT2; |
||
1853 | ULONGLONG IntT3; |
||
1854 | ULONGLONG IntT4; |
||
1855 | ULONGLONG IntSp; |
||
1856 | ULONGLONG IntTeb; |
||
1857 | ULONGLONG IntT5; |
||
1858 | ULONGLONG IntT6; |
||
1859 | ULONGLONG IntT7; |
||
1860 | ULONGLONG IntT8; |
||
1861 | ULONGLONG IntT9; |
||
1862 | ULONGLONG IntT10; |
||
1863 | ULONGLONG IntT11; |
||
1864 | ULONGLONG IntT12; |
||
1865 | ULONGLONG IntT13; |
||
1866 | ULONGLONG IntT14; |
||
1867 | ULONGLONG IntT15; |
||
1868 | ULONGLONG IntT16; |
||
1869 | ULONGLONG IntT17; |
||
1870 | ULONGLONG IntT18; |
||
1871 | ULONGLONG IntT19; |
||
1872 | ULONGLONG IntT20; |
||
1873 | ULONGLONG IntT21; |
||
1874 | ULONGLONG IntT22; |
||
1875 | ULONGLONG IntNats; |
||
1876 | ULONGLONG Preds; |
||
1877 | ULONGLONG BrRp; |
||
1878 | ULONGLONG BrS0; |
||
1879 | ULONGLONG BrS1; |
||
1880 | ULONGLONG BrS2; |
||
1881 | ULONGLONG BrS3; |
||
1882 | ULONGLONG BrS4; |
||
1883 | ULONGLONG BrT0; |
||
1884 | ULONGLONG BrT1; |
||
1885 | ULONGLONG ApUNAT; |
||
1886 | ULONGLONG ApLC; |
||
1887 | ULONGLONG ApEC; |
||
1888 | ULONGLONG ApCCV; |
||
1889 | ULONGLONG ApDCR; |
||
1890 | ULONGLONG RsPFS; |
||
1891 | ULONGLONG RsBSP; |
||
1892 | ULONGLONG RsBSPSTORE; |
||
1893 | ULONGLONG RsRSC; |
||
1894 | ULONGLONG RsRNAT; |
||
1895 | ULONGLONG StIPSR; |
||
1896 | ULONGLONG StIIP; |
||
1897 | ULONGLONG StIFS; |
||
1898 | ULONGLONG StFCR; |
||
1899 | ULONGLONG Eflag; |
||
1900 | ULONGLONG SegCSD; |
||
1901 | ULONGLONG SegSSD; |
||
1902 | ULONGLONG Cflag; |
||
1903 | ULONGLONG StFSR; |
||
1904 | ULONGLONG StFIR; |
||
1905 | ULONGLONG StFDR; |
||
1906 | ULONGLONG UNUSEDPACK; |
||
1907 | } CONTEXT,*PCONTEXT; |
||
1908 | |||
1909 | typedef struct _PLABEL_DESCRIPTOR { |
||
1910 | ULONGLONG EntryPoint; |
||
1911 | ULONGLONG GlobalPointer; |
||
1912 | } PLABEL_DESCRIPTOR,*PPLABEL_DESCRIPTOR; |
||
1913 | |||
1914 | typedef struct _RUNTIME_FUNCTION { |
||
1915 | DWORD BeginAddress; |
||
1916 | DWORD EndAddress; |
||
1917 | DWORD UnwindInfoAddress; |
||
1918 | } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION; |
||
1919 | |||
1920 | typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context); |
||
1921 | typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions); |
||
1922 | |||
1923 | #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" |
||
1924 | |||
1925 | BOOLEAN RtlAddFunctionTable(PRUNTIME_FUNCTION FunctionTable,DWORD EntryCount,ULONGLONG BaseAddress,ULONGLONG TargetGp); |
||
1926 | BOOLEAN RtlInstallFunctionTableCallback(DWORD64 TableIdentifier,DWORD64 BaseAddress,DWORD Length,DWORD64 TargetGp,PGET_RUNTIME_FUNCTION_CALLBACK Callback,PVOID Context,PCWSTR OutOfProcessCallbackDll); |
||
1927 | BOOLEAN RtlDeleteFunctionTable(PRUNTIME_FUNCTION FunctionTable); |
||
1928 | VOID RtlRestoreContext (PCONTEXT ContextRecord,struct _EXCEPTION_RECORD *ExceptionRecord); |
||
1929 | VOID __jump_unwind(ULONGLONG TargetMsFrame,ULONGLONG TargetBsFrame,ULONGLONG TargetPc); |
||
1930 | #endif |
||
1931 | |||
1932 | #define EXCEPTION_NONCONTINUABLE 0x1 |
||
1933 | #define EXCEPTION_MAXIMUM_PARAMETERS 15 |
||
1934 | |||
1935 | typedef struct _EXCEPTION_RECORD { |
||
1936 | DWORD ExceptionCode; |
||
1937 | DWORD ExceptionFlags; |
||
1938 | struct _EXCEPTION_RECORD *ExceptionRecord; |
||
1939 | PVOID ExceptionAddress; |
||
1940 | DWORD NumberParameters; |
||
1941 | ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; |
||
1942 | } EXCEPTION_RECORD; |
||
1943 | |||
1944 | typedef EXCEPTION_RECORD *PEXCEPTION_RECORD; |
||
1945 | |||
1946 | typedef struct _EXCEPTION_RECORD32 { |
||
1947 | DWORD ExceptionCode; |
||
1948 | DWORD ExceptionFlags; |
||
1949 | DWORD ExceptionRecord; |
||
1950 | DWORD ExceptionAddress; |
||
1951 | DWORD NumberParameters; |
||
1952 | DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; |
||
1953 | } EXCEPTION_RECORD32,*PEXCEPTION_RECORD32; |
||
1954 | |||
1955 | typedef struct _EXCEPTION_RECORD64 { |
||
1956 | DWORD ExceptionCode; |
||
1957 | DWORD ExceptionFlags; |
||
1958 | DWORD64 ExceptionRecord; |
||
1959 | DWORD64 ExceptionAddress; |
||
1960 | DWORD NumberParameters; |
||
1961 | DWORD __unusedAlignment; |
||
1962 | DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; |
||
1963 | } EXCEPTION_RECORD64,*PEXCEPTION_RECORD64; |
||
1964 | |||
1965 | typedef struct _EXCEPTION_POINTERS { |
||
1966 | PEXCEPTION_RECORD ExceptionRecord; |
||
1967 | PCONTEXT ContextRecord; |
||
1968 | } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS; |
||
1969 | |||
1970 | #ifdef __x86_64 |
||
1971 | |||
1972 | typedef EXCEPTION_DISPOSITION NTAPI EXCEPTION_ROUTINE (struct _EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, struct _CONTEXT *ContextRecord, PVOID DispatcherContext); |
||
1973 | #ifndef __PEXCEPTION_ROUTINE_DEFINED |
||
1974 | #define __PEXCEPTION_ROUTINE_DEFINED |
||
1975 | typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE; |
||
1976 | #endif |
||
1977 | |||
1978 | /* http://msdn.microsoft.com/en-us/library/ms680597(VS.85).aspx */ |
||
1979 | |||
1980 | #define UNWIND_HISTORY_TABLE_SIZE 12 |
||
1981 | |||
1982 | typedef struct _UNWIND_HISTORY_TABLE_ENTRY { |
||
1983 | ULONG64 ImageBase; |
||
1984 | PRUNTIME_FUNCTION FunctionEntry; |
||
1985 | } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; |
||
1986 | |||
1987 | #define UNWIND_HISTORY_TABLE_NONE 0 |
||
1988 | #define UNWIND_HISTORY_TABLE_GLOBAL 1 |
||
1989 | #define UNWIND_HISTORY_TABLE_LOCAL 2 |
||
1990 | |||
1991 | typedef struct _UNWIND_HISTORY_TABLE { |
||
1992 | ULONG Count; |
||
1993 | UCHAR Search; |
||
1994 | ULONG64 LowAddress; |
||
1995 | ULONG64 HighAddress; |
||
1996 | UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; |
||
1997 | } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; |
||
1998 | |||
1999 | /* http://msdn.microsoft.com/en-us/library/b6sf5kbd(VS.80).aspx */ |
||
2000 | |||
2001 | struct _DISPATCHER_CONTEXT; |
||
2002 | typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT; |
||
2003 | typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT; |
||
2004 | |||
2005 | struct _DISPATCHER_CONTEXT { |
||
2006 | ULONG64 ControlPc; |
||
2007 | ULONG64 ImageBase; |
||
2008 | PRUNTIME_FUNCTION FunctionEntry; |
||
2009 | ULONG64 EstablisherFrame; |
||
2010 | ULONG64 TargetIp; |
||
2011 | PCONTEXT ContextRecord; |
||
2012 | PEXCEPTION_ROUTINE LanguageHandler; |
||
2013 | PVOID HandlerData; |
||
2014 | /* http://www.nynaeve.net/?p=99 */ |
||
2015 | PUNWIND_HISTORY_TABLE HistoryTable; |
||
2016 | ULONG ScopeIndex; |
||
2017 | ULONG Fill0; |
||
2018 | }; |
||
2019 | |||
2020 | /* http://msdn.microsoft.com/en-us/library/ms680617(VS.85).aspx */ |
||
2021 | |||
2022 | typedef struct _KNONVOLATILE_CONTEXT_POINTERS |
||
2023 | { |
||
2024 | PM128A FloatingContext[16]; |
||
2025 | PULONG64 IntegerContext[16]; |
||
2026 | } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; |
||
2027 | #endif /* defined(__x86_64) */ |
||
2028 | |||
2029 | typedef PVOID PACCESS_TOKEN; |
||
2030 | typedef PVOID PSECURITY_DESCRIPTOR; |
||
2031 | typedef PVOID PSID; |
||
2032 | |||
2033 | typedef DWORD ACCESS_MASK; |
||
2034 | typedef ACCESS_MASK *PACCESS_MASK; |
||
2035 | |||
2036 | #define DELETE (0x00010000L) |
||
2037 | #define READ_CONTROL (0x00020000L) |
||
2038 | #define WRITE_DAC (0x00040000L) |
||
2039 | #define WRITE_OWNER (0x00080000L) |
||
2040 | #define SYNCHRONIZE (0x00100000L) |
||
2041 | |||
2042 | #define STANDARD_RIGHTS_REQUIRED (0x000F0000L) |
||
2043 | #define STANDARD_RIGHTS_READ (READ_CONTROL) |
||
2044 | #define STANDARD_RIGHTS_WRITE (READ_CONTROL) |
||
2045 | #define STANDARD_RIGHTS_EXECUTE (READ_CONTROL) |
||
2046 | #define STANDARD_RIGHTS_ALL (0x001F0000L) |
||
2047 | |||
2048 | #define SPECIFIC_RIGHTS_ALL (0x0000FFFFL) |
||
2049 | |||
2050 | #define ACCESS_SYSTEM_SECURITY (0x01000000L) |
||
2051 | |||
2052 | #define MAXIMUM_ALLOWED (0x02000000L) |
||
2053 | |||
2054 | #define GENERIC_READ (0x80000000L) |
||
2055 | #define GENERIC_WRITE (0x40000000L) |
||
2056 | #define GENERIC_EXECUTE (0x20000000L) |
||
2057 | #define GENERIC_ALL (0x10000000L) |
||
2058 | |||
2059 | typedef struct _GENERIC_MAPPING { |
||
2060 | ACCESS_MASK GenericRead; |
||
2061 | ACCESS_MASK GenericWrite; |
||
2062 | ACCESS_MASK GenericExecute; |
||
2063 | ACCESS_MASK GenericAll; |
||
2064 | } GENERIC_MAPPING; |
||
2065 | typedef GENERIC_MAPPING *PGENERIC_MAPPING; |
||
2066 | |||
2067 | #include |
||
2068 | |||
2069 | typedef struct _LUID_AND_ATTRIBUTES { |
||
2070 | LUID Luid; |
||
2071 | DWORD Attributes; |
||
2072 | } LUID_AND_ATTRIBUTES,*PLUID_AND_ATTRIBUTES; |
||
2073 | typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; |
||
2074 | typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; |
||
2075 | |||
2076 | #include |
||
2077 | |||
2078 | #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED |
||
2079 | #define SID_IDENTIFIER_AUTHORITY_DEFINED |
||
2080 | typedef struct _SID_IDENTIFIER_AUTHORITY { |
||
2081 | BYTE Value[6]; |
||
2082 | } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY; |
||
2083 | #endif |
||
2084 | |||
2085 | #ifndef SID_DEFINED |
||
2086 | #define SID_DEFINED |
||
2087 | typedef struct _SID { |
||
2088 | BYTE Revision; |
||
2089 | BYTE SubAuthorityCount; |
||
2090 | SID_IDENTIFIER_AUTHORITY IdentifierAuthority; |
||
2091 | DWORD SubAuthority[ANYSIZE_ARRAY]; |
||
2092 | } SID,*PISID; |
||
2093 | #endif |
||
2094 | |||
2095 | #define SID_REVISION (1) |
||
2096 | #define SID_MAX_SUB_AUTHORITIES (15) |
||
2097 | #define SID_RECOMMENDED_SUB_AUTHORITIES (1) |
||
2098 | |||
2099 | #define SECURITY_MAX_SID_SIZE (sizeof(SID) - sizeof(DWORD) + (SID_MAX_SUB_AUTHORITIES *sizeof(DWORD))) |
||
2100 | |||
2101 | typedef enum _SID_NAME_USE { |
||
2102 | SidTypeUser = 1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown,SidTypeComputer |
||
2103 | } SID_NAME_USE,*PSID_NAME_USE; |
||
2104 | |||
2105 | typedef struct _SID_AND_ATTRIBUTES { |
||
2106 | PSID Sid; |
||
2107 | DWORD Attributes; |
||
2108 | } SID_AND_ATTRIBUTES,*PSID_AND_ATTRIBUTES; |
||
2109 | |||
2110 | typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; |
||
2111 | typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY; |
||
2112 | |||
2113 | #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} |
||
2114 | #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} |
||
2115 | #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} |
||
2116 | #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} |
||
2117 | #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} |
||
2118 | #define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9} |
||
2119 | |||
2120 | #define SECURITY_NULL_RID (0x00000000L) |
||
2121 | #define SECURITY_WORLD_RID (0x00000000L) |
||
2122 | #define SECURITY_LOCAL_RID (0x00000000L) |
||
2123 | |||
2124 | #define SECURITY_CREATOR_OWNER_RID (0x00000000L) |
||
2125 | #define SECURITY_CREATOR_GROUP_RID (0x00000001L) |
||
2126 | |||
2127 | #define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L) |
||
2128 | #define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L) |
||
2129 | |||
2130 | #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} |
||
2131 | |||
2132 | #define SECURITY_DIALUP_RID (0x00000001L) |
||
2133 | #define SECURITY_NETWORK_RID (0x00000002L) |
||
2134 | #define SECURITY_BATCH_RID (0x00000003L) |
||
2135 | #define SECURITY_INTERACTIVE_RID (0x00000004L) |
||
2136 | #define SECURITY_LOGON_IDS_RID (0x00000005L) |
||
2137 | #define SECURITY_LOGON_IDS_RID_COUNT (3L) |
||
2138 | #define SECURITY_SERVICE_RID (0x00000006L) |
||
2139 | #define SECURITY_ANONYMOUS_LOGON_RID (0x00000007L) |
||
2140 | #define SECURITY_PROXY_RID (0x00000008L) |
||
2141 | #define SECURITY_ENTERPRISE_CONTROLLERS_RID (0x00000009L) |
||
2142 | #define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID |
||
2143 | #define SECURITY_PRINCIPAL_SELF_RID (0x0000000AL) |
||
2144 | #define SECURITY_AUTHENTICATED_USER_RID (0x0000000BL) |
||
2145 | #define SECURITY_RESTRICTED_CODE_RID (0x0000000CL) |
||
2146 | #define SECURITY_TERMINAL_SERVER_RID (0x0000000DL) |
||
2147 | #define SECURITY_REMOTE_LOGON_RID (0x0000000EL) |
||
2148 | #define SECURITY_THIS_ORGANIZATION_RID (0x0000000FL) |
||
2149 | #define SECURITY_IUSER_RID (0x00000011L) |
||
2150 | |||
2151 | #define SECURITY_LOCAL_SYSTEM_RID (0x00000012L) |
||
2152 | #define SECURITY_LOCAL_SERVICE_RID (0x00000013L) |
||
2153 | #define SECURITY_NETWORK_SERVICE_RID (0x00000014L) |
||
2154 | |||
2155 | #define SECURITY_NT_NON_UNIQUE (0x00000015L) |
||
2156 | #define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT (3L) |
||
2157 | |||
2158 | #define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID (0x00000016L) |
||
2159 | |||
2160 | #define SECURITY_BUILTIN_DOMAIN_RID (0x00000020L) |
||
2161 | #define SECURITY_WRITE_RESTRICTED_CODE_RID (0x00000021L) |
||
2162 | |||
2163 | #define SECURITY_PACKAGE_BASE_RID (0x00000040L) |
||
2164 | #define SECURITY_PACKAGE_RID_COUNT (2L) |
||
2165 | #define SECURITY_PACKAGE_NTLM_RID (0x0000000AL) |
||
2166 | #define SECURITY_PACKAGE_SCHANNEL_RID (0x0000000EL) |
||
2167 | #define SECURITY_PACKAGE_DIGEST_RID (0x00000015L) |
||
2168 | |||
2169 | #define SECURITY_SERVICE_ID_BASE_RID (0x00000050L) |
||
2170 | #define SECURITY_SERVICE_ID_RID_COUNT (6L) |
||
2171 | |||
2172 | #define SECURITY_RESERVED_ID_BASE_RID (0x00000051L) |
||
2173 | |||
2174 | #define SECURITY_MAX_ALWAYS_FILTERED (0x000003E7L) |
||
2175 | #define SECURITY_MIN_NEVER_FILTERED (0x000003E8L) |
||
2176 | |||
2177 | #define SECURITY_OTHER_ORGANIZATION_RID (0x000003E8L) |
||
2178 | |||
2179 | #define FOREST_USER_RID_MAX (0x000001F3L) |
||
2180 | |||
2181 | #define DOMAIN_USER_RID_ADMIN (0x000001F4L) |
||
2182 | #define DOMAIN_USER_RID_GUEST (0x000001F5L) |
||
2183 | #define DOMAIN_USER_RID_KRBTGT (0x000001F6L) |
||
2184 | |||
2185 | #define DOMAIN_USER_RID_MAX (0x000003E7L) |
||
2186 | |||
2187 | #define DOMAIN_GROUP_RID_ADMINS (0x00000200L) |
||
2188 | #define DOMAIN_GROUP_RID_USERS (0x00000201L) |
||
2189 | #define DOMAIN_GROUP_RID_GUESTS (0x00000202L) |
||
2190 | #define DOMAIN_GROUP_RID_COMPUTERS (0x00000203L) |
||
2191 | #define DOMAIN_GROUP_RID_CONTROLLERS (0x00000204L) |
||
2192 | #define DOMAIN_GROUP_RID_CERT_ADMINS (0x00000205L) |
||
2193 | #define DOMAIN_GROUP_RID_SCHEMA_ADMINS (0x00000206L) |
||
2194 | #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (0x00000207L) |
||
2195 | #define DOMAIN_GROUP_RID_POLICY_ADMINS (0x00000208L) |
||
2196 | #define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (0x00000209L) |
||
2197 | |||
2198 | #define DOMAIN_ALIAS_RID_ADMINS (0x00000220L) |
||
2199 | #define DOMAIN_ALIAS_RID_USERS (0x00000221L) |
||
2200 | #define DOMAIN_ALIAS_RID_GUESTS (0x00000222L) |
||
2201 | #define DOMAIN_ALIAS_RID_POWER_USERS (0x00000223L) |
||
2202 | |||
2203 | #define DOMAIN_ALIAS_RID_ACCOUNT_OPS (0x00000224L) |
||
2204 | #define DOMAIN_ALIAS_RID_SYSTEM_OPS (0x00000225L) |
||
2205 | #define DOMAIN_ALIAS_RID_PRINT_OPS (0x00000226L) |
||
2206 | #define DOMAIN_ALIAS_RID_BACKUP_OPS (0x00000227L) |
||
2207 | |||
2208 | #define DOMAIN_ALIAS_RID_REPLICATOR (0x00000228L) |
||
2209 | #define DOMAIN_ALIAS_RID_RAS_SERVERS (0x00000229L) |
||
2210 | #define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS (0x0000022AL) |
||
2211 | #define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS (0x0000022BL) |
||
2212 | #define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS (0x0000022CL) |
||
2213 | #define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS (0x0000022DL) |
||
2214 | |||
2215 | #define DOMAIN_ALIAS_RID_MONITORING_USERS (0x0000022EL) |
||
2216 | #define DOMAIN_ALIAS_RID_LOGGING_USERS (0x0000022FL) |
||
2217 | #define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS (0x00000230L) |
||
2218 | #define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS (0x00000231L) |
||
2219 | #define DOMAIN_ALIAS_RID_DCOM_USERS (0x00000232L) |
||
2220 | |||
2221 | #define DOMAIN_ALIAS_RID_IUSERS (0x00000238L) |
||
2222 | #define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS (0x00000239L) |
||
2223 | #define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (0x0000023BL) |
||
2224 | #define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (0x0000023CL) |
||
2225 | #define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (0x0000023DL) |
||
2226 | |||
2227 | #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} |
||
2228 | #define SECURITY_MANDATORY_UNTRUSTED_RID (0x00000000L) |
||
2229 | #define SECURITY_MANDATORY_LOW_RID (0x00001000L) |
||
2230 | #define SECURITY_MANDATORY_MEDIUM_RID (0x00002000L) |
||
2231 | #define SECURITY_MANDATORY_HIGH_RID (0x00003000L) |
||
2232 | #define SECURITY_MANDATORY_SYSTEM_RID (0x00004000L) |
||
2233 | #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (0x00005000L) |
||
2234 | |||
2235 | #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID |
||
2236 | |||
2237 | #define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000) |
||
2238 | |||
2239 | typedef enum { |
||
2240 | WinNullSid = 0,WinWorldSid = 1,WinLocalSid = 2,WinCreatorOwnerSid = 3,WinCreatorGroupSid = 4,WinCreatorOwnerServerSid = 5,WinCreatorGroupServerSid = 6,WinNtAuthoritySid = 7,WinDialupSid = 8,WinNetworkSid = 9,WinBatchSid = 10,WinInteractiveSid = 11,WinServiceSid = 12,WinAnonymousSid = 13,WinProxySid = 14,WinEnterpriseControllersSid = 15,WinSelfSid = 16,WinAuthenticatedUserSid = 17,WinRestrictedCodeSid = 18,WinTerminalServerSid = 19,WinRemoteLogonIdSid = 20,WinLogonIdsSid = 21,WinLocalSystemSid = 22,WinLocalServiceSid = 23,WinNetworkServiceSid = 24,WinBuiltinDomainSid = 25,WinBuiltinAdministratorsSid = 26,WinBuiltinUsersSid = 27,WinBuiltinGuestsSid = 28,WinBuiltinPowerUsersSid = 29,WinBuiltinAccountOperatorsSid = 30,WinBuiltinSystemOperatorsSid = 31,WinBuiltinPrintOperatorsSid = 32,WinBuiltinBackupOperatorsSid = 33,WinBuiltinReplicatorSid = 34,WinBuiltinPreWindows2000CompatibleAccessSid = 35,WinBuiltinRemoteDesktopUsersSid = 36,WinBuiltinNetworkConfigurationOperatorsSid = 37,WinAccountAdministratorSid = 38,WinAccountGuestSid = 39,WinAccountKrbtgtSid = 40,WinAccountDomainAdminsSid = 41,WinAccountDomainUsersSid = 42,WinAccountDomainGuestsSid = 43,WinAccountComputersSid = 44,WinAccountControllersSid = 45,WinAccountCertAdminsSid = 46,WinAccountSchemaAdminsSid = 47,WinAccountEnterpriseAdminsSid = 48,WinAccountPolicyAdminsSid = 49,WinAccountRasAndIasServersSid = 50,WinNTLMAuthenticationSid = 51,WinDigestAuthenticationSid = 52,WinSChannelAuthenticationSid = 53,WinThisOrganizationSid = 54,WinOtherOrganizationSid = 55,WinBuiltinIncomingForestTrustBuildersSid = 56,WinBuiltinPerfMonitoringUsersSid = 57,WinBuiltinPerfLoggingUsersSid = 58,WinBuiltinAuthorizationAccessSid = 59,WinBuiltinTerminalServerLicenseServersSid = 60,WinBuiltinDCOMUsersSid = 61 |
||
2241 | } WELL_KNOWN_SID_TYPE; |
||
2242 | |||
2243 | #define SYSTEM_LUID { 0x3E7,0x0 } |
||
2244 | #define ANONYMOUS_LOGON_LUID { 0x3e6,0x0 } |
||
2245 | #define LOCALSERVICE_LUID { 0x3e5,0x0 } |
||
2246 | #define NETWORKSERVICE_LUID { 0x3e4,0x0 } |
||
2247 | #define IUSER_LUID { 0x3e3, 0x0 } |
||
2248 | |||
2249 | #define SE_GROUP_MANDATORY (0x00000001L) |
||
2250 | #define SE_GROUP_ENABLED_BY_DEFAULT (0x00000002L) |
||
2251 | #define SE_GROUP_ENABLED (0x00000004L) |
||
2252 | #define SE_GROUP_OWNER (0x00000008L) |
||
2253 | #define SE_GROUP_USE_FOR_DENY_ONLY (0x00000010L) |
||
2254 | #define SE_GROUP_INTEGRITY (0x00000020L) |
||
2255 | #define SE_GROUP_INTEGRITY_ENABLED (0x00000040L) |
||
2256 | #define SE_GROUP_LOGON_ID (0xC0000000L) |
||
2257 | #define SE_GROUP_RESOURCE (0x20000000L) |
||
2258 | |||
2259 | #define ACL_REVISION (2) |
||
2260 | #define ACL_REVISION_DS (4) |
||
2261 | |||
2262 | #define ACL_REVISION1 (1) |
||
2263 | #define MIN_ACL_REVISION ACL_REVISION2 |
||
2264 | #define ACL_REVISION2 (2) |
||
2265 | #define ACL_REVISION3 (3) |
||
2266 | #define ACL_REVISION4 (4) |
||
2267 | #define MAX_ACL_REVISION ACL_REVISION4 |
||
2268 | |||
2269 | typedef struct _ACL { |
||
2270 | BYTE AclRevision; |
||
2271 | BYTE Sbz1; |
||
2272 | WORD AclSize; |
||
2273 | WORD AceCount; |
||
2274 | WORD Sbz2; |
||
2275 | } ACL; |
||
2276 | typedef ACL *PACL; |
||
2277 | |||
2278 | typedef struct _ACE_HEADER { |
||
2279 | BYTE AceType; |
||
2280 | BYTE AceFlags; |
||
2281 | WORD AceSize; |
||
2282 | } ACE_HEADER; |
||
2283 | typedef ACE_HEADER *PACE_HEADER; |
||
2284 | |||
2285 | #define ACCESS_MIN_MS_ACE_TYPE (0x0) |
||
2286 | #define ACCESS_ALLOWED_ACE_TYPE (0x0) |
||
2287 | #define ACCESS_DENIED_ACE_TYPE (0x1) |
||
2288 | #define SYSTEM_AUDIT_ACE_TYPE (0x2) |
||
2289 | #define SYSTEM_ALARM_ACE_TYPE (0x3) |
||
2290 | #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3) |
||
2291 | |||
2292 | #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4) |
||
2293 | #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4) |
||
2294 | |||
2295 | #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5) |
||
2296 | #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5) |
||
2297 | #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6) |
||
2298 | #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7) |
||
2299 | #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8) |
||
2300 | #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8) |
||
2301 | |||
2302 | #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8) |
||
2303 | #define ACCESS_MAX_MS_ACE_TYPE (0x8) |
||
2304 | |||
2305 | #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9) |
||
2306 | #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA) |
||
2307 | #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB) |
||
2308 | #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC) |
||
2309 | #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD) |
||
2310 | #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE) |
||
2311 | #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF) |
||
2312 | #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10) |
||
2313 | |||
2314 | #define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11) |
||
2315 | #define ACCESS_MAX_MS_V5_ACE_TYPE (0x11) |
||
2316 | |||
2317 | #define OBJECT_INHERIT_ACE (0x1) |
||
2318 | #define CONTAINER_INHERIT_ACE (0x2) |
||
2319 | #define NO_PROPAGATE_INHERIT_ACE (0x4) |
||
2320 | #define INHERIT_ONLY_ACE (0x8) |
||
2321 | #define INHERITED_ACE (0x10) |
||
2322 | #define VALID_INHERIT_FLAGS (0x1F) |
||
2323 | |||
2324 | #define SUCCESSFUL_ACCESS_ACE_FLAG (0x40) |
||
2325 | #define FAILED_ACCESS_ACE_FLAG (0x80) |
||
2326 | |||
2327 | typedef struct _ACCESS_ALLOWED_ACE { |
||
2328 | ACE_HEADER Header; |
||
2329 | ACCESS_MASK Mask; |
||
2330 | DWORD SidStart; |
||
2331 | } ACCESS_ALLOWED_ACE; |
||
2332 | |||
2333 | typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE; |
||
2334 | |||
2335 | typedef struct _ACCESS_DENIED_ACE { |
||
2336 | ACE_HEADER Header; |
||
2337 | ACCESS_MASK Mask; |
||
2338 | DWORD SidStart; |
||
2339 | } ACCESS_DENIED_ACE; |
||
2340 | typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE; |
||
2341 | |||
2342 | typedef struct _SYSTEM_AUDIT_ACE { |
||
2343 | ACE_HEADER Header; |
||
2344 | ACCESS_MASK Mask; |
||
2345 | DWORD SidStart; |
||
2346 | } SYSTEM_AUDIT_ACE; |
||
2347 | typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; |
||
2348 | |||
2349 | typedef struct _SYSTEM_ALARM_ACE { |
||
2350 | ACE_HEADER Header; |
||
2351 | ACCESS_MASK Mask; |
||
2352 | DWORD SidStart; |
||
2353 | } SYSTEM_ALARM_ACE; |
||
2354 | typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE; |
||
2355 | |||
2356 | typedef struct _ACCESS_ALLOWED_OBJECT_ACE { |
||
2357 | ACE_HEADER Header; |
||
2358 | ACCESS_MASK Mask; |
||
2359 | DWORD Flags; |
||
2360 | GUID ObjectType; |
||
2361 | GUID InheritedObjectType; |
||
2362 | DWORD SidStart; |
||
2363 | } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; |
||
2364 | |||
2365 | typedef struct _ACCESS_DENIED_OBJECT_ACE { |
||
2366 | ACE_HEADER Header; |
||
2367 | ACCESS_MASK Mask; |
||
2368 | DWORD Flags; |
||
2369 | GUID ObjectType; |
||
2370 | GUID InheritedObjectType; |
||
2371 | DWORD SidStart; |
||
2372 | } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; |
||
2373 | |||
2374 | typedef struct _SYSTEM_AUDIT_OBJECT_ACE { |
||
2375 | ACE_HEADER Header; |
||
2376 | ACCESS_MASK Mask; |
||
2377 | DWORD Flags; |
||
2378 | GUID ObjectType; |
||
2379 | GUID InheritedObjectType; |
||
2380 | DWORD SidStart; |
||
2381 | } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; |
||
2382 | |||
2383 | typedef struct _SYSTEM_ALARM_OBJECT_ACE { |
||
2384 | ACE_HEADER Header; |
||
2385 | ACCESS_MASK Mask; |
||
2386 | DWORD Flags; |
||
2387 | GUID ObjectType; |
||
2388 | GUID InheritedObjectType; |
||
2389 | DWORD SidStart; |
||
2390 | } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; |
||
2391 | |||
2392 | typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { |
||
2393 | ACE_HEADER Header; |
||
2394 | ACCESS_MASK Mask; |
||
2395 | DWORD SidStart; |
||
2396 | |||
2397 | } ACCESS_ALLOWED_CALLBACK_ACE,*PACCESS_ALLOWED_CALLBACK_ACE; |
||
2398 | |||
2399 | typedef struct _ACCESS_DENIED_CALLBACK_ACE { |
||
2400 | ACE_HEADER Header; |
||
2401 | ACCESS_MASK Mask; |
||
2402 | DWORD SidStart; |
||
2403 | |||
2404 | } ACCESS_DENIED_CALLBACK_ACE,*PACCESS_DENIED_CALLBACK_ACE; |
||
2405 | |||
2406 | typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { |
||
2407 | ACE_HEADER Header; |
||
2408 | ACCESS_MASK Mask; |
||
2409 | DWORD SidStart; |
||
2410 | |||
2411 | } SYSTEM_AUDIT_CALLBACK_ACE,*PSYSTEM_AUDIT_CALLBACK_ACE; |
||
2412 | |||
2413 | typedef struct _SYSTEM_ALARM_CALLBACK_ACE { |
||
2414 | ACE_HEADER Header; |
||
2415 | ACCESS_MASK Mask; |
||
2416 | DWORD SidStart; |
||
2417 | |||
2418 | } SYSTEM_ALARM_CALLBACK_ACE,*PSYSTEM_ALARM_CALLBACK_ACE; |
||
2419 | |||
2420 | typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { |
||
2421 | ACE_HEADER Header; |
||
2422 | ACCESS_MASK Mask; |
||
2423 | DWORD Flags; |
||
2424 | GUID ObjectType; |
||
2425 | GUID InheritedObjectType; |
||
2426 | DWORD SidStart; |
||
2427 | |||
2428 | } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE,*PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; |
||
2429 | |||
2430 | typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { |
||
2431 | ACE_HEADER Header; |
||
2432 | ACCESS_MASK Mask; |
||
2433 | DWORD Flags; |
||
2434 | GUID ObjectType; |
||
2435 | GUID InheritedObjectType; |
||
2436 | DWORD SidStart; |
||
2437 | |||
2438 | } ACCESS_DENIED_CALLBACK_OBJECT_ACE,*PACCESS_DENIED_CALLBACK_OBJECT_ACE; |
||
2439 | |||
2440 | typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { |
||
2441 | ACE_HEADER Header; |
||
2442 | ACCESS_MASK Mask; |
||
2443 | DWORD Flags; |
||
2444 | GUID ObjectType; |
||
2445 | GUID InheritedObjectType; |
||
2446 | DWORD SidStart; |
||
2447 | |||
2448 | } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE,*PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; |
||
2449 | |||
2450 | typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { |
||
2451 | ACE_HEADER Header; |
||
2452 | ACCESS_MASK Mask; |
||
2453 | DWORD Flags; |
||
2454 | GUID ObjectType; |
||
2455 | GUID InheritedObjectType; |
||
2456 | DWORD SidStart; |
||
2457 | |||
2458 | } SYSTEM_ALARM_CALLBACK_OBJECT_ACE,*PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; |
||
2459 | |||
2460 | #define ACE_OBJECT_TYPE_PRESENT 0x1 |
||
2461 | #define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2 |
||
2462 | |||
2463 | typedef enum _ACL_INFORMATION_CLASS { |
||
2464 | AclRevisionInformation = 1,AclSizeInformation |
||
2465 | } ACL_INFORMATION_CLASS; |
||
2466 | |||
2467 | typedef struct _ACL_REVISION_INFORMATION { |
||
2468 | DWORD AclRevision; |
||
2469 | } ACL_REVISION_INFORMATION; |
||
2470 | typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION; |
||
2471 | |||
2472 | typedef struct _ACL_SIZE_INFORMATION { |
||
2473 | DWORD AceCount; |
||
2474 | DWORD AclBytesInUse; |
||
2475 | DWORD AclBytesFree; |
||
2476 | } ACL_SIZE_INFORMATION; |
||
2477 | typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION; |
||
2478 | |||
2479 | #define SECURITY_DESCRIPTOR_REVISION (1) |
||
2480 | #define SECURITY_DESCRIPTOR_REVISION1 (1) |
||
2481 | |||
2482 | #define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR)) |
||
2483 | |||
2484 | typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL; |
||
2485 | |||
2486 | #define SE_OWNER_DEFAULTED (0x0001) |
||
2487 | #define SE_GROUP_DEFAULTED (0x0002) |
||
2488 | #define SE_DACL_PRESENT (0x0004) |
||
2489 | #define SE_DACL_DEFAULTED (0x0008) |
||
2490 | #define SE_SACL_PRESENT (0x0010) |
||
2491 | #define SE_SACL_DEFAULTED (0x0020) |
||
2492 | #define SE_DACL_AUTO_INHERIT_REQ (0x0100) |
||
2493 | #define SE_SACL_AUTO_INHERIT_REQ (0x0200) |
||
2494 | #define SE_DACL_AUTO_INHERITED (0x0400) |
||
2495 | #define SE_SACL_AUTO_INHERITED (0x0800) |
||
2496 | #define SE_DACL_PROTECTED (0x1000) |
||
2497 | #define SE_SACL_PROTECTED (0x2000) |
||
2498 | #define SE_RM_CONTROL_VALID (0x4000) |
||
2499 | #define SE_SELF_RELATIVE (0x8000) |
||
2500 | |||
2501 | typedef struct _SECURITY_DESCRIPTOR_RELATIVE { |
||
2502 | BYTE Revision; |
||
2503 | BYTE Sbz1; |
||
2504 | SECURITY_DESCRIPTOR_CONTROL Control; |
||
2505 | DWORD Owner; |
||
2506 | DWORD Group; |
||
2507 | DWORD Sacl; |
||
2508 | DWORD Dacl; |
||
2509 | } SECURITY_DESCRIPTOR_RELATIVE,*PISECURITY_DESCRIPTOR_RELATIVE; |
||
2510 | |||
2511 | typedef struct _SECURITY_DESCRIPTOR { |
||
2512 | BYTE Revision; |
||
2513 | BYTE Sbz1; |
||
2514 | SECURITY_DESCRIPTOR_CONTROL Control; |
||
2515 | PSID Owner; |
||
2516 | PSID Group; |
||
2517 | PACL Sacl; |
||
2518 | PACL Dacl; |
||
2519 | |||
2520 | } SECURITY_DESCRIPTOR,*PISECURITY_DESCRIPTOR; |
||
2521 | |||
2522 | typedef struct _OBJECT_TYPE_LIST { |
||
2523 | WORD Level; |
||
2524 | WORD Sbz; |
||
2525 | GUID *ObjectType; |
||
2526 | } OBJECT_TYPE_LIST,*POBJECT_TYPE_LIST; |
||
2527 | |||
2528 | #define ACCESS_OBJECT_GUID 0 |
||
2529 | #define ACCESS_PROPERTY_SET_GUID 1 |
||
2530 | #define ACCESS_PROPERTY_GUID 2 |
||
2531 | |||
2532 | #define ACCESS_MAX_LEVEL 4 |
||
2533 | |||
2534 | typedef enum _AUDIT_EVENT_TYPE { |
||
2535 | AuditEventObjectAccess,AuditEventDirectoryServiceAccess |
||
2536 | } AUDIT_EVENT_TYPE,*PAUDIT_EVENT_TYPE; |
||
2537 | |||
2538 | #define AUDIT_ALLOW_NO_PRIVILEGE 0x1 |
||
2539 | |||
2540 | #define ACCESS_DS_SOURCE_A "DS" |
||
2541 | #define ACCESS_DS_SOURCE_W L"DS" |
||
2542 | #define ACCESS_DS_OBJECT_TYPE_NAME_A "Directory Service Object" |
||
2543 | #define ACCESS_DS_OBJECT_TYPE_NAME_W L"Directory Service Object" |
||
2544 | |||
2545 | #define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x00000001L) |
||
2546 | #define SE_PRIVILEGE_ENABLED (0x00000002L) |
||
2547 | #define SE_PRIVILEGE_REMOVED (0X00000004L) |
||
2548 | #define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L) |
||
2549 | |||
2550 | #define PRIVILEGE_SET_ALL_NECESSARY (1) |
||
2551 | |||
2552 | typedef struct _PRIVILEGE_SET { |
||
2553 | DWORD PrivilegeCount; |
||
2554 | DWORD Control; |
||
2555 | LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; |
||
2556 | } PRIVILEGE_SET,*PPRIVILEGE_SET; |
||
2557 | |||
2558 | #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") |
||
2559 | #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") |
||
2560 | #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") |
||
2561 | #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") |
||
2562 | #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") |
||
2563 | #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") |
||
2564 | #define SE_TCB_NAME TEXT("SeTcbPrivilege") |
||
2565 | #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") |
||
2566 | #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") |
||
2567 | #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") |
||
2568 | #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") |
||
2569 | #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") |
||
2570 | #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") |
||
2571 | #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") |
||
2572 | #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") |
||
2573 | #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") |
||
2574 | #define SE_BACKUP_NAME TEXT("SeBackupPrivilege") |
||
2575 | #define SE_RESTORE_NAME TEXT("SeRestorePrivilege") |
||
2576 | #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") |
||
2577 | #define SE_DEBUG_NAME TEXT("SeDebugPrivilege") |
||
2578 | #define SE_AUDIT_NAME TEXT("SeAuditPrivilege") |
||
2579 | #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") |
||
2580 | #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") |
||
2581 | #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") |
||
2582 | #define SE_UNDOCK_NAME TEXT("SeUndockPrivilege") |
||
2583 | #define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege") |
||
2584 | #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") |
||
2585 | #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") |
||
2586 | #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") |
||
2587 | #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") |
||
2588 | |||
2589 | typedef enum _SECURITY_IMPERSONATION_LEVEL { |
||
2590 | SecurityAnonymous,SecurityIdentification,SecurityImpersonation,SecurityDelegation |
||
2591 | } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; |
||
2592 | |||
2593 | #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation |
||
2594 | #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous |
||
2595 | #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation |
||
2596 | #define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL)) |
||
2597 | |||
2598 | #define TOKEN_ASSIGN_PRIMARY (0x0001) |
||
2599 | #define TOKEN_DUPLICATE (0x0002) |
||
2600 | #define TOKEN_IMPERSONATE (0x0004) |
||
2601 | #define TOKEN_QUERY (0x0008) |
||
2602 | #define TOKEN_QUERY_SOURCE (0x0010) |
||
2603 | #define TOKEN_ADJUST_PRIVILEGES (0x0020) |
||
2604 | #define TOKEN_ADJUST_GROUPS (0x0040) |
||
2605 | #define TOKEN_ADJUST_DEFAULT (0x0080) |
||
2606 | #define TOKEN_ADJUST_SESSIONID (0x0100) |
||
2607 | |||
2608 | #define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT) |
||
2609 | #define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) |
||
2610 | #define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) |
||
2611 | |||
2612 | #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT) |
||
2613 | |||
2614 | #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) |
||
2615 | |||
2616 | typedef enum _TOKEN_TYPE { |
||
2617 | TokenPrimary = 1,TokenImpersonation |
||
2618 | } TOKEN_TYPE; |
||
2619 | typedef TOKEN_TYPE *PTOKEN_TYPE; |
||
2620 | |||
2621 | typedef enum _TOKEN_INFORMATION_CLASS { |
||
2622 | TokenUser = 1,TokenGroups,TokenPrivileges,TokenOwner,TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,TokenImpersonationLevel, |
||
2623 | TokenStatistics,TokenRestrictedSids,TokenSessionId,TokenGroupsAndPrivileges,TokenSessionReference,TokenSandBoxInert,TokenAuditPolicy, |
||
2624 | TokenOrigin,MaxTokenInfoClass |
||
2625 | } TOKEN_INFORMATION_CLASS,*PTOKEN_INFORMATION_CLASS; |
||
2626 | |||
2627 | typedef struct _TOKEN_USER { |
||
2628 | SID_AND_ATTRIBUTES User; |
||
2629 | } TOKEN_USER,*PTOKEN_USER; |
||
2630 | |||
2631 | typedef struct _TOKEN_GROUPS { |
||
2632 | DWORD GroupCount; |
||
2633 | SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; |
||
2634 | } TOKEN_GROUPS,*PTOKEN_GROUPS; |
||
2635 | |||
2636 | typedef struct _TOKEN_PRIVILEGES { |
||
2637 | DWORD PrivilegeCount; |
||
2638 | LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; |
||
2639 | } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES; |
||
2640 | |||
2641 | typedef struct _TOKEN_OWNER { |
||
2642 | PSID Owner; |
||
2643 | } TOKEN_OWNER,*PTOKEN_OWNER; |
||
2644 | |||
2645 | typedef struct _TOKEN_PRIMARY_GROUP { |
||
2646 | PSID PrimaryGroup; |
||
2647 | } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; |
||
2648 | |||
2649 | typedef struct _TOKEN_DEFAULT_DACL { |
||
2650 | PACL DefaultDacl; |
||
2651 | } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; |
||
2652 | |||
2653 | typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { |
||
2654 | DWORD SidCount; |
||
2655 | DWORD SidLength; |
||
2656 | PSID_AND_ATTRIBUTES Sids; |
||
2657 | DWORD RestrictedSidCount; |
||
2658 | DWORD RestrictedSidLength; |
||
2659 | PSID_AND_ATTRIBUTES RestrictedSids; |
||
2660 | DWORD PrivilegeCount; |
||
2661 | DWORD PrivilegeLength; |
||
2662 | PLUID_AND_ATTRIBUTES Privileges; |
||
2663 | LUID AuthenticationId; |
||
2664 | } TOKEN_GROUPS_AND_PRIVILEGES,*PTOKEN_GROUPS_AND_PRIVILEGES; |
||
2665 | |||
2666 | #define TOKEN_AUDIT_SUCCESS_INCLUDE 0x1 |
||
2667 | #define TOKEN_AUDIT_SUCCESS_EXCLUDE 0x2 |
||
2668 | #define TOKEN_AUDIT_FAILURE_INCLUDE 0x4 |
||
2669 | #define TOKEN_AUDIT_FAILURE_EXCLUDE 0x8 |
||
2670 | |||
2671 | #define VALID_AUDIT_POLICY_BITS (TOKEN_AUDIT_SUCCESS_INCLUDE | TOKEN_AUDIT_SUCCESS_EXCLUDE | TOKEN_AUDIT_FAILURE_INCLUDE | TOKEN_AUDIT_FAILURE_EXCLUDE) |
||
2672 | #define VALID_TOKEN_AUDIT_POLICY_ELEMENT(P) ((((P).PolicyMask & ~VALID_AUDIT_POLICY_BITS)==0) && ((P).Category <= AuditEventMaxType)) |
||
2673 | |||
2674 | typedef struct _TOKEN_AUDIT_POLICY_ELEMENT { |
||
2675 | DWORD Category; |
||
2676 | DWORD PolicyMask; |
||
2677 | } TOKEN_AUDIT_POLICY_ELEMENT,*PTOKEN_AUDIT_POLICY_ELEMENT; |
||
2678 | |||
2679 | typedef struct _TOKEN_AUDIT_POLICY { |
||
2680 | DWORD PolicyCount; |
||
2681 | TOKEN_AUDIT_POLICY_ELEMENT Policy[ANYSIZE_ARRAY]; |
||
2682 | } TOKEN_AUDIT_POLICY,*PTOKEN_AUDIT_POLICY; |
||
2683 | |||
2684 | #define PER_USER_AUDITING_POLICY_SIZE(p) (sizeof(TOKEN_AUDIT_POLICY) + (((p)->PolicyCount > ANYSIZE_ARRAY) ? (sizeof(TOKEN_AUDIT_POLICY_ELEMENT) *((p)->PolicyCount - ANYSIZE_ARRAY)) : 0)) |
||
2685 | #define PER_USER_AUDITING_POLICY_SIZE_BY_COUNT(C) (sizeof(TOKEN_AUDIT_POLICY) + (((C) > ANYSIZE_ARRAY) ? (sizeof(TOKEN_AUDIT_POLICY_ELEMENT) *((C) - ANYSIZE_ARRAY)) : 0)) |
||
2686 | |||
2687 | #define TOKEN_SOURCE_LENGTH 8 |
||
2688 | |||
2689 | typedef struct _TOKEN_SOURCE { |
||
2690 | CHAR SourceName[TOKEN_SOURCE_LENGTH]; |
||
2691 | LUID SourceIdentifier; |
||
2692 | } TOKEN_SOURCE,*PTOKEN_SOURCE; |
||
2693 | |||
2694 | typedef struct _TOKEN_STATISTICS { |
||
2695 | LUID TokenId; |
||
2696 | LUID AuthenticationId; |
||
2697 | LARGE_INTEGER ExpirationTime; |
||
2698 | TOKEN_TYPE TokenType; |
||
2699 | SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; |
||
2700 | DWORD DynamicCharged; |
||
2701 | DWORD DynamicAvailable; |
||
2702 | DWORD GroupCount; |
||
2703 | DWORD PrivilegeCount; |
||
2704 | LUID ModifiedId; |
||
2705 | } TOKEN_STATISTICS,*PTOKEN_STATISTICS; |
||
2706 | |||
2707 | typedef struct _TOKEN_CONTROL { |
||
2708 | LUID TokenId; |
||
2709 | LUID AuthenticationId; |
||
2710 | LUID ModifiedId; |
||
2711 | TOKEN_SOURCE TokenSource; |
||
2712 | } TOKEN_CONTROL,*PTOKEN_CONTROL; |
||
2713 | |||
2714 | typedef struct _TOKEN_ORIGIN { |
||
2715 | LUID OriginatingLogonSession; |
||
2716 | } TOKEN_ORIGIN,*PTOKEN_ORIGIN; |
||
2717 | |||
2718 | #define SECURITY_DYNAMIC_TRACKING (TRUE) |
||
2719 | #define SECURITY_STATIC_TRACKING (FALSE) |
||
2720 | |||
2721 | typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; |
||
2722 | |||
2723 | typedef struct _SECURITY_QUALITY_OF_SERVICE { |
||
2724 | DWORD Length; |
||
2725 | SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; |
||
2726 | SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; |
||
2727 | BOOLEAN EffectiveOnly; |
||
2728 | } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; |
||
2729 | |||
2730 | typedef struct _SE_IMPERSONATION_STATE { |
||
2731 | PACCESS_TOKEN Token; |
||
2732 | BOOLEAN CopyOnOpen; |
||
2733 | BOOLEAN EffectiveOnly; |
||
2734 | SECURITY_IMPERSONATION_LEVEL Level; |
||
2735 | } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; |
||
2736 | |||
2737 | #define DISABLE_MAX_PRIVILEGE 0x1 |
||
2738 | #define SANDBOX_INERT 0x2 |
||
2739 | |||
2740 | typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION; |
||
2741 | |||
2742 | #define OWNER_SECURITY_INFORMATION (0x00000001L) |
||
2743 | #define GROUP_SECURITY_INFORMATION (0x00000002L) |
||
2744 | #define DACL_SECURITY_INFORMATION (0x00000004L) |
||
2745 | #define SACL_SECURITY_INFORMATION (0x00000008L) |
||
2746 | |||
2747 | #define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L) |
||
2748 | #define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L) |
||
2749 | #define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L) |
||
2750 | #define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L) |
||
2751 | |||
2752 | #define PROCESS_TERMINATE (0x0001) |
||
2753 | #define PROCESS_CREATE_THREAD (0x0002) |
||
2754 | #define PROCESS_SET_SESSIONID (0x0004) |
||
2755 | #define PROCESS_VM_OPERATION (0x0008) |
||
2756 | #define PROCESS_VM_READ (0x0010) |
||
2757 | #define PROCESS_VM_WRITE (0x0020) |
||
2758 | #define PROCESS_DUP_HANDLE (0x0040) |
||
2759 | #define PROCESS_CREATE_PROCESS (0x0080) |
||
2760 | #define PROCESS_SET_QUOTA (0x0100) |
||
2761 | #define PROCESS_SET_INFORMATION (0x0200) |
||
2762 | #define PROCESS_QUERY_INFORMATION (0x0400) |
||
2763 | #define PROCESS_SUSPEND_RESUME (0x0800) |
||
2764 | #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF) |
||
2765 | |||
2766 | #ifdef _WIN64 |
||
2767 | #define MAXIMUM_PROCESSORS 64 |
||
2768 | #else |
||
2769 | #define MAXIMUM_PROCESSORS 32 |
||
2770 | #endif |
||
2771 | |||
2772 | #define THREAD_TERMINATE (0x0001) |
||
2773 | #define THREAD_SUSPEND_RESUME (0x0002) |
||
2774 | #define THREAD_GET_CONTEXT (0x0008) |
||
2775 | #define THREAD_SET_CONTEXT (0x0010) |
||
2776 | #define THREAD_SET_INFORMATION (0x0020) |
||
2777 | #define THREAD_QUERY_INFORMATION (0x0040) |
||
2778 | #define THREAD_SET_THREAD_TOKEN (0x0080) |
||
2779 | #define THREAD_IMPERSONATE (0x0100) |
||
2780 | #define THREAD_DIRECT_IMPERSONATION (0x0200) |
||
2781 | |||
2782 | #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF) |
||
2783 | |||
2784 | #define JOB_OBJECT_ASSIGN_PROCESS (0x0001) |
||
2785 | #define JOB_OBJECT_SET_ATTRIBUTES (0x0002) |
||
2786 | #define JOB_OBJECT_QUERY (0x0004) |
||
2787 | #define JOB_OBJECT_TERMINATE (0x0008) |
||
2788 | #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) |
||
2789 | #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F) |
||
2790 | |||
2791 | typedef struct _JOB_SET_ARRAY { |
||
2792 | HANDLE JobHandle; |
||
2793 | DWORD MemberLevel; |
||
2794 | DWORD Flags; |
||
2795 | } JOB_SET_ARRAY,*PJOB_SET_ARRAY; |
||
2796 | |||
2797 | #define FLS_MAXIMUM_AVAILABLE 128 |
||
2798 | #define TLS_MINIMUM_AVAILABLE 64 |
||
2799 | |||
2800 | #ifndef _NT_TIB_DEFINED |
||
2801 | #define _NT_TIB_DEFINED |
||
2802 | typedef struct _NT_TIB { |
||
2803 | struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; |
||
2804 | PVOID StackBase; |
||
2805 | PVOID StackLimit; |
||
2806 | PVOID SubSystemTib; |
||
2807 | union { |
||
2808 | PVOID FiberData; |
||
2809 | DWORD Version; |
||
2810 | }; |
||
2811 | PVOID ArbitraryUserPointer; |
||
2812 | struct _NT_TIB *Self; |
||
2813 | } NT_TIB; |
||
2814 | typedef NT_TIB *PNT_TIB; |
||
2815 | #endif |
||
2816 | |||
2817 | typedef struct _NT_TIB32 { |
||
2818 | DWORD ExceptionList; |
||
2819 | DWORD StackBase; |
||
2820 | DWORD StackLimit; |
||
2821 | DWORD SubSystemTib; |
||
2822 | union { |
||
2823 | DWORD FiberData; |
||
2824 | DWORD Version; |
||
2825 | }; |
||
2826 | DWORD ArbitraryUserPointer; |
||
2827 | DWORD Self; |
||
2828 | } NT_TIB32,*PNT_TIB32; |
||
2829 | |||
2830 | typedef struct _NT_TIB64 { |
||
2831 | DWORD64 ExceptionList; |
||
2832 | DWORD64 StackBase; |
||
2833 | DWORD64 StackLimit; |
||
2834 | DWORD64 SubSystemTib; |
||
2835 | union { |
||
2836 | DWORD64 FiberData; |
||
2837 | DWORD Version; |
||
2838 | }; |
||
2839 | DWORD64 ArbitraryUserPointer; |
||
2840 | DWORD64 Self; |
||
2841 | } NT_TIB64,*PNT_TIB64; |
||
2842 | |||
2843 | #if !defined(I_X86_) && !defined(_IA64_) && !defined(_AMD64_) |
||
2844 | #define WX86 |
||
2845 | #endif |
||
2846 | |||
2847 | #define THREAD_BASE_PRIORITY_LOWRT 15 |
||
2848 | #define THREAD_BASE_PRIORITY_MAX 2 |
||
2849 | #define THREAD_BASE_PRIORITY_MIN (-2) |
||
2850 | #define THREAD_BASE_PRIORITY_IDLE (-15) |
||
2851 | |||
2852 | typedef struct _QUOTA_LIMITS { |
||
2853 | SIZE_T PagedPoolLimit; |
||
2854 | SIZE_T NonPagedPoolLimit; |
||
2855 | SIZE_T MinimumWorkingSetSize; |
||
2856 | SIZE_T MaximumWorkingSetSize; |
||
2857 | SIZE_T PagefileLimit; |
||
2858 | LARGE_INTEGER TimeLimit; |
||
2859 | } QUOTA_LIMITS,*PQUOTA_LIMITS; |
||
2860 | |||
2861 | #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 |
||
2862 | #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 |
||
2863 | #define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 |
||
2864 | #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 |
||
2865 | |||
2866 | typedef struct _QUOTA_LIMITS_EX { |
||
2867 | SIZE_T PagedPoolLimit; |
||
2868 | SIZE_T NonPagedPoolLimit; |
||
2869 | SIZE_T MinimumWorkingSetSize; |
||
2870 | SIZE_T MaximumWorkingSetSize; |
||
2871 | SIZE_T PagefileLimit; |
||
2872 | LARGE_INTEGER TimeLimit; |
||
2873 | SIZE_T Reserved1; |
||
2874 | SIZE_T Reserved2; |
||
2875 | SIZE_T Reserved3; |
||
2876 | SIZE_T Reserved4; |
||
2877 | DWORD Flags; |
||
2878 | DWORD Reserved5; |
||
2879 | } QUOTA_LIMITS_EX,*PQUOTA_LIMITS_EX; |
||
2880 | |||
2881 | typedef struct _IO_COUNTERS { |
||
2882 | ULONGLONG ReadOperationCount; |
||
2883 | ULONGLONG WriteOperationCount; |
||
2884 | ULONGLONG OtherOperationCount; |
||
2885 | ULONGLONG ReadTransferCount; |
||
2886 | ULONGLONG WriteTransferCount; |
||
2887 | ULONGLONG OtherTransferCount; |
||
2888 | } IO_COUNTERS; |
||
2889 | typedef IO_COUNTERS *PIO_COUNTERS; |
||
2890 | |||
2891 | typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { |
||
2892 | LARGE_INTEGER TotalUserTime; |
||
2893 | LARGE_INTEGER TotalKernelTime; |
||
2894 | LARGE_INTEGER ThisPeriodTotalUserTime; |
||
2895 | LARGE_INTEGER ThisPeriodTotalKernelTime; |
||
2896 | DWORD TotalPageFaultCount; |
||
2897 | DWORD TotalProcesses; |
||
2898 | DWORD ActiveProcesses; |
||
2899 | DWORD TotalTerminatedProcesses; |
||
2900 | } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; |
||
2901 | |||
2902 | typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION { |
||
2903 | LARGE_INTEGER PerProcessUserTimeLimit; |
||
2904 | LARGE_INTEGER PerJobUserTimeLimit; |
||
2905 | DWORD LimitFlags; |
||
2906 | SIZE_T MinimumWorkingSetSize; |
||
2907 | SIZE_T MaximumWorkingSetSize; |
||
2908 | DWORD ActiveProcessLimit; |
||
2909 | ULONG_PTR Affinity; |
||
2910 | DWORD PriorityClass; |
||
2911 | DWORD SchedulingClass; |
||
2912 | } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION; |
||
2913 | |||
2914 | typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION { |
||
2915 | JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; |
||
2916 | IO_COUNTERS IoInfo; |
||
2917 | SIZE_T ProcessMemoryLimit; |
||
2918 | SIZE_T JobMemoryLimit; |
||
2919 | SIZE_T PeakProcessMemoryUsed; |
||
2920 | SIZE_T PeakJobMemoryUsed; |
||
2921 | } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; |
||
2922 | |||
2923 | typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { |
||
2924 | DWORD NumberOfAssignedProcesses; |
||
2925 | DWORD NumberOfProcessIdsInList; |
||
2926 | ULONG_PTR ProcessIdList[1]; |
||
2927 | } JOBOBJECT_BASIC_PROCESS_ID_LIST,*PJOBOBJECT_BASIC_PROCESS_ID_LIST; |
||
2928 | |||
2929 | typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { |
||
2930 | DWORD UIRestrictionsClass; |
||
2931 | } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS; |
||
2932 | |||
2933 | typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { |
||
2934 | DWORD SecurityLimitFlags; |
||
2935 | HANDLE JobToken; |
||
2936 | PTOKEN_GROUPS SidsToDisable; |
||
2937 | PTOKEN_PRIVILEGES PrivilegesToDelete; |
||
2938 | PTOKEN_GROUPS RestrictedSids; |
||
2939 | } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION; |
||
2940 | |||
2941 | typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { |
||
2942 | DWORD EndOfJobTimeAction; |
||
2943 | } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; |
||
2944 | |||
2945 | typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { |
||
2946 | PVOID CompletionKey; |
||
2947 | HANDLE CompletionPort; |
||
2948 | } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; |
||
2949 | |||
2950 | typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { |
||
2951 | JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; |
||
2952 | IO_COUNTERS IoInfo; |
||
2953 | } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; |
||
2954 | |||
2955 | typedef struct _JOBOBJECT_JOBSET_INFORMATION { |
||
2956 | DWORD MemberLevel; |
||
2957 | } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION; |
||
2958 | |||
2959 | #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 |
||
2960 | #define JOB_OBJECT_POST_AT_END_OF_JOB 1 |
||
2961 | |||
2962 | #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 |
||
2963 | #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 |
||
2964 | #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 |
||
2965 | #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 |
||
2966 | #define JOB_OBJECT_MSG_NEW_PROCESS 6 |
||
2967 | #define JOB_OBJECT_MSG_EXIT_PROCESS 7 |
||
2968 | #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 |
||
2969 | #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 |
||
2970 | #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 |
||
2971 | |||
2972 | #define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001 |
||
2973 | #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002 |
||
2974 | #define JOB_OBJECT_LIMIT_JOB_TIME 0x00000004 |
||
2975 | #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x00000008 |
||
2976 | #define JOB_OBJECT_LIMIT_AFFINITY 0x00000010 |
||
2977 | #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020 |
||
2978 | #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040 |
||
2979 | #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080 |
||
2980 | |||
2981 | #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100 |
||
2982 | #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200 |
||
2983 | #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400 |
||
2984 | #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800 |
||
2985 | #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000 |
||
2986 | #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000 |
||
2987 | |||
2988 | #define JOB_OBJECT_LIMIT_RESERVED2 0x00004000 |
||
2989 | #define JOB_OBJECT_LIMIT_RESERVED3 0x00008000 |
||
2990 | #define JOB_OBJECT_LIMIT_RESERVED4 0x00010000 |
||
2991 | #define JOB_OBJECT_LIMIT_RESERVED5 0x00020000 |
||
2992 | #define JOB_OBJECT_LIMIT_RESERVED6 0x00040000 |
||
2993 | |||
2994 | #define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff |
||
2995 | |||
2996 | #define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff |
||
2997 | #define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00003fff |
||
2998 | #define JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS 0x0007ffff |
||
2999 | |||
3000 | #define JOB_OBJECT_UILIMIT_NONE 0x00000000 |
||
3001 | |||
3002 | #define JOB_OBJECT_UILIMIT_HANDLES 0x00000001 |
||
3003 | #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002 |
||
3004 | #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004 |
||
3005 | #define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x00000008 |
||
3006 | #define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x00000010 |
||
3007 | #define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x00000020 |
||
3008 | #define JOB_OBJECT_UILIMIT_DESKTOP 0x00000040 |
||
3009 | #define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x00000080 |
||
3010 | |||
3011 | #define JOB_OBJECT_UILIMIT_ALL 0x000000FF |
||
3012 | |||
3013 | #define JOB_OBJECT_UI_VALID_FLAGS 0x000000FF |
||
3014 | |||
3015 | #define JOB_OBJECT_SECURITY_NO_ADMIN 0x00000001 |
||
3016 | #define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x00000002 |
||
3017 | #define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x00000004 |
||
3018 | #define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x00000008 |
||
3019 | |||
3020 | #define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f |
||
3021 | |||
3022 | typedef enum _JOBOBJECTINFOCLASS { |
||
3023 | JobObjectBasicAccountingInformation = 1,JobObjectBasicLimitInformation,JobObjectBasicProcessIdList,JobObjectBasicUIRestrictions, |
||
3024 | JobObjectSecurityLimitInformation,JobObjectEndOfJobTimeInformation,JobObjectAssociateCompletionPortInformation, |
||
3025 | JobObjectBasicAndIoAccountingInformation,JobObjectExtendedLimitInformation,JobObjectJobSetInformation,MaxJobObjectInfoClass |
||
3026 | } JOBOBJECTINFOCLASS; |
||
3027 | |||
3028 | #define EVENT_MODIFY_STATE 0x0002 |
||
3029 | #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) |
||
3030 | |||
3031 | #define MUTANT_QUERY_STATE 0x0001 |
||
3032 | |||
3033 | #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE) |
||
3034 | #define SEMAPHORE_MODIFY_STATE 0x0002 |
||
3035 | #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) |
||
3036 | |||
3037 | #define TIMER_QUERY_STATE 0x0001 |
||
3038 | #define TIMER_MODIFY_STATE 0x0002 |
||
3039 | |||
3040 | #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE) |
||
3041 | |||
3042 | #define TIME_ZONE_ID_UNKNOWN 0 |
||
3043 | #define TIME_ZONE_ID_STANDARD 1 |
||
3044 | #define TIME_ZONE_ID_DAYLIGHT 2 |
||
3045 | |||
3046 | typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { |
||
3047 | RelationProcessorCore,RelationNumaNode,RelationCache |
||
3048 | } LOGICAL_PROCESSOR_RELATIONSHIP; |
||
3049 | |||
3050 | #define LTP_PC_SMT 0x1 |
||
3051 | |||
3052 | typedef enum _PROCESSOR_CACHE_TYPE { |
||
3053 | CacheUnified,CacheInstruction,CacheData,CacheTrace |
||
3054 | } PROCESSOR_CACHE_TYPE; |
||
3055 | |||
3056 | #define CACHE_FULLY_ASSOCIATIVE 0xFF |
||
3057 | |||
3058 | typedef struct _CACHE_DESCRIPTOR { |
||
3059 | BYTE Level; |
||
3060 | BYTE Associativity; |
||
3061 | WORD LineSize; |
||
3062 | DWORD Size; |
||
3063 | PROCESSOR_CACHE_TYPE Type; |
||
3064 | } CACHE_DESCRIPTOR,*PCACHE_DESCRIPTOR; |
||
3065 | |||
3066 | typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { |
||
3067 | ULONG_PTR ProcessorMask; |
||
3068 | LOGICAL_PROCESSOR_RELATIONSHIP Relationship; |
||
3069 | union { |
||
3070 | struct { |
||
3071 | BYTE Flags; |
||
3072 | } ProcessorCore; |
||
3073 | struct { |
||
3074 | DWORD NodeNumber; |
||
3075 | } NumaNode; |
||
3076 | CACHE_DESCRIPTOR Cache; |
||
3077 | ULONGLONG Reserved[2]; |
||
3078 | }; |
||
3079 | } SYSTEM_LOGICAL_PROCESSOR_INFORMATION,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; |
||
3080 | |||
3081 | #define PROCESSOR_INTEL_386 386 |
||
3082 | #define PROCESSOR_INTEL_486 486 |
||
3083 | #define PROCESSOR_INTEL_PENTIUM 586 |
||
3084 | #define PROCESSOR_INTEL_IA64 2200 |
||
3085 | #define PROCESSOR_AMD_X8664 8664 |
||
3086 | #define PROCESSOR_MIPS_R4000 4000 |
||
3087 | #define PROCESSOR_ALPHA_21064 21064 |
||
3088 | #define PROCESSOR_PPC_601 601 |
||
3089 | #define PROCESSOR_PPC_603 603 |
||
3090 | #define PROCESSOR_PPC_604 604 |
||
3091 | #define PROCESSOR_PPC_620 620 |
||
3092 | #define PROCESSOR_HITACHI_SH3 10003 |
||
3093 | #define PROCESSOR_HITACHI_SH3E 10004 |
||
3094 | #define PROCESSOR_HITACHI_SH4 10005 |
||
3095 | #define PROCESSOR_MOTOROLA_821 821 |
||
3096 | #define PROCESSOR_SHx_SH3 103 |
||
3097 | #define PROCESSOR_SHx_SH4 104 |
||
3098 | #define PROCESSOR_STRONGARM 2577 |
||
3099 | #define PROCESSOR_ARM720 1824 |
||
3100 | #define PROCESSOR_ARM820 2080 |
||
3101 | #define PROCESSOR_ARM920 2336 |
||
3102 | #define PROCESSOR_ARM_7TDMI 70001 |
||
3103 | #define PROCESSOR_OPTIL 0x494f |
||
3104 | |||
3105 | #define PROCESSOR_ARCHITECTURE_INTEL 0 |
||
3106 | #define PROCESSOR_ARCHITECTURE_MIPS 1 |
||
3107 | #define PROCESSOR_ARCHITECTURE_ALPHA 2 |
||
3108 | #define PROCESSOR_ARCHITECTURE_PPC 3 |
||
3109 | #define PROCESSOR_ARCHITECTURE_SHX 4 |
||
3110 | #define PROCESSOR_ARCHITECTURE_ARM 5 |
||
3111 | #define PROCESSOR_ARCHITECTURE_IA64 6 |
||
3112 | #define PROCESSOR_ARCHITECTURE_ALPHA64 7 |
||
3113 | #define PROCESSOR_ARCHITECTURE_MSIL 8 |
||
3114 | #define PROCESSOR_ARCHITECTURE_AMD64 9 |
||
3115 | #define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 |
||
3116 | |||
3117 | #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF |
||
3118 | |||
3119 | #define PF_FLOATING_POINT_PRECISION_ERRATA 0 |
||
3120 | #define PF_FLOATING_POINT_EMULATED 1 |
||
3121 | #define PF_COMPARE_EXCHANGE_DOUBLE 2 |
||
3122 | #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 |
||
3123 | #define PF_PPC_MOVEMEM_64BIT_OK 4 |
||
3124 | #define PF_ALPHA_BYTE_INSTRUCTIONS 5 |
||
3125 | #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 |
||
3126 | #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 |
||
3127 | #define PF_RDTSC_INSTRUCTION_AVAILABLE 8 |
||
3128 | #define PF_PAE_ENABLED 9 |
||
3129 | #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 |
||
3130 | #define PF_SSE_DAZ_MODE_AVAILABLE 11 |
||
3131 | #define PF_NX_ENABLED 12 |
||
3132 | |||
3133 | typedef struct _MEMORY_BASIC_INFORMATION { |
||
3134 | PVOID BaseAddress; |
||
3135 | PVOID AllocationBase; |
||
3136 | DWORD AllocationProtect; |
||
3137 | SIZE_T RegionSize; |
||
3138 | DWORD State; |
||
3139 | DWORD Protect; |
||
3140 | DWORD Type; |
||
3141 | } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION; |
||
3142 | |||
3143 | typedef struct _MEMORY_BASIC_INFORMATION32 { |
||
3144 | DWORD BaseAddress; |
||
3145 | DWORD AllocationBase; |
||
3146 | DWORD AllocationProtect; |
||
3147 | DWORD RegionSize; |
||
3148 | DWORD State; |
||
3149 | DWORD Protect; |
||
3150 | DWORD Type; |
||
3151 | } MEMORY_BASIC_INFORMATION32,*PMEMORY_BASIC_INFORMATION32; |
||
3152 | |||
3153 | typedef DECLSPEC_ALIGN(16) struct _MEMORY_BASIC_INFORMATION64 { |
||
3154 | ULONGLONG BaseAddress; |
||
3155 | ULONGLONG AllocationBase; |
||
3156 | DWORD AllocationProtect; |
||
3157 | DWORD __alignment1; |
||
3158 | ULONGLONG RegionSize; |
||
3159 | DWORD State; |
||
3160 | DWORD Protect; |
||
3161 | DWORD Type; |
||
3162 | DWORD __alignment2; |
||
3163 | } MEMORY_BASIC_INFORMATION64,*PMEMORY_BASIC_INFORMATION64; |
||
3164 | |||
3165 | #define SECTION_QUERY 0x0001 |
||
3166 | #define SECTION_MAP_WRITE 0x0002 |
||
3167 | #define SECTION_MAP_READ 0x0004 |
||
3168 | #define SECTION_MAP_EXECUTE 0x0008 |
||
3169 | #define SECTION_EXTEND_SIZE 0x0010 |
||
3170 | #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 |
||
3171 | |||
3172 | #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE) |
||
3173 | #define PAGE_NOACCESS 0x01 |
||
3174 | #define PAGE_READONLY 0x02 |
||
3175 | #define PAGE_READWRITE 0x04 |
||
3176 | #define PAGE_WRITECOPY 0x08 |
||
3177 | #define PAGE_EXECUTE 0x10 |
||
3178 | #define PAGE_EXECUTE_READ 0x20 |
||
3179 | #define PAGE_EXECUTE_READWRITE 0x40 |
||
3180 | #define PAGE_EXECUTE_WRITECOPY 0x80 |
||
3181 | #define PAGE_GUARD 0x100 |
||
3182 | #define PAGE_NOCACHE 0x200 |
||
3183 | #define PAGE_WRITECOMBINE 0x400 |
||
3184 | #define MEM_COMMIT 0x1000 |
||
3185 | #define MEM_RESERVE 0x2000 |
||
3186 | #define MEM_DECOMMIT 0x4000 |
||
3187 | #define MEM_RELEASE 0x8000 |
||
3188 | #define MEM_FREE 0x10000 |
||
3189 | #define MEM_PRIVATE 0x20000 |
||
3190 | #define MEM_MAPPED 0x40000 |
||
3191 | #define MEM_RESET 0x80000 |
||
3192 | #define MEM_TOP_DOWN 0x100000 |
||
3193 | #define MEM_WRITE_WATCH 0x200000 |
||
3194 | #define MEM_PHYSICAL 0x400000 |
||
3195 | #define MEM_LARGE_PAGES 0x20000000 |
||
3196 | #define MEM_4MB_PAGES 0x80000000 |
||
3197 | #define SEC_FILE 0x800000 |
||
3198 | #define SEC_IMAGE 0x1000000 |
||
3199 | #define SEC_RESERVE 0x4000000 |
||
3200 | #define SEC_COMMIT 0x8000000 |
||
3201 | #define SEC_NOCACHE 0x10000000 |
||
3202 | #define SEC_LARGE_PAGES 0x80000000 |
||
3203 | #define MEM_IMAGE SEC_IMAGE |
||
3204 | #define WRITE_WATCH_FLAG_RESET 0x01 |
||
3205 | |||
3206 | #define FILE_READ_DATA (0x0001) |
||
3207 | #define FILE_LIST_DIRECTORY (0x0001) |
||
3208 | |||
3209 | #define FILE_WRITE_DATA (0x0002) |
||
3210 | #define FILE_ADD_FILE (0x0002) |
||
3211 | |||
3212 | #define FILE_APPEND_DATA (0x0004) |
||
3213 | #define FILE_ADD_SUBDIRECTORY (0x0004) |
||
3214 | #define FILE_CREATE_PIPE_INSTANCE (0x0004) |
||
3215 | |||
3216 | #define FILE_READ_EA (0x0008) |
||
3217 | |||
3218 | #define FILE_WRITE_EA (0x0010) |
||
3219 | |||
3220 | #define FILE_EXECUTE (0x0020) |
||
3221 | #define FILE_TRAVERSE (0x0020) |
||
3222 | |||
3223 | #define FILE_DELETE_CHILD (0x0040) |
||
3224 | |||
3225 | #define FILE_READ_ATTRIBUTES (0x0080) |
||
3226 | |||
3227 | #define FILE_WRITE_ATTRIBUTES (0x0100) |
||
3228 | |||
3229 | #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF) |
||
3230 | #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE) |
||
3231 | #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE) |
||
3232 | #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE) |
||
3233 | |||
3234 | #define FILE_SHARE_READ 0x00000001 |
||
3235 | #define FILE_SHARE_WRITE 0x00000002 |
||
3236 | #define FILE_SHARE_DELETE 0x00000004 |
||
3237 | #define FILE_ATTRIBUTE_READONLY 0x00000001 |
||
3238 | #define FILE_ATTRIBUTE_HIDDEN 0x00000002 |
||
3239 | #define FILE_ATTRIBUTE_SYSTEM 0x00000004 |
||
3240 | #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 |
||
3241 | #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 |
||
3242 | #define FILE_ATTRIBUTE_DEVICE 0x00000040 |
||
3243 | #define FILE_ATTRIBUTE_NORMAL 0x00000080 |
||
3244 | #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 |
||
3245 | #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 |
||
3246 | #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 |
||
3247 | #define FILE_ATTRIBUTE_COMPRESSED 0x00000800 |
||
3248 | #define FILE_ATTRIBUTE_OFFLINE 0x00001000 |
||
3249 | #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 |
||
3250 | #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 |
||
3251 | #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 |
||
3252 | #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 |
||
3253 | #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 |
||
3254 | #define FILE_NOTIFY_CHANGE_SIZE 0x00000008 |
||
3255 | #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 |
||
3256 | #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 |
||
3257 | #define FILE_NOTIFY_CHANGE_CREATION 0x00000040 |
||
3258 | #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 |
||
3259 | #define FILE_ACTION_ADDED 0x00000001 |
||
3260 | #define FILE_ACTION_REMOVED 0x00000002 |
||
3261 | #define FILE_ACTION_MODIFIED 0x00000003 |
||
3262 | #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 |
||
3263 | #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 |
||
3264 | #define MAILSLOT_NO_MESSAGE ((DWORD)-1) |
||
3265 | #define MAILSLOT_WAIT_FOREVER ((DWORD)-1) |
||
3266 | #define FILE_CASE_SENSITIVE_SEARCH 0x00000001 |
||
3267 | #define FILE_CASE_PRESERVED_NAMES 0x00000002 |
||
3268 | #define FILE_UNICODE_ON_DISK 0x00000004 |
||
3269 | #define FILE_PERSISTENT_ACLS 0x00000008 |
||
3270 | #define FILE_FILE_COMPRESSION 0x00000010 |
||
3271 | #define FILE_VOLUME_QUOTAS 0x00000020 |
||
3272 | #define FILE_SUPPORTS_SPARSE_FILES 0x00000040 |
||
3273 | #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 |
||
3274 | #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 |
||
3275 | #define FILE_VOLUME_IS_COMPRESSED 0x00008000 |
||
3276 | #define FILE_SUPPORTS_OBJECT_IDS 0x00010000 |
||
3277 | #define FILE_SUPPORTS_ENCRYPTION 0x00020000 |
||
3278 | #define FILE_NAMED_STREAMS 0x00040000 |
||
3279 | #define FILE_READ_ONLY_VOLUME 0x00080000 |
||
3280 | |||
3281 | typedef struct _FILE_NOTIFY_INFORMATION { |
||
3282 | DWORD NextEntryOffset; |
||
3283 | DWORD Action; |
||
3284 | DWORD FileNameLength; |
||
3285 | WCHAR FileName[1]; |
||
3286 | } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION; |
||
3287 | |||
3288 | typedef union _FILE_SEGMENT_ELEMENT { |
||
3289 | PVOID64 Buffer; |
||
3290 | ULONGLONG Alignment; |
||
3291 | }FILE_SEGMENT_ELEMENT,*PFILE_SEGMENT_ELEMENT; |
||
3292 | |||
3293 | typedef struct _REPARSE_GUID_DATA_BUFFER { |
||
3294 | DWORD ReparseTag; |
||
3295 | WORD ReparseDataLength; |
||
3296 | WORD Reserved; |
||
3297 | GUID ReparseGuid; |
||
3298 | struct { |
||
3299 | BYTE DataBuffer[1]; |
||
3300 | } GenericReparseBuffer; |
||
3301 | } REPARSE_GUID_DATA_BUFFER,*PREPARSE_GUID_DATA_BUFFER; |
||
3302 | |||
3303 | #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER,GenericReparseBuffer) |
||
3304 | |||
3305 | #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 *1024) |
||
3306 | |||
3307 | #define IO_REPARSE_TAG_RESERVED_ZERO (0) |
||
3308 | #define IO_REPARSE_TAG_RESERVED_ONE (1) |
||
3309 | |||
3310 | #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE |
||
3311 | |||
3312 | #define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000)) |
||
3313 | #define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000)) |
||
3314 | |||
3315 | #define IO_REPARSE_TAG_MOUNT_POINT (0xA0000003L) |
||
3316 | #define IO_REPARSE_TAG_HSM (0xC0000004L) |
||
3317 | #define IO_REPARSE_TAG_SIS (0x80000007L) |
||
3318 | #define IO_REPARSE_TAG_DFS (0x8000000AL) |
||
3319 | #define IO_REPARSE_TAG_FILTER_MANAGER (0x8000000BL) |
||
3320 | #define IO_COMPLETION_MODIFY_STATE 0x0002 |
||
3321 | #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) |
||
3322 | #define DUPLICATE_CLOSE_SOURCE 0x00000001 |
||
3323 | #define DUPLICATE_SAME_ACCESS 0x00000002 |
||
3324 | |||
3325 | typedef enum _SYSTEM_POWER_STATE { |
||
3326 | PowerSystemUnspecified = 0,PowerSystemWorking = 1,PowerSystemSleeping1 = 2,PowerSystemSleeping2 = 3,PowerSystemSleeping3 = 4,PowerSystemHibernate = 5,PowerSystemShutdown = 6,PowerSystemMaximum = 7 |
||
3327 | } SYSTEM_POWER_STATE,*PSYSTEM_POWER_STATE; |
||
3328 | |||
3329 | #define POWER_SYSTEM_MAXIMUM 7 |
||
3330 | |||
3331 | typedef enum { |
||
3332 | PowerActionNone = 0,PowerActionReserved,PowerActionSleep,PowerActionHibernate,PowerActionShutdown,PowerActionShutdownReset,PowerActionShutdownOff,PowerActionWarmEject |
||
3333 | } POWER_ACTION,*PPOWER_ACTION; |
||
3334 | |||
3335 | typedef enum _DEVICE_POWER_STATE { |
||
3336 | PowerDeviceUnspecified = 0,PowerDeviceD0,PowerDeviceD1,PowerDeviceD2,PowerDeviceD3,PowerDeviceMaximum |
||
3337 | } DEVICE_POWER_STATE,*PDEVICE_POWER_STATE; |
||
3338 | |||
3339 | #define ES_SYSTEM_REQUIRED ((DWORD)0x00000001) |
||
3340 | #define ES_DISPLAY_REQUIRED ((DWORD)0x00000002) |
||
3341 | #define ES_USER_PRESENT ((DWORD)0x00000004) |
||
3342 | #define ES_CONTINUOUS ((DWORD)0x80000000) |
||
3343 | |||
3344 | typedef DWORD EXECUTION_STATE; |
||
3345 | |||
3346 | typedef enum { |
||
3347 | LT_DONT_CARE,LT_LOWEST_LATENCY |
||
3348 | } LATENCY_TIME; |
||
3349 | |||
3350 | #define PDCAP_D0_SUPPORTED 0x00000001 |
||
3351 | #define PDCAP_D1_SUPPORTED 0x00000002 |
||
3352 | #define PDCAP_D2_SUPPORTED 0x00000004 |
||
3353 | #define PDCAP_D3_SUPPORTED 0x00000008 |
||
3354 | #define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 |
||
3355 | #define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 |
||
3356 | #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 |
||
3357 | #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 |
||
3358 | #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 |
||
3359 | |||
3360 | typedef struct CM_Power_Data_s { |
||
3361 | DWORD PD_Size; |
||
3362 | DEVICE_POWER_STATE PD_MostRecentPowerState; |
||
3363 | DWORD PD_Capabilities; |
||
3364 | DWORD PD_D1Latency; |
||
3365 | DWORD PD_D2Latency; |
||
3366 | DWORD PD_D3Latency; |
||
3367 | DEVICE_POWER_STATE PD_PowerStateMapping[POWER_SYSTEM_MAXIMUM]; |
||
3368 | SYSTEM_POWER_STATE PD_DeepestSystemWake; |
||
3369 | } CM_POWER_DATA,*PCM_POWER_DATA; |
||
3370 | |||
3371 | typedef enum { |
||
3372 | SystemPowerPolicyAc,SystemPowerPolicyDc,VerifySystemPolicyAc,VerifySystemPolicyDc,SystemPowerCapabilities,SystemBatteryState,SystemPowerStateHandler,ProcessorStateHandler,SystemPowerPolicyCurrent,AdministratorPowerPolicy,SystemReserveHiberFile,ProcessorInformation,SystemPowerInformation,ProcessorStateHandler2,LastWakeTime,LastSleepTime,SystemExecutionState,SystemPowerStateNotifyHandler,ProcessorPowerPolicyAc,ProcessorPowerPolicyDc,VerifyProcessorPowerPolicyAc,VerifyProcessorPowerPolicyDc,ProcessorPowerPolicyCurrent,SystemPowerStateLogging,SystemPowerLoggingEntry |
||
3373 | } POWER_INFORMATION_LEVEL; |
||
3374 | |||
3375 | typedef struct { |
||
3376 | DWORD Granularity; |
||
3377 | DWORD Capacity; |
||
3378 | } BATTERY_REPORTING_SCALE,*PBATTERY_REPORTING_SCALE; |
||
3379 | |||
3380 | typedef struct { |
||
3381 | POWER_ACTION Action; |
||
3382 | DWORD Flags; |
||
3383 | DWORD EventCode; |
||
3384 | } POWER_ACTION_POLICY,*PPOWER_ACTION_POLICY; |
||
3385 | |||
3386 | #define POWER_ACTION_QUERY_ALLOWED 0x00000001 |
||
3387 | #define POWER_ACTION_UI_ALLOWED 0x00000002 |
||
3388 | #define POWER_ACTION_OVERRIDE_APPS 0x00000004 |
||
3389 | #define POWER_ACTION_LIGHTEST_FIRST 0x10000000 |
||
3390 | #define POWER_ACTION_LOCK_CONSOLE 0x20000000 |
||
3391 | #define POWER_ACTION_DISABLE_WAKES 0x40000000 |
||
3392 | #define POWER_ACTION_CRITICAL 0x80000000 |
||
3393 | |||
3394 | #define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001 |
||
3395 | #define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002 |
||
3396 | #define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004 |
||
3397 | #define POWER_USER_NOTIFY_BUTTON 0x00000008 |
||
3398 | #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 |
||
3399 | #define POWER_FORCE_TRIGGER_RESET 0x80000000 |
||
3400 | |||
3401 | typedef struct { |
||
3402 | BOOLEAN Enable; |
||
3403 | BYTE Spare[3]; |
||
3404 | DWORD BatteryLevel; |
||
3405 | POWER_ACTION_POLICY PowerPolicy; |
||
3406 | SYSTEM_POWER_STATE MinSystemState; |
||
3407 | } SYSTEM_POWER_LEVEL,*PSYSTEM_POWER_LEVEL; |
||
3408 | |||
3409 | #define NUM_DISCHARGE_POLICIES 4 |
||
3410 | #define DISCHARGE_POLICY_CRITICAL 0 |
||
3411 | #define DISCHARGE_POLICY_LOW 1 |
||
3412 | |||
3413 | #define PO_THROTTLE_NONE 0 |
||
3414 | #define PO_THROTTLE_CONSTANT 1 |
||
3415 | #define PO_THROTTLE_DEGRADE 2 |
||
3416 | #define PO_THROTTLE_ADAPTIVE 3 |
||
3417 | #define PO_THROTTLE_MAXIMUM 4 |
||
3418 | |||
3419 | typedef struct _SYSTEM_POWER_POLICY { |
||
3420 | DWORD Revision; |
||
3421 | POWER_ACTION_POLICY PowerButton; |
||
3422 | POWER_ACTION_POLICY SleepButton; |
||
3423 | POWER_ACTION_POLICY LidClose; |
||
3424 | SYSTEM_POWER_STATE LidOpenWake; |
||
3425 | DWORD Reserved; |
||
3426 | POWER_ACTION_POLICY Idle; |
||
3427 | DWORD IdleTimeout; |
||
3428 | BYTE IdleSensitivity; |
||
3429 | BYTE DynamicThrottle; |
||
3430 | BYTE Spare2[2]; |
||
3431 | SYSTEM_POWER_STATE MinSleep; |
||
3432 | SYSTEM_POWER_STATE MaxSleep; |
||
3433 | SYSTEM_POWER_STATE ReducedLatencySleep; |
||
3434 | DWORD WinLogonFlags; |
||
3435 | DWORD Spare3; |
||
3436 | DWORD DozeS4Timeout; |
||
3437 | DWORD BroadcastCapacityResolution; |
||
3438 | SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES]; |
||
3439 | DWORD VideoTimeout; |
||
3440 | BOOLEAN VideoDimDisplay; |
||
3441 | DWORD VideoReserved[3]; |
||
3442 | DWORD SpindownTimeout; |
||
3443 | BOOLEAN OptimizeForPower; |
||
3444 | BYTE FanThrottleTolerance; |
||
3445 | BYTE ForcedThrottle; |
||
3446 | BYTE MinThrottle; |
||
3447 | POWER_ACTION_POLICY OverThrottled; |
||
3448 | } SYSTEM_POWER_POLICY,*PSYSTEM_POWER_POLICY; |
||
3449 | |||
3450 | typedef struct _PROCESSOR_POWER_POLICY_INFO { |
||
3451 | DWORD TimeCheck; |
||
3452 | DWORD DemoteLimit; |
||
3453 | DWORD PromoteLimit; |
||
3454 | BYTE DemotePercent; |
||
3455 | BYTE PromotePercent; |
||
3456 | BYTE Spare[2]; |
||
3457 | DWORD AllowDemotion:1; |
||
3458 | DWORD AllowPromotion:1; |
||
3459 | DWORD Reserved:30; |
||
3460 | } PROCESSOR_POWER_POLICY_INFO,*PPROCESSOR_POWER_POLICY_INFO; |
||
3461 | |||
3462 | typedef struct _PROCESSOR_POWER_POLICY { |
||
3463 | DWORD Revision; |
||
3464 | BYTE DynamicThrottle; |
||
3465 | BYTE Spare[3]; |
||
3466 | DWORD DisableCStates:1; |
||
3467 | DWORD Reserved:31; |
||
3468 | DWORD PolicyCount; |
||
3469 | PROCESSOR_POWER_POLICY_INFO Policy[3]; |
||
3470 | } PROCESSOR_POWER_POLICY,*PPROCESSOR_POWER_POLICY; |
||
3471 | |||
3472 | typedef struct _ADMINISTRATOR_POWER_POLICY { |
||
3473 | SYSTEM_POWER_STATE MinSleep; |
||
3474 | SYSTEM_POWER_STATE MaxSleep; |
||
3475 | DWORD MinVideoTimeout; |
||
3476 | DWORD MaxVideoTimeout; |
||
3477 | DWORD MinSpindownTimeout; |
||
3478 | DWORD MaxSpindownTimeout; |
||
3479 | } ADMINISTRATOR_POWER_POLICY,*PADMINISTRATOR_POWER_POLICY; |
||
3480 | |||
3481 | typedef struct { |
||
3482 | BOOLEAN PowerButtonPresent; |
||
3483 | BOOLEAN SleepButtonPresent; |
||
3484 | BOOLEAN LidPresent; |
||
3485 | BOOLEAN SystemS1; |
||
3486 | BOOLEAN SystemS2; |
||
3487 | BOOLEAN SystemS3; |
||
3488 | BOOLEAN SystemS4; |
||
3489 | BOOLEAN SystemS5; |
||
3490 | BOOLEAN HiberFilePresent; |
||
3491 | BOOLEAN FullWake; |
||
3492 | BOOLEAN VideoDimPresent; |
||
3493 | BOOLEAN ApmPresent; |
||
3494 | BOOLEAN UpsPresent; |
||
3495 | BOOLEAN ThermalControl; |
||
3496 | BOOLEAN ProcessorThrottle; |
||
3497 | BYTE ProcessorMinThrottle; |
||
3498 | BYTE ProcessorMaxThrottle; |
||
3499 | BYTE spare2[4]; |
||
3500 | BOOLEAN DiskSpinDown; |
||
3501 | BYTE spare3[8]; |
||
3502 | BOOLEAN SystemBatteriesPresent; |
||
3503 | BOOLEAN BatteriesAreShortTerm; |
||
3504 | BATTERY_REPORTING_SCALE BatteryScale[3]; |
||
3505 | SYSTEM_POWER_STATE AcOnLineWake; |
||
3506 | SYSTEM_POWER_STATE SoftLidWake; |
||
3507 | SYSTEM_POWER_STATE RtcWake; |
||
3508 | SYSTEM_POWER_STATE MinDeviceWakeState; |
||
3509 | SYSTEM_POWER_STATE DefaultLowLatencyWake; |
||
3510 | } SYSTEM_POWER_CAPABILITIES,*PSYSTEM_POWER_CAPABILITIES; |
||
3511 | |||
3512 | typedef struct { |
||
3513 | BOOLEAN AcOnLine; |
||
3514 | BOOLEAN BatteryPresent; |
||
3515 | BOOLEAN Charging; |
||
3516 | BOOLEAN Discharging; |
||
3517 | BOOLEAN Spare1[4]; |
||
3518 | DWORD MaxCapacity; |
||
3519 | DWORD RemainingCapacity; |
||
3520 | DWORD Rate; |
||
3521 | DWORD EstimatedTime; |
||
3522 | DWORD DefaultAlert1; |
||
3523 | DWORD DefaultAlert2; |
||
3524 | } SYSTEM_BATTERY_STATE,*PSYSTEM_BATTERY_STATE; |
||
3525 | |||
3526 | #include "pshpack4.h" |
||
3527 | |||
3528 | #define IMAGE_DOS_SIGNATURE 0x5A4D |
||
3529 | #define IMAGE_OS2_SIGNATURE 0x454E |
||
3530 | #define IMAGE_OS2_SIGNATURE_LE 0x454C |
||
3531 | #define IMAGE_VXD_SIGNATURE 0x454C |
||
3532 | #define IMAGE_NT_SIGNATURE 0x00004550 |
||
3533 | |||
3534 | #include "pshpack2.h" |
||
3535 | |||
3536 | typedef struct _IMAGE_DOS_HEADER { |
||
3537 | WORD e_magic; |
||
3538 | WORD e_cblp; |
||
3539 | WORD e_cp; |
||
3540 | WORD e_crlc; |
||
3541 | WORD e_cparhdr; |
||
3542 | WORD e_minalloc; |
||
3543 | WORD e_maxalloc; |
||
3544 | WORD e_ss; |
||
3545 | WORD e_sp; |
||
3546 | WORD e_csum; |
||
3547 | WORD e_ip; |
||
3548 | WORD e_cs; |
||
3549 | WORD e_lfarlc; |
||
3550 | WORD e_ovno; |
||
3551 | WORD e_res[4]; |
||
3552 | WORD e_oemid; |
||
3553 | WORD e_oeminfo; |
||
3554 | WORD e_res2[10]; |
||
3555 | LONG e_lfanew; |
||
3556 | } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER; |
||
3557 | |||
3558 | typedef struct _IMAGE_OS2_HEADER { |
||
3559 | WORD ne_magic; |
||
3560 | CHAR ne_ver; |
||
3561 | CHAR ne_rev; |
||
3562 | WORD ne_enttab; |
||
3563 | WORD ne_cbenttab; |
||
3564 | LONG ne_crc; |
||
3565 | WORD ne_flags; |
||
3566 | WORD ne_autodata; |
||
3567 | WORD ne_heap; |
||
3568 | WORD ne_stack; |
||
3569 | LONG ne_csip; |
||
3570 | LONG ne_sssp; |
||
3571 | WORD ne_cseg; |
||
3572 | WORD ne_cmod; |
||
3573 | WORD ne_cbnrestab; |
||
3574 | WORD ne_segtab; |
||
3575 | WORD ne_rsrctab; |
||
3576 | WORD ne_restab; |
||
3577 | WORD ne_modtab; |
||
3578 | WORD ne_imptab; |
||
3579 | LONG ne_nrestab; |
||
3580 | WORD ne_cmovent; |
||
3581 | WORD ne_align; |
||
3582 | WORD ne_cres; |
||
3583 | BYTE ne_exetyp; |
||
3584 | BYTE ne_flagsothers; |
||
3585 | WORD ne_pretthunks; |
||
3586 | WORD ne_psegrefbytes; |
||
3587 | WORD ne_swaparea; |
||
3588 | WORD ne_expver; |
||
3589 | } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER; |
||
3590 | |||
3591 | typedef struct _IMAGE_VXD_HEADER { |
||
3592 | WORD e32_magic; |
||
3593 | BYTE e32_border; |
||
3594 | BYTE e32_worder; |
||
3595 | DWORD e32_level; |
||
3596 | WORD e32_cpu; |
||
3597 | WORD e32_os; |
||
3598 | DWORD e32_ver; |
||
3599 | DWORD e32_mflags; |
||
3600 | DWORD e32_mpages; |
||
3601 | DWORD e32_startobj; |
||
3602 | DWORD e32_eip; |
||
3603 | DWORD e32_stackobj; |
||
3604 | DWORD e32_esp; |
||
3605 | DWORD e32_pagesize; |
||
3606 | DWORD e32_lastpagesize; |
||
3607 | DWORD e32_fixupsize; |
||
3608 | DWORD e32_fixupsum; |
||
3609 | DWORD e32_ldrsize; |
||
3610 | DWORD e32_ldrsum; |
||
3611 | DWORD e32_objtab; |
||
3612 | DWORD e32_objcnt; |
||
3613 | DWORD e32_objmap; |
||
3614 | DWORD e32_itermap; |
||
3615 | DWORD e32_rsrctab; |
||
3616 | DWORD e32_rsrccnt; |
||
3617 | DWORD e32_restab; |
||
3618 | DWORD e32_enttab; |
||
3619 | DWORD e32_dirtab; |
||
3620 | DWORD e32_dircnt; |
||
3621 | DWORD e32_fpagetab; |
||
3622 | DWORD e32_frectab; |
||
3623 | DWORD e32_impmod; |
||
3624 | DWORD e32_impmodcnt; |
||
3625 | DWORD e32_impproc; |
||
3626 | DWORD e32_pagesum; |
||
3627 | DWORD e32_datapage; |
||
3628 | DWORD e32_preload; |
||
3629 | DWORD e32_nrestab; |
||
3630 | DWORD e32_cbnrestab; |
||
3631 | DWORD e32_nressum; |
||
3632 | DWORD e32_autodata; |
||
3633 | DWORD e32_debuginfo; |
||
3634 | DWORD e32_debuglen; |
||
3635 | DWORD e32_instpreload; |
||
3636 | DWORD e32_instdemand; |
||
3637 | DWORD e32_heapsize; |
||
3638 | BYTE e32_res3[12]; |
||
3639 | DWORD e32_winresoff; |
||
3640 | DWORD e32_winreslen; |
||
3641 | WORD e32_devid; |
||
3642 | WORD e32_ddkver; |
||
3643 | } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER; |
||
3644 | |||
3645 | #include "poppack.h" |
||
3646 | |||
3647 | typedef struct _IMAGE_FILE_HEADER { |
||
3648 | WORD Machine; |
||
3649 | WORD NumberOfSections; |
||
3650 | DWORD TimeDateStamp; |
||
3651 | DWORD PointerToSymbolTable; |
||
3652 | DWORD NumberOfSymbols; |
||
3653 | WORD SizeOfOptionalHeader; |
||
3654 | WORD Characteristics; |
||
3655 | } IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER; |
||
3656 | |||
3657 | #define IMAGE_SIZEOF_FILE_HEADER 20 |
||
3658 | |||
3659 | #define IMAGE_FILE_RELOCS_STRIPPED 0x0001 |
||
3660 | #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 |
||
3661 | #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 |
||
3662 | #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 |
||
3663 | #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 |
||
3664 | #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 |
||
3665 | #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 |
||
3666 | #define IMAGE_FILE_32BIT_MACHINE 0x0100 |
||
3667 | #define IMAGE_FILE_DEBUG_STRIPPED 0x0200 |
||
3668 | #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 |
||
3669 | #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 |
||
3670 | #define IMAGE_FILE_SYSTEM 0x1000 |
||
3671 | #define IMAGE_FILE_DLL 0x2000 |
||
3672 | #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 |
||
3673 | #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 |
||
3674 | |||
3675 | #define IMAGE_FILE_MACHINE_UNKNOWN 0 |
||
3676 | #define IMAGE_FILE_MACHINE_I386 0x014c |
||
3677 | #define IMAGE_FILE_MACHINE_R3000 0x0162 |
||
3678 | #define IMAGE_FILE_MACHINE_R4000 0x0166 |
||
3679 | #define IMAGE_FILE_MACHINE_R10000 0x0168 |
||
3680 | #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 |
||
3681 | #define IMAGE_FILE_MACHINE_ALPHA 0x0184 |
||
3682 | #define IMAGE_FILE_MACHINE_SH3 0x01a2 |
||
3683 | #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 |
||
3684 | #define IMAGE_FILE_MACHINE_SH3E 0x01a4 |
||
3685 | #define IMAGE_FILE_MACHINE_SH4 0x01a6 |
||
3686 | #define IMAGE_FILE_MACHINE_SH5 0x01a8 |
||
3687 | #define IMAGE_FILE_MACHINE_ARM 0x01c0 |
||
3688 | #define IMAGE_FILE_MACHINE_THUMB 0x01c2 |
||
3689 | #define IMAGE_FILE_MACHINE_AM33 0x01d3 |
||
3690 | #define IMAGE_FILE_MACHINE_POWERPC 0x01F0 |
||
3691 | #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 |
||
3692 | #define IMAGE_FILE_MACHINE_IA64 0x0200 |
||
3693 | #define IMAGE_FILE_MACHINE_MIPS16 0x0266 |
||
3694 | #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 |
||
3695 | #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 |
||
3696 | #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 |
||
3697 | #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 |
||
3698 | #define IMAGE_FILE_MACHINE_TRICORE 0x0520 |
||
3699 | #define IMAGE_FILE_MACHINE_CEF 0x0CEF |
||
3700 | #define IMAGE_FILE_MACHINE_EBC 0x0EBC |
||
3701 | #define IMAGE_FILE_MACHINE_AMD64 0x8664 |
||
3702 | #define IMAGE_FILE_MACHINE_M32R 0x9041 |
||
3703 | #define IMAGE_FILE_MACHINE_CEE 0xC0EE |
||
3704 | |||
3705 | typedef struct _IMAGE_DATA_DIRECTORY { |
||
3706 | DWORD VirtualAddress; |
||
3707 | DWORD Size; |
||
3708 | } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; |
||
3709 | |||
3710 | #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 |
||
3711 | |||
3712 | typedef struct _IMAGE_OPTIONAL_HEADER { |
||
3713 | |||
3714 | WORD Magic; |
||
3715 | BYTE MajorLinkerVersion; |
||
3716 | BYTE MinorLinkerVersion; |
||
3717 | DWORD SizeOfCode; |
||
3718 | DWORD SizeOfInitializedData; |
||
3719 | DWORD SizeOfUninitializedData; |
||
3720 | DWORD AddressOfEntryPoint; |
||
3721 | DWORD BaseOfCode; |
||
3722 | DWORD BaseOfData; |
||
3723 | DWORD ImageBase; |
||
3724 | DWORD SectionAlignment; |
||
3725 | DWORD FileAlignment; |
||
3726 | WORD MajorOperatingSystemVersion; |
||
3727 | WORD MinorOperatingSystemVersion; |
||
3728 | WORD MajorImageVersion; |
||
3729 | WORD MinorImageVersion; |
||
3730 | WORD MajorSubsystemVersion; |
||
3731 | WORD MinorSubsystemVersion; |
||
3732 | DWORD Win32VersionValue; |
||
3733 | DWORD SizeOfImage; |
||
3734 | DWORD SizeOfHeaders; |
||
3735 | DWORD CheckSum; |
||
3736 | WORD Subsystem; |
||
3737 | WORD DllCharacteristics; |
||
3738 | DWORD SizeOfStackReserve; |
||
3739 | DWORD SizeOfStackCommit; |
||
3740 | DWORD SizeOfHeapReserve; |
||
3741 | DWORD SizeOfHeapCommit; |
||
3742 | DWORD LoaderFlags; |
||
3743 | DWORD NumberOfRvaAndSizes; |
||
3744 | IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; |
||
3745 | } IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32; |
||
3746 | |||
3747 | typedef struct _IMAGE_ROM_OPTIONAL_HEADER { |
||
3748 | WORD Magic; |
||
3749 | BYTE MajorLinkerVersion; |
||
3750 | BYTE MinorLinkerVersion; |
||
3751 | DWORD SizeOfCode; |
||
3752 | DWORD SizeOfInitializedData; |
||
3753 | DWORD SizeOfUninitializedData; |
||
3754 | DWORD AddressOfEntryPoint; |
||
3755 | DWORD BaseOfCode; |
||
3756 | DWORD BaseOfData; |
||
3757 | DWORD BaseOfBss; |
||
3758 | DWORD GprMask; |
||
3759 | DWORD CprMask[4]; |
||
3760 | DWORD GpValue; |
||
3761 | } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER; |
||
3762 | |||
3763 | typedef struct _IMAGE_OPTIONAL_HEADER64 { |
||
3764 | WORD Magic; |
||
3765 | BYTE MajorLinkerVersion; |
||
3766 | BYTE MinorLinkerVersion; |
||
3767 | DWORD SizeOfCode; |
||
3768 | DWORD SizeOfInitializedData; |
||
3769 | DWORD SizeOfUninitializedData; |
||
3770 | DWORD AddressOfEntryPoint; |
||
3771 | DWORD BaseOfCode; |
||
3772 | ULONGLONG ImageBase; |
||
3773 | DWORD SectionAlignment; |
||
3774 | DWORD FileAlignment; |
||
3775 | WORD MajorOperatingSystemVersion; |
||
3776 | WORD MinorOperatingSystemVersion; |
||
3777 | WORD MajorImageVersion; |
||
3778 | WORD MinorImageVersion; |
||
3779 | WORD MajorSubsystemVersion; |
||
3780 | WORD MinorSubsystemVersion; |
||
3781 | DWORD Win32VersionValue; |
||
3782 | DWORD SizeOfImage; |
||
3783 | DWORD SizeOfHeaders; |
||
3784 | DWORD CheckSum; |
||
3785 | WORD Subsystem; |
||
3786 | WORD DllCharacteristics; |
||
3787 | ULONGLONG SizeOfStackReserve; |
||
3788 | ULONGLONG SizeOfStackCommit; |
||
3789 | ULONGLONG SizeOfHeapReserve; |
||
3790 | ULONGLONG SizeOfHeapCommit; |
||
3791 | DWORD LoaderFlags; |
||
3792 | DWORD NumberOfRvaAndSizes; |
||
3793 | IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; |
||
3794 | } IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64; |
||
3795 | |||
3796 | #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 |
||
3797 | #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 |
||
3798 | #define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224 |
||
3799 | #define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240 |
||
3800 | |||
3801 | #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b |
||
3802 | #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b |
||
3803 | #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 |
||
3804 | |||
3805 | #ifdef _WIN64 |
||
3806 | typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; |
||
3807 | typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; |
||
3808 | #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER |
||
3809 | #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC |
||
3810 | #else |
||
3811 | typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; |
||
3812 | typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; |
||
3813 | #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER |
||
3814 | #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC |
||
3815 | #endif |
||
3816 | |||
3817 | typedef struct _IMAGE_NT_HEADERS64 { |
||
3818 | DWORD Signature; |
||
3819 | IMAGE_FILE_HEADER FileHeader; |
||
3820 | IMAGE_OPTIONAL_HEADER64 OptionalHeader; |
||
3821 | } IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64; |
||
3822 | |||
3823 | typedef struct _IMAGE_NT_HEADERS { |
||
3824 | DWORD Signature; |
||
3825 | IMAGE_FILE_HEADER FileHeader; |
||
3826 | IMAGE_OPTIONAL_HEADER32 OptionalHeader; |
||
3827 | } IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32; |
||
3828 | |||
3829 | typedef struct _IMAGE_ROM_HEADERS { |
||
3830 | IMAGE_FILE_HEADER FileHeader; |
||
3831 | IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; |
||
3832 | } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS; |
||
3833 | |||
3834 | #ifdef _WIN64 |
||
3835 | typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; |
||
3836 | typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; |
||
3837 | #else |
||
3838 | typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; |
||
3839 | typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; |
||
3840 | #endif |
||
3841 | |||
3842 | #define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader)) |
||
3843 | |||
3844 | #define IMAGE_SUBSYSTEM_UNKNOWN 0 |
||
3845 | #define IMAGE_SUBSYSTEM_NATIVE 1 |
||
3846 | #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 |
||
3847 | #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 |
||
3848 | #define IMAGE_SUBSYSTEM_OS2_CUI 5 |
||
3849 | #define IMAGE_SUBSYSTEM_POSIX_CUI 7 |
||
3850 | #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 |
||
3851 | #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 |
||
3852 | #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 |
||
3853 | #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 |
||
3854 | #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 |
||
3855 | #define IMAGE_SUBSYSTEM_EFI_ROM 13 |
||
3856 | #define IMAGE_SUBSYSTEM_XBOX 14 |
||
3857 | |||
3858 | #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 |
||
3859 | #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 |
||
3860 | #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 |
||
3861 | #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 |
||
3862 | #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 |
||
3863 | |||
3864 | #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 |
||
3865 | #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 |
||
3866 | #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 |
||
3867 | #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 |
||
3868 | #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 |
||
3869 | #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 |
||
3870 | #define IMAGE_DIRECTORY_ENTRY_DEBUG 6 |
||
3871 | |||
3872 | #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 |
||
3873 | #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 |
||
3874 | #define IMAGE_DIRECTORY_ENTRY_TLS 9 |
||
3875 | #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 |
||
3876 | #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 |
||
3877 | #define IMAGE_DIRECTORY_ENTRY_IAT 12 |
||
3878 | #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 |
||
3879 | #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 |
||
3880 | |||
3881 | typedef struct ANON_OBJECT_HEADER { |
||
3882 | WORD Sig1; |
||
3883 | WORD Sig2; |
||
3884 | WORD Version; |
||
3885 | WORD Machine; |
||
3886 | DWORD TimeDateStamp; |
||
3887 | CLSID ClassID; |
||
3888 | DWORD SizeOfData; |
||
3889 | } ANON_OBJECT_HEADER; |
||
3890 | |||
3891 | #define IMAGE_SIZEOF_SHORT_NAME 8 |
||
3892 | |||
3893 | typedef struct _IMAGE_SECTION_HEADER { |
||
3894 | BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; |
||
3895 | union { |
||
3896 | DWORD PhysicalAddress; |
||
3897 | DWORD VirtualSize; |
||
3898 | } Misc; |
||
3899 | DWORD VirtualAddress; |
||
3900 | DWORD SizeOfRawData; |
||
3901 | DWORD PointerToRawData; |
||
3902 | DWORD PointerToRelocations; |
||
3903 | DWORD PointerToLinenumbers; |
||
3904 | WORD NumberOfRelocations; |
||
3905 | WORD NumberOfLinenumbers; |
||
3906 | DWORD Characteristics; |
||
3907 | } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; |
||
3908 | |||
3909 | #define IMAGE_SIZEOF_SECTION_HEADER 40 |
||
3910 | |||
3911 | #define IMAGE_SCN_TYPE_NO_PAD 0x00000008 |
||
3912 | |||
3913 | #define IMAGE_SCN_CNT_CODE 0x00000020 |
||
3914 | #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 |
||
3915 | #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 |
||
3916 | #define IMAGE_SCN_LNK_OTHER 0x00000100 |
||
3917 | #define IMAGE_SCN_LNK_INFO 0x00000200 |
||
3918 | #define IMAGE_SCN_LNK_REMOVE 0x00000800 |
||
3919 | #define IMAGE_SCN_LNK_COMDAT 0x00001000 |
||
3920 | #define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000 |
||
3921 | #define IMAGE_SCN_GPREL 0x00008000 |
||
3922 | #define IMAGE_SCN_MEM_FARDATA 0x00008000 |
||
3923 | #define IMAGE_SCN_MEM_PURGEABLE 0x00020000 |
||
3924 | #define IMAGE_SCN_MEM_16BIT 0x00020000 |
||
3925 | #define IMAGE_SCN_MEM_LOCKED 0x00040000 |
||
3926 | #define IMAGE_SCN_MEM_PRELOAD 0x00080000 |
||
3927 | |||
3928 | #define IMAGE_SCN_ALIGN_1BYTES 0x00100000 |
||
3929 | #define IMAGE_SCN_ALIGN_2BYTES 0x00200000 |
||
3930 | #define IMAGE_SCN_ALIGN_4BYTES 0x00300000 |
||
3931 | #define IMAGE_SCN_ALIGN_8BYTES 0x00400000 |
||
3932 | #define IMAGE_SCN_ALIGN_16BYTES 0x00500000 |
||
3933 | #define IMAGE_SCN_ALIGN_32BYTES 0x00600000 |
||
3934 | #define IMAGE_SCN_ALIGN_64BYTES 0x00700000 |
||
3935 | #define IMAGE_SCN_ALIGN_128BYTES 0x00800000 |
||
3936 | #define IMAGE_SCN_ALIGN_256BYTES 0x00900000 |
||
3937 | #define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 |
||
3938 | #define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 |
||
3939 | #define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 |
||
3940 | #define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 |
||
3941 | #define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 |
||
3942 | |||
3943 | #define IMAGE_SCN_ALIGN_MASK 0x00F00000 |
||
3944 | |||
3945 | #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 |
||
3946 | #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 |
||
3947 | #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 |
||
3948 | #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 |
||
3949 | #define IMAGE_SCN_MEM_SHARED 0x10000000 |
||
3950 | #define IMAGE_SCN_MEM_EXECUTE 0x20000000 |
||
3951 | #define IMAGE_SCN_MEM_READ 0x40000000 |
||
3952 | #define IMAGE_SCN_MEM_WRITE 0x80000000 |
||
3953 | |||
3954 | #define IMAGE_SCN_SCALE_INDEX 0x00000001 |
||
3955 | |||
3956 | #include "pshpack2.h" |
||
3957 | |||
3958 | typedef struct _IMAGE_SYMBOL { |
||
3959 | union { |
||
3960 | BYTE ShortName[8]; |
||
3961 | struct { |
||
3962 | DWORD Short; |
||
3963 | DWORD Long; |
||
3964 | } Name; |
||
3965 | DWORD LongName[2]; |
||
3966 | } N; |
||
3967 | DWORD Value; |
||
3968 | SHORT SectionNumber; |
||
3969 | WORD Type; |
||
3970 | BYTE StorageClass; |
||
3971 | BYTE NumberOfAuxSymbols; |
||
3972 | } IMAGE_SYMBOL; |
||
3973 | typedef IMAGE_SYMBOL UNALIGNED *PIMAGE_SYMBOL; |
||
3974 | |||
3975 | #define IMAGE_SIZEOF_SYMBOL 18 |
||
3976 | |||
3977 | #define IMAGE_SYM_UNDEFINED (SHORT)0 |
||
3978 | #define IMAGE_SYM_ABSOLUTE (SHORT)-1 |
||
3979 | #define IMAGE_SYM_DEBUG (SHORT)-2 |
||
3980 | #define IMAGE_SYM_SECTION_MAX 0xFEFF |
||
3981 | |||
3982 | #define IMAGE_SYM_TYPE_NULL 0x0000 |
||
3983 | #define IMAGE_SYM_TYPE_VOID 0x0001 |
||
3984 | #define IMAGE_SYM_TYPE_CHAR 0x0002 |
||
3985 | #define IMAGE_SYM_TYPE_SHORT 0x0003 |
||
3986 | #define IMAGE_SYM_TYPE_INT 0x0004 |
||
3987 | #define IMAGE_SYM_TYPE_LONG 0x0005 |
||
3988 | #define IMAGE_SYM_TYPE_FLOAT 0x0006 |
||
3989 | #define IMAGE_SYM_TYPE_DOUBLE 0x0007 |
||
3990 | #define IMAGE_SYM_TYPE_STRUCT 0x0008 |
||
3991 | #define IMAGE_SYM_TYPE_UNION 0x0009 |
||
3992 | #define IMAGE_SYM_TYPE_ENUM 0x000A |
||
3993 | #define IMAGE_SYM_TYPE_MOE 0x000B |
||
3994 | #define IMAGE_SYM_TYPE_BYTE 0x000C |
||
3995 | #define IMAGE_SYM_TYPE_WORD 0x000D |
||
3996 | #define IMAGE_SYM_TYPE_UINT 0x000E |
||
3997 | #define IMAGE_SYM_TYPE_DWORD 0x000F |
||
3998 | #define IMAGE_SYM_TYPE_PCODE 0x8000 |
||
3999 | |||
4000 | #define IMAGE_SYM_DTYPE_NULL 0 |
||
4001 | #define IMAGE_SYM_DTYPE_POINTER 1 |
||
4002 | #define IMAGE_SYM_DTYPE_FUNCTION 2 |
||
4003 | #define IMAGE_SYM_DTYPE_ARRAY 3 |
||
4004 | |||
4005 | #define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE)-1 |
||
4006 | #define IMAGE_SYM_CLASS_NULL 0x0000 |
||
4007 | #define IMAGE_SYM_CLASS_AUTOMATIC 0x0001 |
||
4008 | #define IMAGE_SYM_CLASS_EXTERNAL 0x0002 |
||
4009 | #define IMAGE_SYM_CLASS_STATIC 0x0003 |
||
4010 | #define IMAGE_SYM_CLASS_REGISTER 0x0004 |
||
4011 | #define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005 |
||
4012 | #define IMAGE_SYM_CLASS_LABEL 0x0006 |
||
4013 | #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007 |
||
4014 | #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008 |
||
4015 | #define IMAGE_SYM_CLASS_ARGUMENT 0x0009 |
||
4016 | #define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A |
||
4017 | #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B |
||
4018 | #define IMAGE_SYM_CLASS_UNION_TAG 0x000C |
||
4019 | #define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D |
||
4020 | #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E |
||
4021 | #define IMAGE_SYM_CLASS_ENUM_TAG 0x000F |
||
4022 | #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010 |
||
4023 | #define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011 |
||
4024 | #define IMAGE_SYM_CLASS_BIT_FIELD 0x0012 |
||
4025 | #define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044 |
||
4026 | #define IMAGE_SYM_CLASS_BLOCK 0x0064 |
||
4027 | #define IMAGE_SYM_CLASS_FUNCTION 0x0065 |
||
4028 | #define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066 |
||
4029 | #define IMAGE_SYM_CLASS_FILE 0x0067 |
||
4030 | #define IMAGE_SYM_CLASS_SECTION 0x0068 |
||
4031 | #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069 |
||
4032 | #define IMAGE_SYM_CLASS_CLR_TOKEN 0x006B |
||
4033 | |||
4034 | #define N_BTMASK 0x000F |
||
4035 | #define N_TMASK 0x0030 |
||
4036 | #define N_TMASK1 0x00C0 |
||
4037 | #define N_TMASK2 0x00F0 |
||
4038 | #define N_BTSHFT 4 |
||
4039 | #define N_TSHIFT 2 |
||
4040 | |||
4041 | #define BTYPE(x) ((x) & N_BTMASK) |
||
4042 | |||
4043 | #ifndef ISPTR |
||
4044 | #define ISPTR(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_POINTER << N_BTSHFT)) |
||
4045 | #endif |
||
4046 | |||
4047 | #ifndef ISFCN |
||
4048 | #define ISFCN(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT)) |
||
4049 | #endif |
||
4050 | |||
4051 | #ifndef ISARY |
||
4052 | #define ISARY(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT)) |
||
4053 | #endif |
||
4054 | |||
4055 | #ifndef ISTAG |
||
4056 | #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG) |
||
4057 | #endif |
||
4058 | |||
4059 | #ifndef INCREF |
||
4060 | #define INCREF(x) ((((x)&~N_BTMASK)< |
||
4061 | #endif |
||
4062 | #ifndef DECREF |
||
4063 | #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK)) |
||
4064 | #endif |
||
4065 | |||
4066 | typedef union _IMAGE_AUX_SYMBOL { |
||
4067 | struct { |
||
4068 | DWORD TagIndex; |
||
4069 | union { |
||
4070 | struct { |
||
4071 | WORD Linenumber; |
||
4072 | WORD Size; |
||
4073 | } LnSz; |
||
4074 | DWORD TotalSize; |
||
4075 | } Misc; |
||
4076 | union { |
||
4077 | struct { |
||
4078 | DWORD PointerToLinenumber; |
||
4079 | DWORD PointerToNextFunction; |
||
4080 | } Function; |
||
4081 | struct { |
||
4082 | WORD Dimension[4]; |
||
4083 | } Array; |
||
4084 | } FcnAry; |
||
4085 | WORD TvIndex; |
||
4086 | } Sym; |
||
4087 | struct { |
||
4088 | BYTE Name[IMAGE_SIZEOF_SYMBOL]; |
||
4089 | } File; |
||
4090 | struct { |
||
4091 | DWORD Length; |
||
4092 | WORD NumberOfRelocations; |
||
4093 | WORD NumberOfLinenumbers; |
||
4094 | DWORD CheckSum; |
||
4095 | SHORT Number; |
||
4096 | BYTE Selection; |
||
4097 | } Section; |
||
4098 | } IMAGE_AUX_SYMBOL; |
||
4099 | typedef IMAGE_AUX_SYMBOL UNALIGNED *PIMAGE_AUX_SYMBOL; |
||
4100 | |||
4101 | #define IMAGE_SIZEOF_AUX_SYMBOL 18 |
||
4102 | |||
4103 | typedef enum IMAGE_AUX_SYMBOL_TYPE { |
||
4104 | IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1 |
||
4105 | } IMAGE_AUX_SYMBOL_TYPE; |
||
4106 | |||
4107 | #include |
||
4108 | |||
4109 | typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF { |
||
4110 | BYTE bAuxType; |
||
4111 | BYTE bReserved; |
||
4112 | DWORD SymbolTableIndex; |
||
4113 | BYTE rgbReserved[12]; |
||
4114 | } IMAGE_AUX_SYMBOL_TOKEN_DEF; |
||
4115 | |||
4116 | typedef IMAGE_AUX_SYMBOL_TOKEN_DEF UNALIGNED *PIMAGE_AUX_SYMBOL_TOKEN_DEF; |
||
4117 | |||
4118 | #include |
||
4119 | |||
4120 | #define IMAGE_COMDAT_SELECT_NODUPLICATES 1 |
||
4121 | #define IMAGE_COMDAT_SELECT_ANY 2 |
||
4122 | #define IMAGE_COMDAT_SELECT_SAME_SIZE 3 |
||
4123 | #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 |
||
4124 | #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 |
||
4125 | #define IMAGE_COMDAT_SELECT_LARGEST 6 |
||
4126 | #define IMAGE_COMDAT_SELECT_NEWEST 7 |
||
4127 | |||
4128 | #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 |
||
4129 | #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 |
||
4130 | #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 |
||
4131 | |||
4132 | typedef struct _IMAGE_RELOCATION { |
||
4133 | union { |
||
4134 | DWORD VirtualAddress; |
||
4135 | DWORD RelocCount; |
||
4136 | }; |
||
4137 | DWORD SymbolTableIndex; |
||
4138 | WORD Type; |
||
4139 | } IMAGE_RELOCATION; |
||
4140 | typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION; |
||
4141 | |||
4142 | #define IMAGE_SIZEOF_RELOCATION 10 |
||
4143 | |||
4144 | #define IMAGE_REL_I386_ABSOLUTE 0x0000 |
||
4145 | #define IMAGE_REL_I386_DIR16 0x0001 |
||
4146 | #define IMAGE_REL_I386_REL16 0x0002 |
||
4147 | #define IMAGE_REL_I386_DIR32 0x0006 |
||
4148 | #define IMAGE_REL_I386_DIR32NB 0x0007 |
||
4149 | #define IMAGE_REL_I386_SEG12 0x0009 |
||
4150 | #define IMAGE_REL_I386_SECTION 0x000A |
||
4151 | #define IMAGE_REL_I386_SECREL 0x000B |
||
4152 | #define IMAGE_REL_I386_TOKEN 0x000C |
||
4153 | #define IMAGE_REL_I386_SECREL7 0x000D |
||
4154 | #define IMAGE_REL_I386_REL32 0x0014 |
||
4155 | |||
4156 | #define IMAGE_REL_MIPS_ABSOLUTE 0x0000 |
||
4157 | #define IMAGE_REL_MIPS_REFHALF 0x0001 |
||
4158 | #define IMAGE_REL_MIPS_REFWORD 0x0002 |
||
4159 | #define IMAGE_REL_MIPS_JMPADDR 0x0003 |
||
4160 | #define IMAGE_REL_MIPS_REFHI 0x0004 |
||
4161 | #define IMAGE_REL_MIPS_REFLO 0x0005 |
||
4162 | #define IMAGE_REL_MIPS_GPREL 0x0006 |
||
4163 | #define IMAGE_REL_MIPS_LITERAL 0x0007 |
||
4164 | #define IMAGE_REL_MIPS_SECTION 0x000A |
||
4165 | #define IMAGE_REL_MIPS_SECREL 0x000B |
||
4166 | #define IMAGE_REL_MIPS_SECRELLO 0x000C |
||
4167 | #define IMAGE_REL_MIPS_SECRELHI 0x000D |
||
4168 | #define IMAGE_REL_MIPS_TOKEN 0x000E |
||
4169 | #define IMAGE_REL_MIPS_JMPADDR16 0x0010 |
||
4170 | #define IMAGE_REL_MIPS_REFWORDNB 0x0022 |
||
4171 | #define IMAGE_REL_MIPS_PAIR 0x0025 |
||
4172 | |||
4173 | #define IMAGE_REL_ALPHA_ABSOLUTE 0x0000 |
||
4174 | #define IMAGE_REL_ALPHA_REFLONG 0x0001 |
||
4175 | #define IMAGE_REL_ALPHA_REFQUAD 0x0002 |
||
4176 | #define IMAGE_REL_ALPHA_GPREL32 0x0003 |
||
4177 | #define IMAGE_REL_ALPHA_LITERAL 0x0004 |
||
4178 | #define IMAGE_REL_ALPHA_LITUSE 0x0005 |
||
4179 | #define IMAGE_REL_ALPHA_GPDISP 0x0006 |
||
4180 | #define IMAGE_REL_ALPHA_BRADDR 0x0007 |
||
4181 | #define IMAGE_REL_ALPHA_HINT 0x0008 |
||
4182 | #define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009 |
||
4183 | #define IMAGE_REL_ALPHA_REFHI 0x000A |
||
4184 | #define IMAGE_REL_ALPHA_REFLO 0x000B |
||
4185 | #define IMAGE_REL_ALPHA_PAIR 0x000C |
||
4186 | #define IMAGE_REL_ALPHA_MATCH 0x000D |
||
4187 | #define IMAGE_REL_ALPHA_SECTION 0x000E |
||
4188 | #define IMAGE_REL_ALPHA_SECREL 0x000F |
||
4189 | #define IMAGE_REL_ALPHA_REFLONGNB 0x0010 |
||
4190 | #define IMAGE_REL_ALPHA_SECRELLO 0x0011 |
||
4191 | #define IMAGE_REL_ALPHA_SECRELHI 0x0012 |
||
4192 | #define IMAGE_REL_ALPHA_REFQ3 0x0013 |
||
4193 | #define IMAGE_REL_ALPHA_REFQ2 0x0014 |
||
4194 | #define IMAGE_REL_ALPHA_REFQ1 0x0015 |
||
4195 | #define IMAGE_REL_ALPHA_GPRELLO 0x0016 |
||
4196 | #define IMAGE_REL_ALPHA_GPRELHI 0x0017 |
||
4197 | |||
4198 | #define IMAGE_REL_PPC_ABSOLUTE 0x0000 |
||
4199 | #define IMAGE_REL_PPC_ADDR64 0x0001 |
||
4200 | #define IMAGE_REL_PPC_ADDR32 0x0002 |
||
4201 | #define IMAGE_REL_PPC_ADDR24 0x0003 |
||
4202 | #define IMAGE_REL_PPC_ADDR16 0x0004 |
||
4203 | #define IMAGE_REL_PPC_ADDR14 0x0005 |
||
4204 | #define IMAGE_REL_PPC_REL24 0x0006 |
||
4205 | #define IMAGE_REL_PPC_REL14 0x0007 |
||
4206 | #define IMAGE_REL_PPC_TOCREL16 0x0008 |
||
4207 | #define IMAGE_REL_PPC_TOCREL14 0x0009 |
||
4208 | #define IMAGE_REL_PPC_ADDR32NB 0x000A |
||
4209 | #define IMAGE_REL_PPC_SECREL 0x000B |
||
4210 | #define IMAGE_REL_PPC_SECTION 0x000C |
||
4211 | #define IMAGE_REL_PPC_IFGLUE 0x000D |
||
4212 | #define IMAGE_REL_PPC_IMGLUE 0x000E |
||
4213 | #define IMAGE_REL_PPC_SECREL16 0x000F |
||
4214 | #define IMAGE_REL_PPC_REFHI 0x0010 |
||
4215 | #define IMAGE_REL_PPC_REFLO 0x0011 |
||
4216 | #define IMAGE_REL_PPC_PAIR 0x0012 |
||
4217 | #define IMAGE_REL_PPC_SECRELLO 0x0013 |
||
4218 | #define IMAGE_REL_PPC_SECRELHI 0x0014 |
||
4219 | #define IMAGE_REL_PPC_GPREL 0x0015 |
||
4220 | #define IMAGE_REL_PPC_TOKEN 0x0016 |
||
4221 | #define IMAGE_REL_PPC_TYPEMASK 0x00FF |
||
4222 | #define IMAGE_REL_PPC_NEG 0x0100 |
||
4223 | #define IMAGE_REL_PPC_BRTAKEN 0x0200 |
||
4224 | #define IMAGE_REL_PPC_BRNTAKEN 0x0400 |
||
4225 | #define IMAGE_REL_PPC_TOCDEFN 0x0800 |
||
4226 | |||
4227 | #define IMAGE_REL_SH3_ABSOLUTE 0x0000 |
||
4228 | #define IMAGE_REL_SH3_DIRECT16 0x0001 |
||
4229 | #define IMAGE_REL_SH3_DIRECT32 0x0002 |
||
4230 | #define IMAGE_REL_SH3_DIRECT8 0x0003 |
||
4231 | #define IMAGE_REL_SH3_DIRECT8_WORD 0x0004 |
||
4232 | #define IMAGE_REL_SH3_DIRECT8_LONG 0x0005 |
||
4233 | #define IMAGE_REL_SH3_DIRECT4 0x0006 |
||
4234 | #define IMAGE_REL_SH3_DIRECT4_WORD 0x0007 |
||
4235 | #define IMAGE_REL_SH3_DIRECT4_LONG 0x0008 |
||
4236 | #define IMAGE_REL_SH3_PCREL8_WORD 0x0009 |
||
4237 | #define IMAGE_REL_SH3_PCREL8_LONG 0x000A |
||
4238 | #define IMAGE_REL_SH3_PCREL12_WORD 0x000B |
||
4239 | #define IMAGE_REL_SH3_STARTOF_SECTION 0x000C |
||
4240 | #define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D |
||
4241 | #define IMAGE_REL_SH3_SECTION 0x000E |
||
4242 | #define IMAGE_REL_SH3_SECREL 0x000F |
||
4243 | #define IMAGE_REL_SH3_DIRECT32_NB 0x0010 |
||
4244 | #define IMAGE_REL_SH3_GPREL4_LONG 0x0011 |
||
4245 | #define IMAGE_REL_SH3_TOKEN 0x0012 |
||
4246 | |||
4247 | #define IMAGE_REL_SHM_PCRELPT 0x0013 |
||
4248 | #define IMAGE_REL_SHM_REFLO 0x0014 |
||
4249 | #define IMAGE_REL_SHM_REFHALF 0x0015 |
||
4250 | #define IMAGE_REL_SHM_RELLO 0x0016 |
||
4251 | #define IMAGE_REL_SHM_RELHALF 0x0017 |
||
4252 | #define IMAGE_REL_SHM_PAIR 0x0018 |
||
4253 | |||
4254 | #define IMAGE_REL_SH_NOMODE 0x8000 |
||
4255 | |||
4256 | #define IMAGE_REL_ARM_ABSOLUTE 0x0000 |
||
4257 | #define IMAGE_REL_ARM_ADDR32 0x0001 |
||
4258 | #define IMAGE_REL_ARM_ADDR32NB 0x0002 |
||
4259 | #define IMAGE_REL_ARM_BRANCH24 0x0003 |
||
4260 | #define IMAGE_REL_ARM_BRANCH11 0x0004 |
||
4261 | #define IMAGE_REL_ARM_TOKEN 0x0005 |
||
4262 | #define IMAGE_REL_ARM_GPREL12 0x0006 |
||
4263 | #define IMAGE_REL_ARM_GPREL7 0x0007 |
||
4264 | #define IMAGE_REL_ARM_BLX24 0x0008 |
||
4265 | #define IMAGE_REL_ARM_BLX11 0x0009 |
||
4266 | #define IMAGE_REL_ARM_SECTION 0x000E |
||
4267 | #define IMAGE_REL_ARM_SECREL 0x000F |
||
4268 | |||
4269 | #define IMAGE_REL_AM_ABSOLUTE 0x0000 |
||
4270 | #define IMAGE_REL_AM_ADDR32 0x0001 |
||
4271 | #define IMAGE_REL_AM_ADDR32NB 0x0002 |
||
4272 | #define IMAGE_REL_AM_CALL32 0x0003 |
||
4273 | #define IMAGE_REL_AM_FUNCINFO 0x0004 |
||
4274 | #define IMAGE_REL_AM_REL32_1 0x0005 |
||
4275 | #define IMAGE_REL_AM_REL32_2 0x0006 |
||
4276 | #define IMAGE_REL_AM_SECREL 0x0007 |
||
4277 | #define IMAGE_REL_AM_SECTION 0x0008 |
||
4278 | #define IMAGE_REL_AM_TOKEN 0x0009 |
||
4279 | |||
4280 | #define IMAGE_REL_AMD64_ABSOLUTE 0x0000 |
||
4281 | #define IMAGE_REL_AMD64_ADDR64 0x0001 |
||
4282 | #define IMAGE_REL_AMD64_ADDR32 0x0002 |
||
4283 | #define IMAGE_REL_AMD64_ADDR32NB 0x0003 |
||
4284 | #define IMAGE_REL_AMD64_REL32 0x0004 |
||
4285 | #define IMAGE_REL_AMD64_REL32_1 0x0005 |
||
4286 | #define IMAGE_REL_AMD64_REL32_2 0x0006 |
||
4287 | #define IMAGE_REL_AMD64_REL32_3 0x0007 |
||
4288 | #define IMAGE_REL_AMD64_REL32_4 0x0008 |
||
4289 | #define IMAGE_REL_AMD64_REL32_5 0x0009 |
||
4290 | #define IMAGE_REL_AMD64_SECTION 0x000A |
||
4291 | #define IMAGE_REL_AMD64_SECREL 0x000B |
||
4292 | #define IMAGE_REL_AMD64_SECREL7 0x000C |
||
4293 | #define IMAGE_REL_AMD64_TOKEN 0x000D |
||
4294 | #define IMAGE_REL_AMD64_SREL32 0x000E |
||
4295 | #define IMAGE_REL_AMD64_PAIR 0x000F |
||
4296 | #define IMAGE_REL_AMD64_SSPAN32 0x0010 |
||
4297 | |||
4298 | #define IMAGE_REL_IA64_ABSOLUTE 0x0000 |
||
4299 | #define IMAGE_REL_IA64_IMM14 0x0001 |
||
4300 | #define IMAGE_REL_IA64_IMM22 0x0002 |
||
4301 | #define IMAGE_REL_IA64_IMM64 0x0003 |
||
4302 | #define IMAGE_REL_IA64_DIR32 0x0004 |
||
4303 | #define IMAGE_REL_IA64_DIR64 0x0005 |
||
4304 | #define IMAGE_REL_IA64_PCREL21B 0x0006 |
||
4305 | #define IMAGE_REL_IA64_PCREL21M 0x0007 |
||
4306 | #define IMAGE_REL_IA64_PCREL21F 0x0008 |
||
4307 | #define IMAGE_REL_IA64_GPREL22 0x0009 |
||
4308 | #define IMAGE_REL_IA64_LTOFF22 0x000A |
||
4309 | #define IMAGE_REL_IA64_SECTION 0x000B |
||
4310 | #define IMAGE_REL_IA64_SECREL22 0x000C |
||
4311 | #define IMAGE_REL_IA64_SECREL64I 0x000D |
||
4312 | #define IMAGE_REL_IA64_SECREL32 0x000E |
||
4313 | |||
4314 | #define IMAGE_REL_IA64_DIR32NB 0x0010 |
||
4315 | #define IMAGE_REL_IA64_SREL14 0x0011 |
||
4316 | #define IMAGE_REL_IA64_SREL22 0x0012 |
||
4317 | #define IMAGE_REL_IA64_SREL32 0x0013 |
||
4318 | #define IMAGE_REL_IA64_UREL32 0x0014 |
||
4319 | #define IMAGE_REL_IA64_PCREL60X 0x0015 |
||
4320 | #define IMAGE_REL_IA64_PCREL60B 0x0016 |
||
4321 | #define IMAGE_REL_IA64_PCREL60F 0x0017 |
||
4322 | #define IMAGE_REL_IA64_PCREL60I 0x0018 |
||
4323 | #define IMAGE_REL_IA64_PCREL60M 0x0019 |
||
4324 | #define IMAGE_REL_IA64_IMMGPREL64 0x001A |
||
4325 | #define IMAGE_REL_IA64_TOKEN 0x001B |
||
4326 | #define IMAGE_REL_IA64_GPREL32 0x001C |
||
4327 | #define IMAGE_REL_IA64_ADDEND 0x001F |
||
4328 | |||
4329 | #define IMAGE_REL_CEF_ABSOLUTE 0x0000 |
||
4330 | #define IMAGE_REL_CEF_ADDR32 0x0001 |
||
4331 | #define IMAGE_REL_CEF_ADDR64 0x0002 |
||
4332 | #define IMAGE_REL_CEF_ADDR32NB 0x0003 |
||
4333 | #define IMAGE_REL_CEF_SECTION 0x0004 |
||
4334 | #define IMAGE_REL_CEF_SECREL 0x0005 |
||
4335 | #define IMAGE_REL_CEF_TOKEN 0x0006 |
||
4336 | |||
4337 | #define IMAGE_REL_CEE_ABSOLUTE 0x0000 |
||
4338 | #define IMAGE_REL_CEE_ADDR32 0x0001 |
||
4339 | #define IMAGE_REL_CEE_ADDR64 0x0002 |
||
4340 | #define IMAGE_REL_CEE_ADDR32NB 0x0003 |
||
4341 | #define IMAGE_REL_CEE_SECTION 0x0004 |
||
4342 | #define IMAGE_REL_CEE_SECREL 0x0005 |
||
4343 | #define IMAGE_REL_CEE_TOKEN 0x0006 |
||
4344 | |||
4345 | #define IMAGE_REL_M32R_ABSOLUTE 0x0000 |
||
4346 | #define IMAGE_REL_M32R_ADDR32 0x0001 |
||
4347 | #define IMAGE_REL_M32R_ADDR32NB 0x0002 |
||
4348 | #define IMAGE_REL_M32R_ADDR24 0x0003 |
||
4349 | #define IMAGE_REL_M32R_GPREL16 0x0004 |
||
4350 | #define IMAGE_REL_M32R_PCREL24 0x0005 |
||
4351 | #define IMAGE_REL_M32R_PCREL16 0x0006 |
||
4352 | #define IMAGE_REL_M32R_PCREL8 0x0007 |
||
4353 | #define IMAGE_REL_M32R_REFHALF 0x0008 |
||
4354 | #define IMAGE_REL_M32R_REFHI 0x0009 |
||
4355 | #define IMAGE_REL_M32R_REFLO 0x000A |
||
4356 | #define IMAGE_REL_M32R_PAIR 0x000B |
||
4357 | #define IMAGE_REL_M32R_SECTION 0x000C |
||
4358 | #define IMAGE_REL_M32R_SECREL32 0x000D |
||
4359 | #define IMAGE_REL_M32R_TOKEN 0x000E |
||
4360 | |||
4361 | #define EXT_IMM64(Value,Address,Size,InstPos,ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) |
||
4362 | #define INS_IMM64(Value,Address,Size,InstPos,ValPos) *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos) |
||
4363 | |||
4364 | #define EMARCH_ENC_I17_IMM7B_INST_WORD_X 3 |
||
4365 | #define EMARCH_ENC_I17_IMM7B_SIZE_X 7 |
||
4366 | #define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 4 |
||
4367 | #define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0 |
||
4368 | |||
4369 | #define EMARCH_ENC_I17_IMM9D_INST_WORD_X 3 |
||
4370 | #define EMARCH_ENC_I17_IMM9D_SIZE_X 9 |
||
4371 | #define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 18 |
||
4372 | #define EMARCH_ENC_I17_IMM9D_VAL_POS_X 7 |
||
4373 | |||
4374 | #define EMARCH_ENC_I17_IMM5C_INST_WORD_X 3 |
||
4375 | #define EMARCH_ENC_I17_IMM5C_SIZE_X 5 |
||
4376 | #define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 13 |
||
4377 | #define EMARCH_ENC_I17_IMM5C_VAL_POS_X 16 |
||
4378 | |||
4379 | #define EMARCH_ENC_I17_IC_INST_WORD_X 3 |
||
4380 | #define EMARCH_ENC_I17_IC_SIZE_X 1 |
||
4381 | #define EMARCH_ENC_I17_IC_INST_WORD_POS_X 12 |
||
4382 | #define EMARCH_ENC_I17_IC_VAL_POS_X 21 |
||
4383 | |||
4384 | #define EMARCH_ENC_I17_IMM41a_INST_WORD_X 1 |
||
4385 | #define EMARCH_ENC_I17_IMM41a_SIZE_X 10 |
||
4386 | #define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 14 |
||
4387 | #define EMARCH_ENC_I17_IMM41a_VAL_POS_X 22 |
||
4388 | |||
4389 | #define EMARCH_ENC_I17_IMM41b_INST_WORD_X 1 |
||
4390 | #define EMARCH_ENC_I17_IMM41b_SIZE_X 8 |
||
4391 | #define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 24 |
||
4392 | #define EMARCH_ENC_I17_IMM41b_VAL_POS_X 32 |
||
4393 | |||
4394 | #define EMARCH_ENC_I17_IMM41c_INST_WORD_X 2 |
||
4395 | #define EMARCH_ENC_I17_IMM41c_SIZE_X 23 |
||
4396 | #define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0 |
||
4397 | #define EMARCH_ENC_I17_IMM41c_VAL_POS_X 40 |
||
4398 | |||
4399 | #define EMARCH_ENC_I17_SIGN_INST_WORD_X 3 |
||
4400 | #define EMARCH_ENC_I17_SIGN_SIZE_X 1 |
||
4401 | #define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 27 |
||
4402 | #define EMARCH_ENC_I17_SIGN_VAL_POS_X 63 |
||
4403 | |||
4404 | #define X3_OPCODE_INST_WORD_X 3 |
||
4405 | #define X3_OPCODE_SIZE_X 4 |
||
4406 | #define X3_OPCODE_INST_WORD_POS_X 28 |
||
4407 | #define X3_OPCODE_SIGN_VAL_POS_X 0 |
||
4408 | |||
4409 | #define X3_I_INST_WORD_X 3 |
||
4410 | #define X3_I_SIZE_X 1 |
||
4411 | #define X3_I_INST_WORD_POS_X 27 |
||
4412 | #define X3_I_SIGN_VAL_POS_X 59 |
||
4413 | |||
4414 | #define X3_D_WH_INST_WORD_X 3 |
||
4415 | #define X3_D_WH_SIZE_X 3 |
||
4416 | #define X3_D_WH_INST_WORD_POS_X 24 |
||
4417 | #define X3_D_WH_SIGN_VAL_POS_X 0 |
||
4418 | |||
4419 | #define X3_IMM20_INST_WORD_X 3 |
||
4420 | #define X3_IMM20_SIZE_X 20 |
||
4421 | #define X3_IMM20_INST_WORD_POS_X 4 |
||
4422 | #define X3_IMM20_SIGN_VAL_POS_X 0 |
||
4423 | |||
4424 | #define X3_IMM39_1_INST_WORD_X 2 |
||
4425 | #define X3_IMM39_1_SIZE_X 23 |
||
4426 | #define X3_IMM39_1_INST_WORD_POS_X 0 |
||
4427 | #define X3_IMM39_1_SIGN_VAL_POS_X 36 |
||
4428 | |||
4429 | #define X3_IMM39_2_INST_WORD_X 1 |
||
4430 | #define X3_IMM39_2_SIZE_X 16 |
||
4431 | #define X3_IMM39_2_INST_WORD_POS_X 16 |
||
4432 | #define X3_IMM39_2_SIGN_VAL_POS_X 20 |
||
4433 | |||
4434 | #define X3_P_INST_WORD_X 3 |
||
4435 | #define X3_P_SIZE_X 4 |
||
4436 | #define X3_P_INST_WORD_POS_X 0 |
||
4437 | #define X3_P_SIGN_VAL_POS_X 0 |
||
4438 | |||
4439 | #define X3_TMPLT_INST_WORD_X 0 |
||
4440 | #define X3_TMPLT_SIZE_X 4 |
||
4441 | #define X3_TMPLT_INST_WORD_POS_X 0 |
||
4442 | #define X3_TMPLT_SIGN_VAL_POS_X 0 |
||
4443 | |||
4444 | #define X3_BTYPE_QP_INST_WORD_X 2 |
||
4445 | #define X3_BTYPE_QP_SIZE_X 9 |
||
4446 | #define X3_BTYPE_QP_INST_WORD_POS_X 23 |
||
4447 | #define X3_BTYPE_QP_INST_VAL_POS_X 0 |
||
4448 | |||
4449 | #define X3_EMPTY_INST_WORD_X 1 |
||
4450 | #define X3_EMPTY_SIZE_X 2 |
||
4451 | #define X3_EMPTY_INST_WORD_POS_X 14 |
||
4452 | #define X3_EMPTY_INST_VAL_POS_X 0 |
||
4453 | |||
4454 | typedef struct _IMAGE_LINENUMBER { |
||
4455 | union { |
||
4456 | DWORD SymbolTableIndex; |
||
4457 | DWORD VirtualAddress; |
||
4458 | } Type; |
||
4459 | WORD Linenumber; |
||
4460 | } IMAGE_LINENUMBER; |
||
4461 | typedef IMAGE_LINENUMBER UNALIGNED *PIMAGE_LINENUMBER; |
||
4462 | |||
4463 | #define IMAGE_SIZEOF_LINENUMBER 6 |
||
4464 | |||
4465 | #include "poppack.h" |
||
4466 | |||
4467 | typedef struct _IMAGE_BASE_RELOCATION { |
||
4468 | DWORD VirtualAddress; |
||
4469 | DWORD SizeOfBlock; |
||
4470 | |||
4471 | } IMAGE_BASE_RELOCATION; |
||
4472 | typedef IMAGE_BASE_RELOCATION UNALIGNED *PIMAGE_BASE_RELOCATION; |
||
4473 | |||
4474 | #define IMAGE_SIZEOF_BASE_RELOCATION 8 |
||
4475 | |||
4476 | #define IMAGE_REL_BASED_ABSOLUTE 0 |
||
4477 | #define IMAGE_REL_BASED_HIGH 1 |
||
4478 | #define IMAGE_REL_BASED_LOW 2 |
||
4479 | #define IMAGE_REL_BASED_HIGHLOW 3 |
||
4480 | #define IMAGE_REL_BASED_HIGHADJ 4 |
||
4481 | #define IMAGE_REL_BASED_MIPS_JMPADDR 5 |
||
4482 | #define IMAGE_REL_BASED_MIPS_JMPADDR16 9 |
||
4483 | #define IMAGE_REL_BASED_IA64_IMM64 9 |
||
4484 | #define IMAGE_REL_BASED_DIR64 10 |
||
4485 | |||
4486 | #define IMAGE_ARCHIVE_START_SIZE 8 |
||
4487 | #define IMAGE_ARCHIVE_START "! |
||
4488 | #define IMAGE_ARCHIVE_END "`\n" |
||
4489 | #define IMAGE_ARCHIVE_PAD "\n" |
||
4490 | #define IMAGE_ARCHIVE_LINKER_MEMBER "/ " |
||
4491 | #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " |
||
4492 | |||
4493 | typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { |
||
4494 | BYTE Name[16]; |
||
4495 | BYTE Date[12]; |
||
4496 | BYTE UserID[6]; |
||
4497 | BYTE GroupID[6]; |
||
4498 | BYTE Mode[8]; |
||
4499 | BYTE Size[10]; |
||
4500 | BYTE EndHeader[2]; |
||
4501 | } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER; |
||
4502 | |||
4503 | #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 |
||
4504 | |||
4505 | typedef struct _IMAGE_EXPORT_DIRECTORY { |
||
4506 | DWORD Characteristics; |
||
4507 | DWORD TimeDateStamp; |
||
4508 | WORD MajorVersion; |
||
4509 | WORD MinorVersion; |
||
4510 | DWORD Name; |
||
4511 | DWORD Base; |
||
4512 | DWORD NumberOfFunctions; |
||
4513 | DWORD NumberOfNames; |
||
4514 | DWORD AddressOfFunctions; |
||
4515 | DWORD AddressOfNames; |
||
4516 | DWORD AddressOfNameOrdinals; |
||
4517 | } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY; |
||
4518 | |||
4519 | typedef struct _IMAGE_IMPORT_BY_NAME { |
||
4520 | WORD Hint; |
||
4521 | BYTE Name[1]; |
||
4522 | } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME; |
||
4523 | |||
4524 | #include "pshpack8.h" |
||
4525 | |||
4526 | typedef struct _IMAGE_THUNK_DATA64 { |
||
4527 | union { |
||
4528 | ULONGLONG ForwarderString; |
||
4529 | ULONGLONG Function; |
||
4530 | ULONGLONG Ordinal; |
||
4531 | ULONGLONG AddressOfData; |
||
4532 | } u1; |
||
4533 | } IMAGE_THUNK_DATA64; |
||
4534 | typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64; |
||
4535 | |||
4536 | #include "poppack.h" |
||
4537 | |||
4538 | typedef struct _IMAGE_THUNK_DATA32 { |
||
4539 | union { |
||
4540 | DWORD ForwarderString; |
||
4541 | DWORD Function; |
||
4542 | DWORD Ordinal; |
||
4543 | DWORD AddressOfData; |
||
4544 | } u1; |
||
4545 | } IMAGE_THUNK_DATA32; |
||
4546 | typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32; |
||
4547 | |||
4548 | #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ull |
||
4549 | #define IMAGE_ORDINAL_FLAG32 0x80000000 |
||
4550 | #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffffull) |
||
4551 | #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) |
||
4552 | #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64)!=0) |
||
4553 | #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32)!=0) |
||
4554 | |||
4555 | typedef VOID |
||
4556 | (NTAPI *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved); |
||
4557 | |||
4558 | typedef struct _IMAGE_TLS_DIRECTORY64 { |
||
4559 | ULONGLONG StartAddressOfRawData; |
||
4560 | ULONGLONG EndAddressOfRawData; |
||
4561 | ULONGLONG AddressOfIndex; |
||
4562 | ULONGLONG AddressOfCallBacks; |
||
4563 | DWORD SizeOfZeroFill; |
||
4564 | DWORD Characteristics; |
||
4565 | } IMAGE_TLS_DIRECTORY64; |
||
4566 | typedef IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64; |
||
4567 | |||
4568 | typedef struct _IMAGE_TLS_DIRECTORY32 { |
||
4569 | DWORD StartAddressOfRawData; |
||
4570 | DWORD EndAddressOfRawData; |
||
4571 | DWORD AddressOfIndex; |
||
4572 | DWORD AddressOfCallBacks; |
||
4573 | DWORD SizeOfZeroFill; |
||
4574 | DWORD Characteristics; |
||
4575 | } IMAGE_TLS_DIRECTORY32; |
||
4576 | typedef IMAGE_TLS_DIRECTORY32 *PIMAGE_TLS_DIRECTORY32; |
||
4577 | |||
4578 | #ifdef _WIN64 |
||
4579 | #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64 |
||
4580 | #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal) |
||
4581 | typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; |
||
4582 | typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; |
||
4583 | #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal) |
||
4584 | typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; |
||
4585 | typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY; |
||
4586 | #else |
||
4587 | #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32 |
||
4588 | #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal) |
||
4589 | typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; |
||
4590 | typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; |
||
4591 | #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal) |
||
4592 | typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; |
||
4593 | typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; |
||
4594 | #endif |
||
4595 | |||
4596 | typedef struct _IMAGE_IMPORT_DESCRIPTOR { |
||
4597 | union { |
||
4598 | DWORD Characteristics; |
||
4599 | DWORD OriginalFirstThunk; |
||
4600 | }; |
||
4601 | DWORD TimeDateStamp; |
||
4602 | |||
4603 | DWORD ForwarderChain; |
||
4604 | DWORD Name; |
||
4605 | DWORD FirstThunk; |
||
4606 | } IMAGE_IMPORT_DESCRIPTOR; |
||
4607 | typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR; |
||
4608 | |||
4609 | typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { |
||
4610 | DWORD TimeDateStamp; |
||
4611 | WORD OffsetModuleName; |
||
4612 | WORD NumberOfModuleForwarderRefs; |
||
4613 | } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR; |
||
4614 | |||
4615 | typedef struct _IMAGE_BOUND_FORWARDER_REF { |
||
4616 | DWORD TimeDateStamp; |
||
4617 | WORD OffsetModuleName; |
||
4618 | WORD Reserved; |
||
4619 | } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF; |
||
4620 | |||
4621 | typedef struct _IMAGE_RESOURCE_DIRECTORY { |
||
4622 | DWORD Characteristics; |
||
4623 | DWORD TimeDateStamp; |
||
4624 | WORD MajorVersion; |
||
4625 | WORD MinorVersion; |
||
4626 | WORD NumberOfNamedEntries; |
||
4627 | WORD NumberOfIdEntries; |
||
4628 | } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY; |
||
4629 | |||
4630 | #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 |
||
4631 | #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 |
||
4632 | |||
4633 | typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { |
||
4634 | union { |
||
4635 | struct { |
||
4636 | DWORD NameOffset:31; |
||
4637 | DWORD NameIsString:1; |
||
4638 | }; |
||
4639 | DWORD Name; |
||
4640 | WORD Id; |
||
4641 | }; |
||
4642 | union { |
||
4643 | DWORD OffsetToData; |
||
4644 | struct { |
||
4645 | DWORD OffsetToDirectory:31; |
||
4646 | DWORD DataIsDirectory:1; |
||
4647 | }; |
||
4648 | }; |
||
4649 | } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY; |
||
4650 | |||
4651 | typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { |
||
4652 | WORD Length; |
||
4653 | CHAR NameString[1]; |
||
4654 | } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING; |
||
4655 | |||
4656 | typedef struct _IMAGE_RESOURCE_DIR_STRING_U { |
||
4657 | WORD Length; |
||
4658 | WCHAR NameString[1]; |
||
4659 | } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U; |
||
4660 | |||
4661 | typedef struct _IMAGE_RESOURCE_DATA_ENTRY { |
||
4662 | DWORD OffsetToData; |
||
4663 | DWORD Size; |
||
4664 | DWORD CodePage; |
||
4665 | DWORD Reserved; |
||
4666 | } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY; |
||
4667 | |||
4668 | typedef struct { |
||
4669 | DWORD Size; |
||
4670 | DWORD TimeDateStamp; |
||
4671 | WORD MajorVersion; |
||
4672 | WORD MinorVersion; |
||
4673 | DWORD GlobalFlagsClear; |
||
4674 | DWORD GlobalFlagsSet; |
||
4675 | DWORD CriticalSectionDefaultTimeout; |
||
4676 | DWORD DeCommitFreeBlockThreshold; |
||
4677 | DWORD DeCommitTotalFreeThreshold; |
||
4678 | DWORD LockPrefixTable; |
||
4679 | DWORD MaximumAllocationSize; |
||
4680 | DWORD VirtualMemoryThreshold; |
||
4681 | DWORD ProcessHeapFlags; |
||
4682 | DWORD ProcessAffinityMask; |
||
4683 | WORD CSDVersion; |
||
4684 | WORD Reserved1; |
||
4685 | DWORD EditList; |
||
4686 | DWORD SecurityCookie; |
||
4687 | DWORD SEHandlerTable; |
||
4688 | DWORD SEHandlerCount; |
||
4689 | } IMAGE_LOAD_CONFIG_DIRECTORY32,*PIMAGE_LOAD_CONFIG_DIRECTORY32; |
||
4690 | |||
4691 | typedef struct { |
||
4692 | DWORD Size; |
||
4693 | DWORD TimeDateStamp; |
||
4694 | WORD MajorVersion; |
||
4695 | WORD MinorVersion; |
||
4696 | DWORD GlobalFlagsClear; |
||
4697 | DWORD GlobalFlagsSet; |
||
4698 | DWORD CriticalSectionDefaultTimeout; |
||
4699 | ULONGLONG DeCommitFreeBlockThreshold; |
||
4700 | ULONGLONG DeCommitTotalFreeThreshold; |
||
4701 | ULONGLONG LockPrefixTable; |
||
4702 | ULONGLONG MaximumAllocationSize; |
||
4703 | ULONGLONG VirtualMemoryThreshold; |
||
4704 | ULONGLONG ProcessAffinityMask; |
||
4705 | DWORD ProcessHeapFlags; |
||
4706 | WORD CSDVersion; |
||
4707 | WORD Reserved1; |
||
4708 | ULONGLONG EditList; |
||
4709 | ULONGLONG SecurityCookie; |
||
4710 | ULONGLONG SEHandlerTable; |
||
4711 | ULONGLONG SEHandlerCount; |
||
4712 | } IMAGE_LOAD_CONFIG_DIRECTORY64,*PIMAGE_LOAD_CONFIG_DIRECTORY64; |
||
4713 | |||
4714 | #ifdef _WIN64 |
||
4715 | typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; |
||
4716 | typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; |
||
4717 | #else |
||
4718 | typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; |
||
4719 | typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; |
||
4720 | #endif |
||
4721 | |||
4722 | typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { |
||
4723 | DWORD FuncStart; |
||
4724 | DWORD PrologLen : 8; |
||
4725 | DWORD FuncLen : 22; |
||
4726 | DWORD ThirtyTwoBit : 1; |
||
4727 | DWORD ExceptionFlag : 1; |
||
4728 | } IMAGE_CE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; |
||
4729 | |||
4730 | typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { |
||
4731 | ULONGLONG BeginAddress; |
||
4732 | ULONGLONG EndAddress; |
||
4733 | ULONGLONG ExceptionHandler; |
||
4734 | ULONGLONG HandlerData; |
||
4735 | ULONGLONG PrologEndAddress; |
||
4736 | } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; |
||
4737 | |||
4738 | typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { |
||
4739 | DWORD BeginAddress; |
||
4740 | DWORD EndAddress; |
||
4741 | DWORD ExceptionHandler; |
||
4742 | DWORD HandlerData; |
||
4743 | DWORD PrologEndAddress; |
||
4744 | } IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; |
||
4745 | |||
4746 | typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { |
||
4747 | DWORD BeginAddress; |
||
4748 | DWORD EndAddress; |
||
4749 | DWORD UnwindInfoAddress; |
||
4750 | } _IMAGE_RUNTIME_FUNCTION_ENTRY,*_PIMAGE_RUNTIME_FUNCTION_ENTRY; |
||
4751 | |||
4752 | typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY; |
||
4753 | typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY; |
||
4754 | |||
4755 | typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; |
||
4756 | typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; |
||
4757 | |||
4758 | typedef struct _IMAGE_DEBUG_DIRECTORY { |
||
4759 | DWORD Characteristics; |
||
4760 | DWORD TimeDateStamp; |
||
4761 | WORD MajorVersion; |
||
4762 | WORD MinorVersion; |
||
4763 | DWORD Type; |
||
4764 | DWORD SizeOfData; |
||
4765 | DWORD AddressOfRawData; |
||
4766 | DWORD PointerToRawData; |
||
4767 | } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY; |
||
4768 | |||
4769 | #define IMAGE_DEBUG_TYPE_UNKNOWN 0 |
||
4770 | #define IMAGE_DEBUG_TYPE_COFF 1 |
||
4771 | #define IMAGE_DEBUG_TYPE_CODEVIEW 2 |
||
4772 | #define IMAGE_DEBUG_TYPE_FPO 3 |
||
4773 | #define IMAGE_DEBUG_TYPE_MISC 4 |
||
4774 | #define IMAGE_DEBUG_TYPE_EXCEPTION 5 |
||
4775 | #define IMAGE_DEBUG_TYPE_FIXUP 6 |
||
4776 | #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 |
||
4777 | #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 |
||
4778 | #define IMAGE_DEBUG_TYPE_BORLAND 9 |
||
4779 | #define IMAGE_DEBUG_TYPE_RESERVED10 10 |
||
4780 | #define IMAGE_DEBUG_TYPE_CLSID 11 |
||
4781 | |||
4782 | typedef struct _IMAGE_COFF_SYMBOLS_HEADER { |
||
4783 | DWORD NumberOfSymbols; |
||
4784 | DWORD LvaToFirstSymbol; |
||
4785 | DWORD NumberOfLinenumbers; |
||
4786 | DWORD LvaToFirstLinenumber; |
||
4787 | DWORD RvaToFirstByteOfCode; |
||
4788 | DWORD RvaToLastByteOfCode; |
||
4789 | DWORD RvaToFirstByteOfData; |
||
4790 | DWORD RvaToLastByteOfData; |
||
4791 | } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER; |
||
4792 | |||
4793 | #define FRAME_FPO 0 |
||
4794 | #define FRAME_TRAP 1 |
||
4795 | #define FRAME_TSS 2 |
||
4796 | #define FRAME_NONFPO 3 |
||
4797 | |||
4798 | typedef struct _FPO_DATA { |
||
4799 | DWORD ulOffStart; |
||
4800 | DWORD cbProcSize; |
||
4801 | DWORD cdwLocals; |
||
4802 | WORD cdwParams; |
||
4803 | WORD cbProlog : 8; |
||
4804 | WORD cbRegs : 3; |
||
4805 | WORD fHasSEH : 1; |
||
4806 | WORD fUseBP : 1; |
||
4807 | WORD reserved : 1; |
||
4808 | WORD cbFrame : 2; |
||
4809 | } FPO_DATA,*PFPO_DATA; |
||
4810 | #define SIZEOF_RFPO_DATA 16 |
||
4811 | |||
4812 | #define IMAGE_DEBUG_MISC_EXENAME 1 |
||
4813 | |||
4814 | typedef struct _IMAGE_DEBUG_MISC { |
||
4815 | DWORD DataType; |
||
4816 | DWORD Length; |
||
4817 | BOOLEAN Unicode; |
||
4818 | BYTE Reserved[3]; |
||
4819 | BYTE Data[1]; |
||
4820 | } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC; |
||
4821 | |||
4822 | typedef struct _IMAGE_FUNCTION_ENTRY { |
||
4823 | DWORD StartingAddress; |
||
4824 | DWORD EndingAddress; |
||
4825 | DWORD EndOfPrologue; |
||
4826 | } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY; |
||
4827 | |||
4828 | typedef struct _IMAGE_FUNCTION_ENTRY64 { |
||
4829 | ULONGLONG StartingAddress; |
||
4830 | ULONGLONG EndingAddress; |
||
4831 | union { |
||
4832 | ULONGLONG EndOfPrologue; |
||
4833 | ULONGLONG UnwindInfoAddress; |
||
4834 | }; |
||
4835 | } IMAGE_FUNCTION_ENTRY64,*PIMAGE_FUNCTION_ENTRY64; |
||
4836 | |||
4837 | typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { |
||
4838 | WORD Signature; |
||
4839 | WORD Flags; |
||
4840 | WORD Machine; |
||
4841 | WORD Characteristics; |
||
4842 | DWORD TimeDateStamp; |
||
4843 | DWORD CheckSum; |
||
4844 | DWORD ImageBase; |
||
4845 | DWORD SizeOfImage; |
||
4846 | DWORD NumberOfSections; |
||
4847 | DWORD ExportedNamesSize; |
||
4848 | DWORD DebugDirectorySize; |
||
4849 | DWORD SectionAlignment; |
||
4850 | DWORD Reserved[2]; |
||
4851 | } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER; |
||
4852 | |||
4853 | typedef struct _NON_PAGED_DEBUG_INFO { |
||
4854 | WORD Signature; |
||
4855 | WORD Flags; |
||
4856 | DWORD Size; |
||
4857 | WORD Machine; |
||
4858 | WORD Characteristics; |
||
4859 | DWORD TimeDateStamp; |
||
4860 | DWORD CheckSum; |
||
4861 | DWORD SizeOfImage; |
||
4862 | ULONGLONG ImageBase; |
||
4863 | |||
4864 | } NON_PAGED_DEBUG_INFO,*PNON_PAGED_DEBUG_INFO; |
||
4865 | |||
4866 | #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 |
||
4867 | #define NON_PAGED_DEBUG_SIGNATURE 0x494E |
||
4868 | |||
4869 | #define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 |
||
4870 | #define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 |
||
4871 | |||
4872 | typedef struct _ImageArchitectureHeader { |
||
4873 | unsigned int AmaskValue: 1; |
||
4874 | int Adummy1 :7; |
||
4875 | unsigned int AmaskShift: 8; |
||
4876 | int Adummy2 :16; |
||
4877 | DWORD FirstEntryRVA; |
||
4878 | } IMAGE_ARCHITECTURE_HEADER,*PIMAGE_ARCHITECTURE_HEADER; |
||
4879 | |||
4880 | typedef struct _ImageArchitectureEntry { |
||
4881 | DWORD FixupInstRVA; |
||
4882 | DWORD NewInst; |
||
4883 | } IMAGE_ARCHITECTURE_ENTRY,*PIMAGE_ARCHITECTURE_ENTRY; |
||
4884 | |||
4885 | #include "poppack.h" |
||
4886 | |||
4887 | #define IMPORT_OBJECT_HDR_SIG2 0xffff |
||
4888 | |||
4889 | typedef struct IMPORT_OBJECT_HEADER { |
||
4890 | WORD Sig1; |
||
4891 | WORD Sig2; |
||
4892 | WORD Version; |
||
4893 | WORD Machine; |
||
4894 | DWORD TimeDateStamp; |
||
4895 | DWORD SizeOfData; |
||
4896 | union { |
||
4897 | WORD Ordinal; |
||
4898 | WORD Hint; |
||
4899 | }; |
||
4900 | WORD Type : 2; |
||
4901 | WORD NameType : 3; |
||
4902 | WORD Reserved : 11; |
||
4903 | } IMPORT_OBJECT_HEADER; |
||
4904 | |||
4905 | typedef enum IMPORT_OBJECT_TYPE { |
||
4906 | IMPORT_OBJECT_CODE = 0,IMPORT_OBJECT_DATA = 1,IMPORT_OBJECT_CONST = 2 |
||
4907 | } IMPORT_OBJECT_TYPE; |
||
4908 | |||
4909 | typedef enum IMPORT_OBJECT_NAME_TYPE { |
||
4910 | IMPORT_OBJECT_ORDINAL = 0,IMPORT_OBJECT_NAME = 1,IMPORT_OBJECT_NAME_NO_PREFIX = 2,IMPORT_OBJECT_NAME_UNDECORATE = 3 |
||
4911 | } IMPORT_OBJECT_NAME_TYPE; |
||
4912 | |||
4913 | #ifndef __IMAGE_COR20_HEADER_DEFINED__ |
||
4914 | #define __IMAGE_COR20_HEADER_DEFINED__ |
||
4915 | typedef enum ReplacesCorHdrNumericDefines { |
||
4916 | COMIMAGE_FLAGS_ILONLY =0x00000001,COMIMAGE_FLAGS_32BITREQUIRED =0x00000002,COMIMAGE_FLAGS_IL_LIBRARY =0x00000004, |
||
4917 | COMIMAGE_FLAGS_STRONGNAMESIGNED =0x00000008,COMIMAGE_FLAGS_TRACKDEBUGDATA =0x00010000,COR_VERSION_MAJOR_V2 =2, |
||
4918 | COR_VERSION_MAJOR =COR_VERSION_MAJOR_V2,COR_VERSION_MINOR =0,COR_DELETED_NAME_LENGTH =8,COR_VTABLEGAP_NAME_LENGTH =8, |
||
4919 | NATIVE_TYPE_MAX_CB =1,COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE=0xFF,IMAGE_COR_MIH_METHODRVA =0x01,IMAGE_COR_MIH_EHRVA =0x02, |
||
4920 | IMAGE_COR_MIH_BASICBLOCK =0x08,COR_VTABLE_32BIT =0x01,COR_VTABLE_64BIT =0x02,COR_VTABLE_FROM_UNMANAGED =0x04, |
||
4921 | COR_VTABLE_CALL_MOST_DERIVED =0x10,IMAGE_COR_EATJ_THUNK_SIZE =32,MAX_CLASS_NAME =1024,MAX_PACKAGE_NAME =1024 |
||
4922 | } ReplacesCorHdrNumericDefines; |
||
4923 | |||
4924 | typedef struct IMAGE_COR20_HEADER { |
||
4925 | DWORD cb; |
||
4926 | WORD MajorRuntimeVersion; |
||
4927 | WORD MinorRuntimeVersion; |
||
4928 | IMAGE_DATA_DIRECTORY MetaData; |
||
4929 | DWORD Flags; |
||
4930 | DWORD EntryPointToken; |
||
4931 | IMAGE_DATA_DIRECTORY Resources; |
||
4932 | IMAGE_DATA_DIRECTORY StrongNameSignature; |
||
4933 | IMAGE_DATA_DIRECTORY CodeManagerTable; |
||
4934 | IMAGE_DATA_DIRECTORY VTableFixups; |
||
4935 | IMAGE_DATA_DIRECTORY ExportAddressTableJumps; |
||
4936 | IMAGE_DATA_DIRECTORY ManagedNativeHeader; |
||
4937 | } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER; |
||
4938 | #endif |
||
4939 | |||
4940 | #if defined (__x86_64) |
||
4941 | NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); |
||
4942 | NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); |
||
4943 | #endif |
||
4944 | |||
4945 | #include |
||
4946 | |||
4947 | #ifndef _SLIST_HEADER_ |
||
4948 | #define _SLIST_HEADER_ |
||
4949 | |||
4950 | #ifdef _WIN64 |
||
4951 | typedef struct _SLIST_ENTRY *PSLIST_ENTRY; |
||
4952 | typedef DECLSPEC_ALIGN(16) struct _SLIST_ENTRY { |
||
4953 | PSLIST_ENTRY Next; |
||
4954 | } SLIST_ENTRY; |
||
4955 | #else |
||
4956 | |||
4957 | #define SLIST_ENTRY SINGLE_LIST_ENTRY |
||
4958 | #define _SLIST_ENTRY _SINGLE_LIST_ENTRY |
||
4959 | #define PSLIST_ENTRY PSINGLE_LIST_ENTRY |
||
4960 | #endif |
||
4961 | |||
4962 | #if defined(_WIN64) |
||
4963 | |||
4964 | typedef DECLSPEC_ALIGN(16) struct _SLIST_HEADER { |
||
4965 | ULONGLONG Alignment; |
||
4966 | ULONGLONG Region; |
||
4967 | } SLIST_HEADER; |
||
4968 | |||
4969 | typedef struct _SLIST_HEADER *PSLIST_HEADER; |
||
4970 | #else |
||
4971 | |||
4972 | typedef union _SLIST_HEADER { |
||
4973 | ULONGLONG Alignment; |
||
4974 | struct { |
||
4975 | SLIST_ENTRY Next; |
||
4976 | WORD Depth; |
||
4977 | WORD Sequence; |
||
4978 | }; |
||
4979 | } SLIST_HEADER,*PSLIST_HEADER; |
||
4980 | #endif |
||
4981 | #endif |
||
4982 | |||
4983 | NTSYSAPI VOID NTAPI RtlInitializeSListHead(PSLIST_HEADER ListHead); |
||
4984 | NTSYSAPI PSLIST_ENTRY NTAPI RtlFirstEntrySList(const SLIST_HEADER *ListHead); |
||
4985 | NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPopEntrySList(PSLIST_HEADER ListHead); |
||
4986 | NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushEntrySList(PSLIST_HEADER ListHead,PSLIST_ENTRY ListEntry); |
||
4987 | NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedFlushSList(PSLIST_HEADER ListHead); |
||
4988 | NTSYSAPI WORD NTAPI RtlQueryDepthSList(PSLIST_HEADER ListHead); |
||
4989 | |||
4990 | #define HEAP_NO_SERIALIZE 0x00000001 |
||
4991 | #define HEAP_GROWABLE 0x00000002 |
||
4992 | #define HEAP_GENERATE_EXCEPTIONS 0x00000004 |
||
4993 | #define HEAP_ZERO_MEMORY 0x00000008 |
||
4994 | #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010 |
||
4995 | #define HEAP_TAIL_CHECKING_ENABLED 0x00000020 |
||
4996 | #define HEAP_FREE_CHECKING_ENABLED 0x00000040 |
||
4997 | #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080 |
||
4998 | #define HEAP_CREATE_ALIGN_16 0x00010000 |
||
4999 | #define HEAP_CREATE_ENABLE_TRACING 0x00020000 |
||
5000 | #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000 |
||
5001 | #define HEAP_MAXIMUM_TAG 0x0FFF |
||
5002 | #define HEAP_PSEUDO_TAG_FLAG 0x8000 |
||
5003 | #define HEAP_TAG_SHIFT 18 |
||
5004 | #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b) + ((o) << 18))) |
||
5005 | |||
5006 | NTSYSAPI VOID NTAPI RtlCaptureContext(PCONTEXT ContextRecord); |
||
5007 | |||
5008 | #define IS_TEXT_UNICODE_ASCII16 0x0001 |
||
5009 | #define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010 |
||
5010 | |||
5011 | #define IS_TEXT_UNICODE_STATISTICS 0x0002 |
||
5012 | #define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020 |
||
5013 | |||
5014 | #define IS_TEXT_UNICODE_CONTROLS 0x0004 |
||
5015 | #define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040 |
||
5016 | |||
5017 | #define IS_TEXT_UNICODE_SIGNATURE 0x0008 |
||
5018 | #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080 |
||
5019 | |||
5020 | #define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100 |
||
5021 | #define IS_TEXT_UNICODE_ODD_LENGTH 0x0200 |
||
5022 | #define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400 |
||
5023 | #define IS_TEXT_UNICODE_NULL_BYTES 0x1000 |
||
5024 | |||
5025 | #define IS_TEXT_UNICODE_UNICODE_MASK 0x000F |
||
5026 | #define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0 |
||
5027 | #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00 |
||
5028 | #define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000 |
||
5029 | |||
5030 | #define COMPRESSION_FORMAT_NONE (0x0000) |
||
5031 | #define COMPRESSION_FORMAT_DEFAULT (0x0001) |
||
5032 | #define COMPRESSION_FORMAT_LZNT1 (0x0002) |
||
5033 | #define COMPRESSION_ENGINE_STANDARD (0x0000) |
||
5034 | #define COMPRESSION_ENGINE_MAXIMUM (0x0100) |
||
5035 | #define COMPRESSION_ENGINE_HIBER (0x0200) |
||
5036 | |||
5037 | #if _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD) |
||
5038 | #define _MEMCPY_INLINE_ |
||
5039 | __CRT_INLINE PVOID __cdecl memcpy_inline(void *dst,const void *src,size_t size) { |
||
5040 | if(((char *)dst > (char *)src) && ((char *)dst < ((char *)src + size))) { |
||
5041 | __debugbreak(); |
||
5042 | } |
||
5043 | return memcpy(dst,src,size); |
||
5044 | } |
||
5045 | #define memcpy memcpy_inline |
||
5046 | #endif |
||
5047 | |||
5048 | NTSYSAPI SIZE_T NTAPI RtlCompareMemory(const VOID *Source1,const VOID *Source2,SIZE_T Length); |
||
5049 | |||
5050 | #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) |
||
5051 | #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) |
||
5052 | #define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length)) |
||
5053 | #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) |
||
5054 | #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) |
||
5055 | |||
5056 | __CRT_INLINE PVOID RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt) { |
||
5057 | volatile char *vptr =(volatile char *)ptr; |
||
5058 | #ifdef __x86_64 |
||
5059 | __stosb((PBYTE)((DWORD64)vptr),0,cnt); |
||
5060 | #else |
||
5061 | while(cnt) { |
||
5062 | *vptr = 0; |
||
5063 | vptr++; |
||
5064 | cnt--; |
||
5065 | } |
||
5066 | #endif |
||
5067 | return ptr; |
||
5068 | } |
||
5069 | |||
5070 | typedef struct _MESSAGE_RESOURCE_ENTRY { |
||
5071 | WORD Length; |
||
5072 | WORD Flags; |
||
5073 | BYTE Text[1]; |
||
5074 | } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY; |
||
5075 | |||
5076 | #define MESSAGE_RESOURCE_UNICODE 0x0001 |
||
5077 | |||
5078 | typedef struct _MESSAGE_RESOURCE_BLOCK { |
||
5079 | DWORD LowId; |
||
5080 | DWORD HighId; |
||
5081 | DWORD OffsetToEntries; |
||
5082 | } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK; |
||
5083 | |||
5084 | typedef struct _MESSAGE_RESOURCE_DATA { |
||
5085 | DWORD NumberOfBlocks; |
||
5086 | MESSAGE_RESOURCE_BLOCK Blocks[1]; |
||
5087 | } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA; |
||
5088 | |||
5089 | typedef struct _OSVERSIONINFOA { |
||
5090 | DWORD dwOSVersionInfoSize; |
||
5091 | DWORD dwMajorVersion; |
||
5092 | DWORD dwMinorVersion; |
||
5093 | DWORD dwBuildNumber; |
||
5094 | DWORD dwPlatformId; |
||
5095 | CHAR szCSDVersion[128]; |
||
5096 | } OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA; |
||
5097 | |||
5098 | typedef struct _OSVERSIONINFOW { |
||
5099 | DWORD dwOSVersionInfoSize; |
||
5100 | DWORD dwMajorVersion; |
||
5101 | DWORD dwMinorVersion; |
||
5102 | DWORD dwBuildNumber; |
||
5103 | DWORD dwPlatformId; |
||
5104 | WCHAR szCSDVersion[128]; |
||
5105 | } OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW,RTL_OSVERSIONINFOW,*PRTL_OSVERSIONINFOW; |
||
5106 | |||
5107 | #ifdef UNICODE |
||
5108 | typedef OSVERSIONINFOW OSVERSIONINFO; |
||
5109 | typedef POSVERSIONINFOW POSVERSIONINFO; |
||
5110 | typedef LPOSVERSIONINFOW LPOSVERSIONINFO; |
||
5111 | #else |
||
5112 | typedef OSVERSIONINFOA OSVERSIONINFO; |
||
5113 | typedef POSVERSIONINFOA POSVERSIONINFO; |
||
5114 | typedef LPOSVERSIONINFOA LPOSVERSIONINFO; |
||
5115 | #endif |
||
5116 | |||
5117 | typedef struct _OSVERSIONINFOEXA { |
||
5118 | DWORD dwOSVersionInfoSize; |
||
5119 | DWORD dwMajorVersion; |
||
5120 | DWORD dwMinorVersion; |
||
5121 | DWORD dwBuildNumber; |
||
5122 | DWORD dwPlatformId; |
||
5123 | CHAR szCSDVersion[128]; |
||
5124 | WORD wServicePackMajor; |
||
5125 | WORD wServicePackMinor; |
||
5126 | WORD wSuiteMask; |
||
5127 | BYTE wProductType; |
||
5128 | BYTE wReserved; |
||
5129 | } OSVERSIONINFOEXA,*POSVERSIONINFOEXA,*LPOSVERSIONINFOEXA; |
||
5130 | |||
5131 | typedef struct _OSVERSIONINFOEXW { |
||
5132 | DWORD dwOSVersionInfoSize; |
||
5133 | DWORD dwMajorVersion; |
||
5134 | DWORD dwMinorVersion; |
||
5135 | DWORD dwBuildNumber; |
||
5136 | DWORD dwPlatformId; |
||
5137 | WCHAR szCSDVersion[128]; |
||
5138 | WORD wServicePackMajor; |
||
5139 | WORD wServicePackMinor; |
||
5140 | WORD wSuiteMask; |
||
5141 | BYTE wProductType; |
||
5142 | BYTE wReserved; |
||
5143 | } OSVERSIONINFOEXW,*POSVERSIONINFOEXW,*LPOSVERSIONINFOEXW,RTL_OSVERSIONINFOEXW,*PRTL_OSVERSIONINFOEXW; |
||
5144 | #ifdef UNICODE |
||
5145 | typedef OSVERSIONINFOEXW OSVERSIONINFOEX; |
||
5146 | typedef POSVERSIONINFOEXW POSVERSIONINFOEX; |
||
5147 | typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; |
||
5148 | #else |
||
5149 | typedef OSVERSIONINFOEXA OSVERSIONINFOEX; |
||
5150 | typedef POSVERSIONINFOEXA POSVERSIONINFOEX; |
||
5151 | typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; |
||
5152 | #endif |
||
5153 | |||
5154 | #define VER_EQUAL 1 |
||
5155 | #define VER_GREATER 2 |
||
5156 | #define VER_GREATER_EQUAL 3 |
||
5157 | #define VER_LESS 4 |
||
5158 | #define VER_LESS_EQUAL 5 |
||
5159 | #define VER_AND 6 |
||
5160 | #define VER_OR 7 |
||
5161 | |||
5162 | #define VER_CONDITION_MASK 7 |
||
5163 | #define VER_NUM_BITS_PER_CONDITION_MASK 3 |
||
5164 | |||
5165 | #define VER_MINORVERSION 0x0000001 |
||
5166 | #define VER_MAJORVERSION 0x0000002 |
||
5167 | #define VER_BUILDNUMBER 0x0000004 |
||
5168 | #define VER_PLATFORMID 0x0000008 |
||
5169 | #define VER_SERVICEPACKMINOR 0x0000010 |
||
5170 | #define VER_SERVICEPACKMAJOR 0x0000020 |
||
5171 | #define VER_SUITENAME 0x0000040 |
||
5172 | #define VER_PRODUCT_TYPE 0x0000080 |
||
5173 | |||
5174 | #define VER_NT_WORKSTATION 0x0000001 |
||
5175 | #define VER_NT_DOMAIN_CONTROLLER 0x0000002 |
||
5176 | #define VER_NT_SERVER 0x0000003 |
||
5177 | |||
5178 | #define VER_PLATFORM_WIN32s 0 |
||
5179 | #define VER_PLATFORM_WIN32_WINDOWS 1 |
||
5180 | #define VER_PLATFORM_WIN32_NT 2 |
||
5181 | |||
5182 | #define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_))) |
||
5183 | |||
5184 | NTSYSAPI ULONGLONG NTAPI VerSetConditionMask(ULONGLONG ConditionMask,DWORD TypeMask,BYTE Condition); |
||
5185 | |||
5186 | typedef struct _RTL_CRITICAL_SECTION_DEBUG { |
||
5187 | WORD Type; |
||
5188 | WORD CreatorBackTraceIndex; |
||
5189 | struct _RTL_CRITICAL_SECTION *CriticalSection; |
||
5190 | LIST_ENTRY ProcessLocksList; |
||
5191 | DWORD EntryCount; |
||
5192 | DWORD ContentionCount; |
||
5193 | DWORD Spare[2]; |
||
5194 | } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG,RTL_RESOURCE_DEBUG,*PRTL_RESOURCE_DEBUG; |
||
5195 | |||
5196 | #define RTL_CRITSECT_TYPE 0 |
||
5197 | #define RTL_RESOURCE_TYPE 1 |
||
5198 | |||
5199 | typedef struct _RTL_CRITICAL_SECTION { |
||
5200 | PRTL_CRITICAL_SECTION_DEBUG DebugInfo; |
||
5201 | LONG LockCount; |
||
5202 | LONG RecursionCount; |
||
5203 | HANDLE OwningThread; |
||
5204 | HANDLE LockSemaphore; |
||
5205 | ULONG_PTR SpinCount; |
||
5206 | } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION; |
||
5207 | |||
5208 | typedef VOID (NTAPI *RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); |
||
5209 | typedef VOID (NTAPI *RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); |
||
5210 | typedef VOID (NTAPI *RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK)(PVOID AllocationBase,SIZE_T AllocationSize); |
||
5211 | |||
5212 | typedef struct _RTL_VERIFIER_THUNK_DESCRIPTOR { |
||
5213 | PCHAR ThunkName; |
||
5214 | PVOID ThunkOldAddress; |
||
5215 | PVOID ThunkNewAddress; |
||
5216 | } RTL_VERIFIER_THUNK_DESCRIPTOR,*PRTL_VERIFIER_THUNK_DESCRIPTOR; |
||
5217 | |||
5218 | typedef struct _RTL_VERIFIER_DLL_DESCRIPTOR { |
||
5219 | PWCHAR DllName; |
||
5220 | DWORD DllFlags; |
||
5221 | PVOID DllAddress; |
||
5222 | PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks; |
||
5223 | } RTL_VERIFIER_DLL_DESCRIPTOR,*PRTL_VERIFIER_DLL_DESCRIPTOR; |
||
5224 | |||
5225 | typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR { |
||
5226 | DWORD Length; |
||
5227 | PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls; |
||
5228 | RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback; |
||
5229 | RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback; |
||
5230 | PWSTR VerifierImage; |
||
5231 | DWORD VerifierFlags; |
||
5232 | DWORD VerifierDebug; |
||
5233 | PVOID RtlpGetStackTraceAddress; |
||
5234 | PVOID RtlpDebugPageHeapCreate; |
||
5235 | PVOID RtlpDebugPageHeapDestroy; |
||
5236 | RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback; |
||
5237 | } RTL_VERIFIER_PROVIDER_DESCRIPTOR,*PRTL_VERIFIER_PROVIDER_DESCRIPTOR; |
||
5238 | |||
5239 | #define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001 |
||
5240 | #define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002 |
||
5241 | #define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004 |
||
5242 | #define RTL_VRF_FLG_STACK_CHECKS 0x00000008 |
||
5243 | #define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010 |
||
5244 | #define RTL_VRF_FLG_TLS_CHECKS 0x00000020 |
||
5245 | #define RTL_VRF_FLG_DIRTY_STACKS 0x00000040 |
||
5246 | #define RTL_VRF_FLG_RPC_CHECKS 0x00000080 |
||
5247 | #define RTL_VRF_FLG_COM_CHECKS 0x00000100 |
||
5248 | #define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200 |
||
5249 | #define RTL_VRF_FLG_RACE_CHECKS 0x00000400 |
||
5250 | #define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800 |
||
5251 | #define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000 |
||
5252 | #define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000 |
||
5253 | #define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000 |
||
5254 | #define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000 |
||
5255 | #define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000 |
||
5256 | #define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000 |
||
5257 | #define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000 |
||
5258 | #define RTL_VRF_FLG_LOCK_CHECKS 0x00040000 |
||
5259 | |||
5260 | #define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000 |
||
5261 | #define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000 |
||
5262 | #define APPLICATION_VERIFIER_NO_BREAK 0x20000000 |
||
5263 | #define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000 |
||
5264 | |||
5265 | #define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001 |
||
5266 | #define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002 |
||
5267 | #define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003 |
||
5268 | #define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004 |
||
5269 | #define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005 |
||
5270 | #define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006 |
||
5271 | #define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007 |
||
5272 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008 |
||
5273 | #define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009 |
||
5274 | #define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A |
||
5275 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B |
||
5276 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C |
||
5277 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D |
||
5278 | #define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E |
||
5279 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F |
||
5280 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010 |
||
5281 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011 |
||
5282 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012 |
||
5283 | #define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013 |
||
5284 | #define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014 |
||
5285 | |||
5286 | #define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100 |
||
5287 | #define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101 |
||
5288 | #define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102 |
||
5289 | |||
5290 | #define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200 |
||
5291 | #define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201 |
||
5292 | #define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202 |
||
5293 | #define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203 |
||
5294 | #define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204 |
||
5295 | #define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205 |
||
5296 | #define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206 |
||
5297 | #define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207 |
||
5298 | #define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208 |
||
5299 | #define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209 |
||
5300 | #define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210 |
||
5301 | #define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211 |
||
5302 | #define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212 |
||
5303 | #define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213 |
||
5304 | #define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214 |
||
5305 | |||
5306 | #define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300 |
||
5307 | #define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301 |
||
5308 | #define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302 |
||
5309 | #define APPLICATION_VERIFIER_NULL_HANDLE 0x0303 |
||
5310 | #define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304 |
||
5311 | |||
5312 | #define APPLICATION_VERIFIER_COM_ERROR 0x0400 |
||
5313 | #define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401 |
||
5314 | #define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402 |
||
5315 | #define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403 |
||
5316 | #define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404 |
||
5317 | #define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405 |
||
5318 | #define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406 |
||
5319 | #define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407 |
||
5320 | #define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408 |
||
5321 | #define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409 |
||
5322 | #define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A |
||
5323 | #define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B |
||
5324 | #define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C |
||
5325 | #define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D |
||
5326 | #define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E |
||
5327 | #define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F |
||
5328 | #define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410 |
||
5329 | |||
5330 | #define APPLICATION_VERIFIER_RPC_ERROR 0x0500 |
||
5331 | |||
5332 | #define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600 |
||
5333 | #define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601 |
||
5334 | #define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602 |
||
5335 | #define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603 |
||
5336 | #define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604 |
||
5337 | #define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605 |
||
5338 | #define APPLICATION_VERIFIER_PROBE_NULL 0x0606 |
||
5339 | #define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607 |
||
5340 | #define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618 |
||
5341 | |||
5342 | #define VERIFIER_STOP(Code,Msg,P1,S1,P2,S2,P3,S3,P4,S4) { RtlApplicationVerifierStop ((Code),(Msg),(ULONG_PTR)(P1),(S1),(ULONG_PTR)(P2),(S2),(ULONG_PTR)(P3),(S3),(ULONG_PTR)(P4),(S4)); } |
||
5343 | |||
5344 | VOID NTAPI RtlApplicationVerifierStop(ULONG_PTR Code,PSTR Message,ULONG_PTR Param1,PSTR Description1,ULONG_PTR Param2,PSTR Description2,ULONG_PTR Param3,PSTR Description3,ULONG_PTR Param4,PSTR Description4); |
||
5345 | |||
5346 | typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER)(struct _EXCEPTION_POINTERS *ExceptionInfo); |
||
5347 | #define SEF_DACL_AUTO_INHERIT 0x01 |
||
5348 | #define SEF_SACL_AUTO_INHERIT 0x02 |
||
5349 | #define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04 |
||
5350 | #define SEF_AVOID_PRIVILEGE_CHECK 0x08 |
||
5351 | #define SEF_AVOID_OWNER_CHECK 0x10 |
||
5352 | #define SEF_DEFAULT_OWNER_FROM_PARENT 0x20 |
||
5353 | #define SEF_DEFAULT_GROUP_FROM_PARENT 0x40 |
||
5354 | |||
5355 | typedef enum _HEAP_INFORMATION_CLASS { |
||
5356 | HeapCompatibilityInformation |
||
5357 | } HEAP_INFORMATION_CLASS; |
||
5358 | |||
5359 | NTSYSAPI DWORD NTAPI RtlSetHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength); |
||
5360 | NTSYSAPI DWORD NTAPI RtlQueryHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength,PSIZE_T ReturnLength); |
||
5361 | DWORD NTAPI RtlMultipleAllocateHeap(PVOID HeapHandle,DWORD Flags,SIZE_T Size,DWORD Count,PVOID *Array); |
||
5362 | DWORD NTAPI RtlMultipleFreeHeap(PVOID HeapHandle,DWORD Flags,DWORD Count,PVOID *Array); |
||
5363 | |||
5364 | #define WT_EXECUTEDEFAULT 0x00000000 |
||
5365 | #define WT_EXECUTEINIOTHREAD 0x00000001 |
||
5366 | #define WT_EXECUTEINUITHREAD 0x00000002 |
||
5367 | #define WT_EXECUTEINWAITTHREAD 0x00000004 |
||
5368 | #define WT_EXECUTEONLYONCE 0x00000008 |
||
5369 | #define WT_EXECUTEINTIMERTHREAD 0x00000020 |
||
5370 | #define WT_EXECUTELONGFUNCTION 0x00000010 |
||
5371 | #define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040 |
||
5372 | #define WT_EXECUTEINPERSISTENTTHREAD 0x00000080 |
||
5373 | #define WT_TRANSFER_IMPERSONATION 0x00000100 |
||
5374 | #define WT_SET_MAX_THREADPOOL_THREADS(Flags,Limit) ((Flags) |= (Limit)<<16) |
||
5375 | typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); |
||
5376 | typedef VOID (NTAPI *WORKERCALLBACKFUNC)(PVOID); |
||
5377 | typedef VOID (NTAPI *APC_CALLBACK_FUNCTION)(DWORD ,PVOID,PVOID); |
||
5378 | typedef |
||
5379 | VOID |
||
5380 | (NTAPI *PFLS_CALLBACK_FUNCTION)(PVOID lpFlsData); |
||
5381 | #define WT_EXECUTEINLONGTHREAD 0x00000010 |
||
5382 | #define WT_EXECUTEDELETEWAIT 0x00000008 |
||
5383 | |||
5384 | typedef enum _ACTIVATION_CONTEXT_INFO_CLASS { |
||
5385 | ActivationContextBasicInformation = 1,ActivationContextDetailedInformation = 2,AssemblyDetailedInformationInActivationContext = 3,FileInformationInAssemblyOfAssemblyInActivationContext = 4,MaxActivationContextInfoClass,AssemblyDetailedInformationInActivationContxt = 3,FileInformationInAssemblyOfAssemblyInActivationContxt = 4 |
||
5386 | } ACTIVATION_CONTEXT_INFO_CLASS; |
||
5387 | |||
5388 | #define ACTIVATIONCONTEXTINFOCLASS ACTIVATION_CONTEXT_INFO_CLASS |
||
5389 | |||
5390 | typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX { |
||
5391 | DWORD ulAssemblyIndex; |
||
5392 | DWORD ulFileIndexInAssembly; |
||
5393 | } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX; |
||
5394 | |||
5395 | typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX; |
||
5396 | |||
5397 | #define ACTIVATION_CONTEXT_PATH_TYPE_NONE (1) |
||
5398 | #define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE (2) |
||
5399 | #define ACTIVATION_CONTEXT_PATH_TYPE_URL (3) |
||
5400 | #define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF (4) |
||
5401 | |||
5402 | typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION { |
||
5403 | DWORD ulFlags; |
||
5404 | DWORD ulFilenameLength; |
||
5405 | DWORD ulPathLength; |
||
5406 | |||
5407 | PCWSTR lpFileName; |
||
5408 | PCWSTR lpFilePath; |
||
5409 | } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION; |
||
5410 | typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION; |
||
5411 | |||
5412 | #define _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION _ASSEMBLY_FILE_DETAILED_INFORMATION |
||
5413 | #define ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION |
||
5414 | #define PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PASSEMBLY_FILE_DETAILED_INFORMATION |
||
5415 | #define PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PCASSEMBLY_FILE_DETAILED_INFORMATION |
||
5416 | |||
5417 | typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { |
||
5418 | DWORD ulFlags; |
||
5419 | DWORD ulEncodedAssemblyIdentityLength; |
||
5420 | DWORD ulManifestPathType; |
||
5421 | DWORD ulManifestPathLength; |
||
5422 | LARGE_INTEGER liManifestLastWriteTime; |
||
5423 | DWORD ulPolicyPathType; |
||
5424 | DWORD ulPolicyPathLength; |
||
5425 | LARGE_INTEGER liPolicyLastWriteTime; |
||
5426 | DWORD ulMetadataSatelliteRosterIndex; |
||
5427 | DWORD ulManifestVersionMajor; |
||
5428 | DWORD ulManifestVersionMinor; |
||
5429 | DWORD ulPolicyVersionMajor; |
||
5430 | DWORD ulPolicyVersionMinor; |
||
5431 | DWORD ulAssemblyDirectoryNameLength; |
||
5432 | PCWSTR lpAssemblyEncodedAssemblyIdentity; |
||
5433 | PCWSTR lpAssemblyManifestPath; |
||
5434 | PCWSTR lpAssemblyPolicyPath; |
||
5435 | PCWSTR lpAssemblyDirectoryName; |
||
5436 | DWORD ulFileCount; |
||
5437 | } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; |
||
5438 | |||
5439 | typedef const struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; |
||
5440 | |||
5441 | typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION { |
||
5442 | DWORD dwFlags; |
||
5443 | DWORD ulFormatVersion; |
||
5444 | DWORD ulAssemblyCount; |
||
5445 | DWORD ulRootManifestPathType; |
||
5446 | DWORD ulRootManifestPathChars; |
||
5447 | DWORD ulRootConfigurationPathType; |
||
5448 | DWORD ulRootConfigurationPathChars; |
||
5449 | DWORD ulAppDirPathType; |
||
5450 | DWORD ulAppDirPathChars; |
||
5451 | PCWSTR lpRootManifestPath; |
||
5452 | PCWSTR lpRootConfigurationPath; |
||
5453 | PCWSTR lpAppDirPath; |
||
5454 | } ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION; |
||
5455 | |||
5456 | typedef const struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION; |
||
5457 | |||
5458 | #define DLL_PROCESS_ATTACH 1 |
||
5459 | #define DLL_THREAD_ATTACH 2 |
||
5460 | #define DLL_THREAD_DETACH 3 |
||
5461 | #define DLL_PROCESS_DETACH 0 |
||
5462 | #define DLL_PROCESS_VERIFIER 4 |
||
5463 | |||
5464 | #define EVENTLOG_SEQUENTIAL_READ 0x0001 |
||
5465 | #define EVENTLOG_SEEK_READ 0x0002 |
||
5466 | #define EVENTLOG_FORWARDS_READ 0x0004 |
||
5467 | #define EVENTLOG_BACKWARDS_READ 0x0008 |
||
5468 | |||
5469 | #define EVENTLOG_SUCCESS 0x0000 |
||
5470 | #define EVENTLOG_ERROR_TYPE 0x0001 |
||
5471 | #define EVENTLOG_WARNING_TYPE 0x0002 |
||
5472 | #define EVENTLOG_INFORMATION_TYPE 0x0004 |
||
5473 | #define EVENTLOG_AUDIT_SUCCESS 0x0008 |
||
5474 | #define EVENTLOG_AUDIT_FAILURE 0x0010 |
||
5475 | |||
5476 | #define EVENTLOG_START_PAIRED_EVENT 0x0001 |
||
5477 | #define EVENTLOG_END_PAIRED_EVENT 0x0002 |
||
5478 | #define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004 |
||
5479 | #define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008 |
||
5480 | #define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010 |
||
5481 | |||
5482 | typedef struct _EVENTLOGRECORD { |
||
5483 | DWORD Length; |
||
5484 | DWORD Reserved; |
||
5485 | DWORD RecordNumber; |
||
5486 | DWORD TimeGenerated; |
||
5487 | DWORD TimeWritten; |
||
5488 | DWORD EventID; |
||
5489 | WORD EventType; |
||
5490 | WORD NumStrings; |
||
5491 | WORD EventCategory; |
||
5492 | WORD ReservedFlags; |
||
5493 | DWORD ClosingRecordNumber; |
||
5494 | DWORD StringOffset; |
||
5495 | DWORD UserSidLength; |
||
5496 | DWORD UserSidOffset; |
||
5497 | DWORD DataLength; |
||
5498 | DWORD DataOffset; |
||
5499 | } EVENTLOGRECORD,*PEVENTLOGRECORD; |
||
5500 | |||
5501 | #define MAXLOGICALLOGNAMESIZE 256 |
||
5502 | |||
5503 | typedef struct _EVENTSFORLOGFILE{ |
||
5504 | DWORD ulSize; |
||
5505 | WCHAR szLogicalLogFile[MAXLOGICALLOGNAMESIZE]; |
||
5506 | DWORD ulNumRecords; |
||
5507 | EVENTLOGRECORD pEventLogRecords[]; |
||
5508 | } EVENTSFORLOGFILE,*PEVENTSFORLOGFILE; |
||
5509 | |||
5510 | typedef struct _PACKEDEVENTINFO{ |
||
5511 | DWORD ulSize; |
||
5512 | DWORD ulNumEventsForLogFile; |
||
5513 | DWORD ulOffsets[]; |
||
5514 | } PACKEDEVENTINFO,*PPACKEDEVENTINFO; |
||
5515 | |||
5516 | #define KEY_QUERY_VALUE (0x0001) |
||
5517 | #define KEY_SET_VALUE (0x0002) |
||
5518 | #define KEY_CREATE_SUB_KEY (0x0004) |
||
5519 | #define KEY_ENUMERATE_SUB_KEYS (0x0008) |
||
5520 | #define KEY_NOTIFY (0x0010) |
||
5521 | #define KEY_CREATE_LINK (0x0020) |
||
5522 | #define KEY_WOW64_32KEY (0x0200) |
||
5523 | #define KEY_WOW64_64KEY (0x0100) |
||
5524 | #define KEY_WOW64_RES (0x0300) |
||
5525 | |||
5526 | #define KEY_READ ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE)) |
||
5527 | #define KEY_WRITE ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)) |
||
5528 | #define KEY_EXECUTE ((KEY_READ) & (~SYNCHRONIZE)) |
||
5529 | #define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE)) |
||
5530 | #define REG_OPTION_RESERVED (0x00000000L) |
||
5531 | |||
5532 | #define REG_OPTION_NON_VOLATILE (0x00000000L) |
||
5533 | #define REG_OPTION_VOLATILE (0x00000001L) |
||
5534 | #define REG_OPTION_CREATE_LINK (0x00000002L) |
||
5535 | #define REG_OPTION_BACKUP_RESTORE (0x00000004L) |
||
5536 | #define REG_OPTION_OPEN_LINK (0x00000008L) |
||
5537 | #define REG_LEGAL_OPTION (REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK) |
||
5538 | #define REG_CREATED_NEW_KEY (0x00000001L) |
||
5539 | #define REG_OPENED_EXISTING_KEY (0x00000002L) |
||
5540 | #define REG_STANDARD_FORMAT 1 |
||
5541 | #define REG_LATEST_FORMAT 2 |
||
5542 | #define REG_NO_COMPRESSION 4 |
||
5543 | #define REG_WHOLE_HIVE_VOLATILE (0x00000001L) |
||
5544 | #define REG_REFRESH_HIVE (0x00000002L) |
||
5545 | #define REG_NO_LAZY_FLUSH (0x00000004L) |
||
5546 | #define REG_FORCE_RESTORE (0x00000008L) |
||
5547 | #define REG_FORCE_UNLOAD 1 |
||
5548 | |||
5549 | #define REG_NOTIFY_CHANGE_NAME (0x00000001L) |
||
5550 | #define REG_NOTIFY_CHANGE_ATTRIBUTES (0x00000002L) |
||
5551 | #define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L) |
||
5552 | #define REG_NOTIFY_CHANGE_SECURITY (0x00000008L) |
||
5553 | |||
5554 | #define REG_LEGAL_CHANGE_FILTER (REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY) |
||
5555 | |||
5556 | #define REG_NONE (0) |
||
5557 | #define REG_SZ (1) |
||
5558 | #define REG_EXPAND_SZ (2) |
||
5559 | |||
5560 | #define REG_BINARY (3) |
||
5561 | #define REG_DWORD (4) |
||
5562 | #define REG_DWORD_LITTLE_ENDIAN (4) |
||
5563 | #define REG_DWORD_BIG_ENDIAN (5) |
||
5564 | #define REG_LINK (6) |
||
5565 | #define REG_MULTI_SZ (7) |
||
5566 | #define REG_RESOURCE_LIST (8) |
||
5567 | #define REG_FULL_RESOURCE_DESCRIPTOR (9) |
||
5568 | #define REG_RESOURCE_REQUIREMENTS_LIST (10) |
||
5569 | #define REG_QWORD (11) |
||
5570 | #define REG_QWORD_LITTLE_ENDIAN (11) |
||
5571 | |||
5572 | #define SERVICE_KERNEL_DRIVER 0x00000001 |
||
5573 | #define SERVICE_FILE_SYSTEM_DRIVER 0x00000002 |
||
5574 | #define SERVICE_ADAPTER 0x00000004 |
||
5575 | #define SERVICE_RECOGNIZER_DRIVER 0x00000008 |
||
5576 | |||
5577 | #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER) |
||
5578 | |||
5579 | #define SERVICE_WIN32_OWN_PROCESS 0x00000010 |
||
5580 | #define SERVICE_WIN32_SHARE_PROCESS 0x00000020 |
||
5581 | #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS) |
||
5582 | |||
5583 | #define SERVICE_INTERACTIVE_PROCESS 0x00000100 |
||
5584 | |||
5585 | #define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS) |
||
5586 | |||
5587 | #define SERVICE_BOOT_START 0x00000000 |
||
5588 | #define SERVICE_SYSTEM_START 0x00000001 |
||
5589 | #define SERVICE_AUTO_START 0x00000002 |
||
5590 | #define SERVICE_DEMAND_START 0x00000003 |
||
5591 | #define SERVICE_DISABLED 0x00000004 |
||
5592 | |||
5593 | #define SERVICE_ERROR_IGNORE 0x00000000 |
||
5594 | #define SERVICE_ERROR_NORMAL 0x00000001 |
||
5595 | #define SERVICE_ERROR_SEVERE 0x00000002 |
||
5596 | #define SERVICE_ERROR_CRITICAL 0x00000003 |
||
5597 | |||
5598 | typedef enum _CM_SERVICE_NODE_TYPE { |
||
5599 | DriverType = SERVICE_KERNEL_DRIVER,FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, |
||
5600 | Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,AdapterType = SERVICE_ADAPTER,RecognizerType = SERVICE_RECOGNIZER_DRIVER |
||
5601 | } SERVICE_NODE_TYPE; |
||
5602 | |||
5603 | typedef enum _CM_SERVICE_LOAD_TYPE { |
||
5604 | BootLoad = SERVICE_BOOT_START,SystemLoad = SERVICE_SYSTEM_START,AutoLoad = SERVICE_AUTO_START,DemandLoad = SERVICE_DEMAND_START, |
||
5605 | DisableLoad = SERVICE_DISABLED |
||
5606 | } SERVICE_LOAD_TYPE; |
||
5607 | |||
5608 | typedef enum _CM_ERROR_CONTROL_TYPE { |
||
5609 | IgnoreError = SERVICE_ERROR_IGNORE,NormalError = SERVICE_ERROR_NORMAL,SevereError = SERVICE_ERROR_SEVERE,CriticalError = SERVICE_ERROR_CRITICAL |
||
5610 | } SERVICE_ERROR_TYPE; |
||
5611 | |||
5612 | #define TAPE_ERASE_SHORT 0L |
||
5613 | #define TAPE_ERASE_LONG 1L |
||
5614 | |||
5615 | typedef struct _TAPE_ERASE { |
||
5616 | DWORD Type; |
||
5617 | BOOLEAN Immediate; |
||
5618 | } TAPE_ERASE,*PTAPE_ERASE; |
||
5619 | |||
5620 | #define TAPE_LOAD 0L |
||
5621 | #define TAPE_UNLOAD 1L |
||
5622 | #define TAPE_TENSION 2L |
||
5623 | #define TAPE_LOCK 3L |
||
5624 | #define TAPE_UNLOCK 4L |
||
5625 | #define TAPE_FORMAT 5L |
||
5626 | |||
5627 | typedef struct _TAPE_PREPARE { |
||
5628 | DWORD Operation; |
||
5629 | BOOLEAN Immediate; |
||
5630 | } TAPE_PREPARE,*PTAPE_PREPARE; |
||
5631 | |||
5632 | #define TAPE_SETMARKS 0L |
||
5633 | #define TAPE_FILEMARKS 1L |
||
5634 | #define TAPE_SHORT_FILEMARKS 2L |
||
5635 | #define TAPE_LONG_FILEMARKS 3L |
||
5636 | |||
5637 | typedef struct _TAPE_WRITE_MARKS { |
||
5638 | DWORD Type; |
||
5639 | DWORD Count; |
||
5640 | BOOLEAN Immediate; |
||
5641 | } TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS; |
||
5642 | |||
5643 | #define TAPE_ABSOLUTE_POSITION 0L |
||
5644 | #define TAPE_LOGICAL_POSITION 1L |
||
5645 | #define TAPE_PSEUDO_LOGICAL_POSITION 2L |
||
5646 | |||
5647 | typedef struct _TAPE_GET_POSITION { |
||
5648 | DWORD Type; |
||
5649 | DWORD Partition; |
||
5650 | LARGE_INTEGER Offset; |
||
5651 | } TAPE_GET_POSITION,*PTAPE_GET_POSITION; |
||
5652 | |||
5653 | #define TAPE_REWIND 0L |
||
5654 | #define TAPE_ABSOLUTE_BLOCK 1L |
||
5655 | #define TAPE_LOGICAL_BLOCK 2L |
||
5656 | #define TAPE_PSEUDO_LOGICAL_BLOCK 3L |
||
5657 | #define TAPE_SPACE_END_OF_DATA 4L |
||
5658 | #define TAPE_SPACE_RELATIVE_BLOCKS 5L |
||
5659 | #define TAPE_SPACE_FILEMARKS 6L |
||
5660 | #define TAPE_SPACE_SEQUENTIAL_FMKS 7L |
||
5661 | #define TAPE_SPACE_SETMARKS 8L |
||
5662 | #define TAPE_SPACE_SEQUENTIAL_SMKS 9L |
||
5663 | |||
5664 | typedef struct _TAPE_SET_POSITION { |
||
5665 | DWORD Method; |
||
5666 | DWORD Partition; |
||
5667 | LARGE_INTEGER Offset; |
||
5668 | BOOLEAN Immediate; |
||
5669 | } TAPE_SET_POSITION,*PTAPE_SET_POSITION; |
||
5670 | |||
5671 | #define TAPE_DRIVE_FIXED 0x00000001 |
||
5672 | #define TAPE_DRIVE_SELECT 0x00000002 |
||
5673 | #define TAPE_DRIVE_INITIATOR 0x00000004 |
||
5674 | |||
5675 | #define TAPE_DRIVE_ERASE_SHORT 0x00000010 |
||
5676 | #define TAPE_DRIVE_ERASE_LONG 0x00000020 |
||
5677 | #define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040 |
||
5678 | #define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080 |
||
5679 | |||
5680 | #define TAPE_DRIVE_TAPE_CAPACITY 0x00000100 |
||
5681 | #define TAPE_DRIVE_TAPE_REMAINING 0x00000200 |
||
5682 | #define TAPE_DRIVE_FIXED_BLOCK 0x00000400 |
||
5683 | #define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800 |
||
5684 | |||
5685 | #define TAPE_DRIVE_WRITE_PROTECT 0x00001000 |
||
5686 | #define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000 |
||
5687 | |||
5688 | #define TAPE_DRIVE_ECC 0x00010000 |
||
5689 | #define TAPE_DRIVE_COMPRESSION 0x00020000 |
||
5690 | #define TAPE_DRIVE_PADDING 0x00040000 |
||
5691 | #define TAPE_DRIVE_REPORT_SMKS 0x00080000 |
||
5692 | |||
5693 | #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000 |
||
5694 | #define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000 |
||
5695 | #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000 |
||
5696 | |||
5697 | #define TAPE_DRIVE_EJECT_MEDIA 0x01000000 |
||
5698 | #define TAPE_DRIVE_CLEAN_REQUESTS 0x02000000 |
||
5699 | #define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x04000000 |
||
5700 | |||
5701 | #define TAPE_DRIVE_RESERVED_BIT 0x80000000 |
||
5702 | |||
5703 | #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001 |
||
5704 | #define TAPE_DRIVE_TENSION 0x80000002 |
||
5705 | #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004 |
||
5706 | #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008 |
||
5707 | |||
5708 | #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010 |
||
5709 | #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020 |
||
5710 | #define TAPE_DRIVE_TENSION_IMMED 0x80000040 |
||
5711 | #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080 |
||
5712 | |||
5713 | #define TAPE_DRIVE_SET_ECC 0x80000100 |
||
5714 | #define TAPE_DRIVE_SET_COMPRESSION 0x80000200 |
||
5715 | #define TAPE_DRIVE_SET_PADDING 0x80000400 |
||
5716 | #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800 |
||
5717 | |||
5718 | #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000 |
||
5719 | #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000 |
||
5720 | #define TAPE_DRIVE_LOGICAL_BLK 0x80004000 |
||
5721 | #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000 |
||
5722 | |||
5723 | #define TAPE_DRIVE_END_OF_DATA 0x80010000 |
||
5724 | #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000 |
||
5725 | #define TAPE_DRIVE_FILEMARKS 0x80040000 |
||
5726 | #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000 |
||
5727 | |||
5728 | #define TAPE_DRIVE_SETMARKS 0x80100000 |
||
5729 | #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000 |
||
5730 | #define TAPE_DRIVE_REVERSE_POSITION 0x80400000 |
||
5731 | #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000 |
||
5732 | |||
5733 | #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000 |
||
5734 | #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000 |
||
5735 | #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000 |
||
5736 | #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 |
||
5737 | |||
5738 | #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 |
||
5739 | #define TAPE_DRIVE_FORMAT 0xA0000000 |
||
5740 | #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000 |
||
5741 | #define TAPE_DRIVE_HIGH_FEATURES 0x80000000 |
||
5742 | |||
5743 | typedef struct _TAPE_GET_DRIVE_PARAMETERS { |
||
5744 | BOOLEAN ECC; |
||
5745 | BOOLEAN Compression; |
||
5746 | BOOLEAN DataPadding; |
||
5747 | BOOLEAN ReportSetmarks; |
||
5748 | DWORD DefaultBlockSize; |
||
5749 | DWORD MaximumBlockSize; |
||
5750 | DWORD MinimumBlockSize; |
||
5751 | DWORD MaximumPartitionCount; |
||
5752 | DWORD FeaturesLow; |
||
5753 | DWORD FeaturesHigh; |
||
5754 | DWORD EOTWarningZoneSize; |
||
5755 | } TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS; |
||
5756 | |||
5757 | typedef struct _TAPE_SET_DRIVE_PARAMETERS { |
||
5758 | BOOLEAN ECC; |
||
5759 | BOOLEAN Compression; |
||
5760 | BOOLEAN DataPadding; |
||
5761 | BOOLEAN ReportSetmarks; |
||
5762 | DWORD EOTWarningZoneSize; |
||
5763 | } TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS; |
||
5764 | |||
5765 | typedef struct _TAPE_GET_MEDIA_PARAMETERS { |
||
5766 | LARGE_INTEGER Capacity; |
||
5767 | LARGE_INTEGER Remaining; |
||
5768 | DWORD BlockSize; |
||
5769 | DWORD PartitionCount; |
||
5770 | BOOLEAN WriteProtected; |
||
5771 | } TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS; |
||
5772 | |||
5773 | typedef struct _TAPE_SET_MEDIA_PARAMETERS { |
||
5774 | DWORD BlockSize; |
||
5775 | } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS; |
||
5776 | |||
5777 | #define TAPE_FIXED_PARTITIONS 0L |
||
5778 | #define TAPE_SELECT_PARTITIONS 1L |
||
5779 | #define TAPE_INITIATOR_PARTITIONS 2L |
||
5780 | |||
5781 | typedef struct _TAPE_CREATE_PARTITION { |
||
5782 | DWORD Method; |
||
5783 | DWORD Count; |
||
5784 | DWORD Size; |
||
5785 | } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION; |
||
5786 | |||
5787 | #define TAPE_QUERY_DRIVE_PARAMETERS 0L |
||
5788 | #define TAPE_QUERY_MEDIA_CAPACITY 1L |
||
5789 | #define TAPE_CHECK_FOR_DRIVE_PROBLEM 2L |
||
5790 | #define TAPE_QUERY_IO_ERROR_DATA 3L |
||
5791 | #define TAPE_QUERY_DEVICE_ERROR_DATA 4L |
||
5792 | |||
5793 | typedef struct _TAPE_WMI_OPERATIONS { |
||
5794 | DWORD Method; |
||
5795 | DWORD DataBufferSize; |
||
5796 | PVOID DataBuffer; |
||
5797 | } TAPE_WMI_OPERATIONS,*PTAPE_WMI_OPERATIONS; |
||
5798 | |||
5799 | typedef enum _TAPE_DRIVE_PROBLEM_TYPE { |
||
5800 | TapeDriveProblemNone,TapeDriveReadWriteWarning,TapeDriveReadWriteError,TapeDriveReadWarning,TapeDriveWriteWarning,TapeDriveReadError,TapeDriveWriteError,TapeDriveHardwareError,TapeDriveUnsupportedMedia,TapeDriveScsiConnectionError,TapeDriveTimetoClean,TapeDriveCleanDriveNow,TapeDriveMediaLifeExpired,TapeDriveSnappedTape |
||
5801 | } TAPE_DRIVE_PROBLEM_TYPE; |
||
5802 | |||
5803 | #if defined(__x86_64) |
||
5804 | __CRT_INLINE struct _TEB *NtCurrentTeb(VOID) { return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB,Self)); } |
||
5805 | __CRT_INLINE PVOID GetCurrentFiber(VOID) { return(PVOID)__readgsqword(FIELD_OFFSET(NT_TIB,FiberData)); } |
||
5806 | __CRT_INLINE PVOID GetFiberData(VOID) { |
||
5807 | return *(PVOID *)GetCurrentFiber(); |
||
5808 | } |
||
5809 | #endif |
||
5810 | |||
5811 | #if(defined(_X86_) && !defined(__x86_64)) |
||
5812 | #define PcTeb 0x18 |
||
5813 | __CRT_INLINE struct _TEB *NtCurrentTeb(void) { |
||
5814 | struct _TEB *ret; |
||
5815 | __asm__ volatile ("movl %%fs:0x18,%0" |
||
5816 | : "=r" (ret)); |
||
5817 | return ret; |
||
5818 | } |
||
5819 | #endif |
||
5820 | |||
5821 | #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION (1) |
||
5822 | #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION (2) |
||
5823 | #define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION (3) |
||
5824 | #define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION (4) |
||
5825 | #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION (5) |
||
5826 | #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION (6) |
||
5827 | #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION (7) |
||
5828 | #define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE (8) |
||
5829 | #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES (9) |
||
5830 | #define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS (10) |
||
5831 | |||
5832 | #ifdef __cplusplus |
||
5833 | } |
||
5834 | #endif |
||
5835 | #endif16) |