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