1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 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 #include <winapifamily.h> 19 #include <apiset.h> 20 21 #define ANYSIZE_ARRAY 1 22 23 #include <specstrings.h> 24 25 #ifndef __WIDL__ 26 #define __INTRINSIC_GROUP_WINNT /* only define the intrinsics in this file */ 27 #include <psdk_inc/intrin-impl.h> 28 #endif 29 30 #if defined(__x86_64) && \ 31 !(defined(_X86_) || defined(__i386__) || defined(_IA64_) || defined (__arm__) || defined(__aarch64__)) 32 #if !defined(_AMD64_) 33 #define _AMD64_ 34 #endif 35 #endif /* _AMD64_ */ 36 37 #if defined(__arm__) && \ 38 !(defined(_X86_) || defined(__x86_64) || defined(_AMD64_) || defined (__ia64__) || defined(__aarch64__)) 39 #if !defined(_ARM_) 40 #define _ARM_ 41 #endif 42 #endif /* _ARM_ */ 43 44 #if defined(__aarch64__) && \ 45 !(defined(_X86_) || defined(__x86_64) || defined(_AMD64_) || defined (__ia64__) || defined(__arm__)) 46 #if !defined(_ARM64_) 47 #define _ARM64_ 48 #endif 49 #endif /* _ARM64_ */ 50 51 #if defined(__ia64__) && \ 52 !(defined(_X86_) || defined(__x86_64) || defined(_AMD64_) || defined (__arm__) || defined(__aarch64__)) 53 #if !defined(_IA64_) 54 #define _IA64_ 55 #endif 56 #endif /* _IA64_ */ 57 58 #include <sdkddkver.h> 59 60 #ifndef DUMMYUNIONNAME 61 #if defined (NONAMELESSUNION) 62 #define DUMMYUNIONNAME u 63 #define DUMMYUNIONNAME2 u2 64 #define DUMMYUNIONNAME3 u3 65 #define DUMMYUNIONNAME4 u4 66 #define DUMMYUNIONNAME5 u5 67 #define DUMMYUNIONNAME6 u6 68 #define DUMMYUNIONNAME7 u7 69 #define DUMMYUNIONNAME8 u8 70 #define DUMMYUNIONNAME9 u9 71 #else 72 #define DUMMYUNIONNAME 73 #define DUMMYUNIONNAME2 74 #define DUMMYUNIONNAME3 75 #define DUMMYUNIONNAME4 76 #define DUMMYUNIONNAME5 77 #define DUMMYUNIONNAME6 78 #define DUMMYUNIONNAME7 79 #define DUMMYUNIONNAME8 80 #define DUMMYUNIONNAME9 81 #endif 82 #endif 83 84 #ifndef DUMMYSTRUCTNAME 85 #if defined (NONAMELESSUNION) 86 #define DUMMYSTRUCTNAME s 87 #define DUMMYSTRUCTNAME2 s2 88 #define DUMMYSTRUCTNAME3 s3 89 #define DUMMYSTRUCTNAME4 s4 90 #define DUMMYSTRUCTNAME5 s5 91 #else 92 #define DUMMYSTRUCTNAME 93 #define DUMMYSTRUCTNAME2 94 #define DUMMYSTRUCTNAME3 95 #define DUMMYSTRUCTNAME4 96 #define DUMMYSTRUCTNAME5 97 #endif 98 #endif 99 100 #define RESTRICTED_POINTER 101 102 #undef UNALIGNED /* avoid redefinition warnings vs _mingw.h */ 103 #undef UNALIGNED64 104 #if defined (__ia64__) || defined (__x86_64__) || defined (__arm__) || defined(__aarch64__) 105 #define ALIGNMENT_MACHINE 106 #define UNALIGNED __unaligned 107 #if defined (_WIN64) 108 #define UNALIGNED64 __unaligned 109 #else 110 #define UNALIGNED64 111 #endif 112 #else 113 #undef ALIGNMENT_MACHINE 114 #define UNALIGNED 115 #define UNALIGNED64 116 #endif 117 118 #ifdef _WIN64 119 #define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG) 120 #define MEMORY_ALLOCATION_ALIGNMENT 16 121 #else 122 #define MAX_NATURAL_ALIGNMENT sizeof(DWORD) 123 #define MEMORY_ALLOCATION_ALIGNMENT 8 124 #endif 125 126 #ifdef __cplusplus 127 #define TYPE_ALIGNMENT(t) __alignof__ (t) 128 #else 129 #define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test) 130 #endif 131 132 #if defined (__x86_64__) || defined (__i386__) 133 #define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT (DWORD) 134 #elif defined (__ia64__) || defined (__arm__) || defined(__aarch64__) 135 #define PROBE_ALIGNMENT(_s) (TYPE_ALIGNMENT (_s) > TYPE_ALIGNMENT (DWORD) ? TYPE_ALIGNMENT (_s) : TYPE_ALIGNMENT (DWORD)) 136 #elif !defined (RC_INVOKED) && !defined (__WIDL__) 137 #error No supported target architecture. 138 #endif 139 140 #ifdef _WIN64 141 #define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT (DWORD) 142 #endif 143 144 #if defined(_MSC_VER) 145 # define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] 146 #else 147 # define C_ASSERT(e) extern void __C_ASSERT__(int [(e)?1:-1]) 148 #endif 149 150 #include <basetsd.h> 151 152 #ifndef DECLSPEC_IMPORT 153 #if (defined (__i386__) || defined (__ia64__) || defined (__x86_64__) || defined (__arm__) || defined(__aarch64__)) && !defined (__WIDL__) 154 #define DECLSPEC_IMPORT __declspec (dllimport) 155 #else 156 #define DECLSPEC_IMPORT 157 #endif 158 #endif 159 160 #ifndef DECLSPEC_NORETURN 161 #ifndef __WIDL__ 162 #define DECLSPEC_NORETURN __declspec (noreturn) 163 #else 164 #define DECLSPEC_NORETURN 165 #endif 166 #endif 167 168 #ifndef DECLSPEC_NOTHROW 169 #ifndef __WIDL__ 170 #define DECLSPEC_NOTHROW __declspec (nothrow) 171 #else 172 #define DECLSPEC_NOTHROW 173 #endif 174 #endif 175 176 #ifndef DECLSPEC_ALIGN 177 #ifndef __WIDL__ 178 #if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) 179 #define DECLSPEC_ALIGN(x) __declspec(align(x)) 180 #elif defined(__GNUC__) 181 #define DECLSPEC_ALIGN(x) __attribute__ ((__aligned__ (x))) 182 #else 183 #define DECLSPEC_ALIGN(x) /*__declspec (align (x))*/ 184 #endif 185 #else 186 #define DECLSPEC_ALIGN(x) 187 #endif 188 #endif /* DECLSPEC_ALIGN */ 189 190 #ifndef SYSTEM_CACHE_ALIGNMENT_SIZE 191 #if defined(__x86_64__) || defined(__i386__) 192 #define SYSTEM_CACHE_ALIGNMENT_SIZE 64 193 #else 194 #define SYSTEM_CACHE_ALIGNMENT_SIZE 128 195 #endif 196 #endif 197 198 #ifndef DECLSPEC_CACHEALIGN 199 #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(SYSTEM_CACHE_ALIGNMENT_SIZE) 200 #endif 201 202 #ifndef DECLSPEC_UUID 203 #define DECLSPEC_UUID(x) 204 #endif 205 206 #ifndef DECLSPEC_NOVTABLE 207 #define DECLSPEC_NOVTABLE 208 #endif 209 210 #ifndef DECLSPEC_SELECTANY 211 #define DECLSPEC_SELECTANY __declspec(selectany) 212 #endif 213 214 #ifndef NOP_FUNCTION 215 #if (_MSC_VER >= 1210) 216 #define NOP_FUNCTION __noop 217 #else 218 #define NOP_FUNCTION (void)0 219 #endif 220 #endif 221 222 #ifndef DECLSPEC_ADDRSAFE 223 #define DECLSPEC_ADDRSAFE 224 #endif 225 226 #ifndef DECLSPEC_NOINLINE 227 #if (_MSC_VER >= 1300) 228 #define DECLSPEC_NOINLINE __declspec(noinline) 229 #elif defined(__GNUC__) 230 #define DECLSPEC_NOINLINE __attribute__((noinline)) 231 #else 232 #define DECLSPEC_NOINLINE 233 #endif 234 #endif /* DECLSPEC_NOINLINE */ 235 236 #ifndef FORCEINLINE 237 #if !defined(_MSC_VER) || (_MSC_VER >=1200) 238 #define FORCEINLINE __forceinline 239 #else 240 #define FORCEINLINE __inline 241 #endif 242 #endif /* FORCEINLINE */ 243 244 #ifndef DECLSPEC_DEPRECATED 245 #if !defined (__WIDL__) 246 #define DECLSPEC_DEPRECATED __declspec(deprecated) 247 #define DEPRECATE_SUPPORTED 248 #else 249 #define DECLSPEC_DEPRECATED 250 #undef DEPRECATE_SUPPORTED 251 #endif 252 #endif 253 254 #define DECLSPEC_DEPRECATED_DDK 255 #define PRAGMA_DEPRECATED_DDK 0 256 257 typedef void *PVOID; 258 typedef void *PVOID64; 259 260 #ifndef FASTCALL 261 #if defined (__i386__) && !defined (__WIDL__) 262 #define FASTCALL __fastcall 263 #else 264 #define FASTCALL 265 #endif 266 #endif /* FASTCALL */ 267 268 #if defined(_ARM_) || defined(_ARM64_) 269 #define NTAPI 270 #else 271 #define NTAPI __stdcall 272 #endif 273 #define NTAPI_INLINE NTAPI 274 275 #if !defined(_NTSYSTEM_) 276 #define NTSYSAPI DECLSPEC_IMPORT 277 #define NTSYSCALLAPI DECLSPEC_IMPORT 278 #else 279 #define NTSYSAPI 280 #define NTSYSCALLAPI DECLSPEC_ADDRSAFE 281 #endif 282 283 #ifndef VOID 284 #define VOID void 285 typedef char CHAR; 286 typedef short SHORT; 287 typedef __LONG32 LONG; 288 #if !defined (__WIDL__) 289 typedef int INT; 290 #endif 291 #endif 292 293 #ifndef __WCHAR_DEFINED 294 #define __WCHAR_DEFINED 295 typedef wchar_t WCHAR; 296 #endif 297 typedef WCHAR *PWCHAR,*LPWCH,*PWCH; 298 typedef CONST WCHAR *LPCWCH,*PCWCH; 299 typedef WCHAR *NWPSTR,*LPWSTR,*PWSTR; 300 typedef PWSTR *PZPWSTR; 301 typedef CONST PWSTR *PCZPWSTR; 302 typedef WCHAR UNALIGNED *LPUWSTR,*PUWSTR; 303 typedef CONST WCHAR *LPCWSTR,*PCWSTR; 304 typedef PCWSTR *PZPCWSTR; 305 typedef CONST WCHAR UNALIGNED *LPCUWSTR,*PCUWSTR; 306 typedef WCHAR *PZZWSTR; 307 typedef CONST WCHAR *PCZZWSTR; 308 typedef WCHAR UNALIGNED *PUZZWSTR; 309 typedef CONST WCHAR UNALIGNED *PCUZZWSTR; 310 typedef WCHAR *PNZWCH; 311 typedef CONST WCHAR *PCNZWCH; 312 typedef WCHAR UNALIGNED *PUNZWCH; 313 typedef CONST WCHAR UNALIGNED *PCUNZWCH; 314 315 #if _WIN32_WINNT >= 0x0600 || (defined (__cplusplus) && defined (WINDOWS_ENABLE_CPLUSPLUS)) 316 typedef CONST WCHAR *LPCWCHAR,*PCWCHAR; 317 typedef CONST WCHAR UNALIGNED *LPCUWCHAR,*PCUWCHAR; 318 typedef unsigned long UCSCHAR; 319 320 #define UCSCHAR_INVALID_CHARACTER (0xffffffff) 321 #define MIN_UCSCHAR (0) 322 #define MAX_UCSCHAR (0x0010ffff) 323 324 typedef UCSCHAR *PUCSCHAR; 325 typedef const UCSCHAR *PCUCSCHAR; 326 typedef UCSCHAR *PUCSSTR; 327 typedef UCSCHAR UNALIGNED *PUUCSSTR; 328 typedef const UCSCHAR *PCUCSSTR; 329 typedef const UCSCHAR UNALIGNED *PCUUCSSTR; 330 typedef UCSCHAR UNALIGNED *PUUCSCHAR; 331 typedef const UCSCHAR UNALIGNED *PCUUCSCHAR; 332 #endif 333 334 typedef CHAR *PCHAR,*LPCH,*PCH; 335 typedef CONST CHAR *LPCCH,*PCCH; 336 typedef CHAR *NPSTR,*LPSTR,*PSTR; 337 typedef PSTR *PZPSTR; 338 typedef CONST PSTR *PCZPSTR; 339 typedef CONST CHAR *LPCSTR,*PCSTR; 340 typedef PCSTR *PZPCSTR; 341 typedef CHAR *PZZSTR; 342 typedef CONST CHAR *PCZZSTR; 343 typedef CHAR *PNZCH; 344 typedef CONST CHAR *PCNZCH; 345 346 #ifdef UNICODE 347 #ifndef _TCHAR_DEFINED 348 #define _TCHAR_DEFINED 349 typedef WCHAR TCHAR, *PTCHAR; 350 typedef WCHAR TBYTE, *PTBYTE; 351 #endif 352 353 typedef LPWSTR LPTCH,PTCH; 354 typedef LPWSTR PTSTR,LPTSTR; 355 typedef LPCWSTR PCTSTR,LPCTSTR; 356 typedef LPUWSTR PUTSTR,LPUTSTR; 357 typedef LPCUWSTR PCUTSTR,LPCUTSTR; 358 typedef LPWSTR LP; 359 typedef PZZWSTR PZZTSTR; 360 typedef PCZZWSTR PCZZTSTR; 361 typedef PUZZWSTR PUZZTSTR; 362 typedef PCUZZWSTR PCUZZTSTR; 363 typedef PZPWSTR PZPTSTR; 364 typedef PNZWCH PNZTCH; 365 typedef PCNZWCH PCNZTCH; 366 typedef PUNZWCH PUNZTCH; 367 typedef PCUNZWCH PCUNZTCH; 368 369 #define __TEXT(quote) L##quote 370 #else 371 #ifndef _TCHAR_DEFINED 372 #define _TCHAR_DEFINED 373 typedef char TCHAR, *PTCHAR; 374 typedef unsigned char TBYTE, *PTBYTE; 375 #endif 376 377 typedef LPSTR LPTCH,PTCH; 378 typedef LPCCH LPCTCH,PCTCH; 379 typedef LPSTR PTSTR,LPTSTR,PUTSTR,LPUTSTR; 380 typedef LPCSTR PCTSTR,LPCTSTR,PCUTSTR,LPCUTSTR; 381 typedef PZZSTR PZZTSTR, PUZZTSTR; 382 typedef PCZZSTR PCZZTSTR, PCUZZTSTR; 383 typedef PZPSTR PZPTSTR; 384 typedef PNZCH PNZTCH, PUNZTCH; 385 typedef PCNZCH PCNZTCH, PCUNZTCH; 386 387 #define __TEXT(quote) quote 388 #endif 389 390 #define TEXT(quote) __TEXT(quote) 391 392 typedef SHORT *PSHORT; 393 typedef LONG *PLONG; 394 395 #ifndef ___GROUP_AFFINITY_DEFINED 396 #define ___GROUP_AFFINITY_DEFINED 397 typedef struct _GROUP_AFFINITY { 398 KAFFINITY Mask; 399 WORD Group; 400 WORD Reserved[3]; 401 } GROUP_AFFINITY, *PGROUP_AFFINITY; 402 #endif /* !___GROUP_AFFINITY_DEFINED */ 403 404 #ifdef STRICT 405 typedef void *HANDLE; 406 #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name 407 #else 408 typedef PVOID HANDLE; 409 #define DECLARE_HANDLE(name) typedef HANDLE name 410 #endif 411 412 typedef HANDLE *PHANDLE; 413 typedef BYTE FCHAR; 414 typedef WORD FSHORT; 415 typedef DWORD FLONG; 416 417 #ifndef _HRESULT_DEFINED 418 #define _HRESULT_DEFINED 419 typedef LONG HRESULT; 420 #endif 421 422 #ifdef __cplusplus 423 #define EXTERN_C extern "C" 424 #else 425 #define EXTERN_C extern 426 #endif 427 428 /* Keep in sync with basetyps.h header. */ 429 #ifndef STDMETHODCALLTYPE 430 #define STDMETHODCALLTYPE WINAPI 431 #define STDMETHODVCALLTYPE __cdecl 432 #define STDAPICALLTYPE WINAPI 433 #define STDAPIVCALLTYPE __cdecl 434 435 #define STDAPI EXTERN_C HRESULT WINAPI 436 #define STDAPI_(type) EXTERN_C type WINAPI 437 438 #define STDMETHODIMP HRESULT WINAPI 439 #define STDMETHODIMP_(type) type WINAPI 440 441 #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE 442 #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE 443 444 #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE 445 #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE 446 #endif 447 448 #define IFACEMETHODIMP STDMETHODIMP 449 #define IFACEMETHODIMP_(type) STDMETHODIMP_(type) 450 #define IFACEMETHODIMPV STDMETHODIMPV 451 #define IFACEMETHODIMPV_(type) STDMETHODIMPV_(type) 452 453 typedef char CCHAR; 454 #ifndef _LCID_DEFINED 455 #define _LCID_DEFINED 456 typedef DWORD LCID; 457 #endif 458 typedef PDWORD PLCID; 459 #ifndef _LANGID_DEFINED 460 #define _LANGID_DEFINED 461 typedef WORD LANGID; 462 #endif 463 464 #ifndef __COMPARTMENT_ID_DEFINED__ 465 #define __COMPARTMENT_ID_DEFINED__ 466 467 typedef enum { 468 UNSPECIFIED_COMPARTMENT_ID = 0, 469 DEFAULT_COMPARTMENT_ID 470 } COMPARTMENT_ID,*PCOMPARTMENT_ID; 471 #endif 472 473 #define APPLICATION_ERROR_MASK 0x20000000 474 #define ERROR_SEVERITY_SUCCESS 0x00000000 475 #define ERROR_SEVERITY_INFORMATIONAL 0x40000000 476 #define ERROR_SEVERITY_WARNING 0x80000000 477 #define ERROR_SEVERITY_ERROR 0xC0000000 478 479 #if defined (__ia64__) && !defined (__WIDL__) 480 __declspec(align(16)) 481 #endif 482 typedef struct _FLOAT128 { 483 __MINGW_EXTENSION __int64 LowPart; 484 __MINGW_EXTENSION __int64 HighPart; 485 } FLOAT128; 486 487 typedef FLOAT128 *PFLOAT128; 488 489 #define _ULONGLONG_ 490 __MINGW_EXTENSION typedef __int64 LONGLONG; 491 __MINGW_EXTENSION typedef unsigned __int64 ULONGLONG; 492 493 #define MAXLONGLONG (0x7fffffffffffffffll) 494 495 typedef LONGLONG *PLONGLONG; 496 typedef ULONGLONG *PULONGLONG; 497 typedef LONGLONG USN; 498 499 #ifndef _LARGE_INTEGER_DEFINED 500 #define _LARGE_INTEGER_DEFINED 501 502 #if defined (__WIDL__) 503 typedef struct _LARGE_INTEGER { 504 #else 505 typedef union _LARGE_INTEGER { 506 __C89_NAMELESS struct { 507 DWORD LowPart; 508 LONG HighPart; 509 } DUMMYSTRUCTNAME; 510 struct { 511 DWORD LowPart; 512 LONG HighPart; 513 } u; 514 #endif 515 LONGLONG QuadPart; 516 } LARGE_INTEGER; 517 518 typedef LARGE_INTEGER *PLARGE_INTEGER; 519 520 #if defined (__WIDL__) 521 typedef struct _ULARGE_INTEGER { 522 #else 523 typedef union _ULARGE_INTEGER { 524 __C89_NAMELESS struct { 525 DWORD LowPart; 526 DWORD HighPart; 527 } DUMMYSTRUCTNAME; 528 struct { 529 DWORD LowPart; 530 DWORD HighPart; 531 } u; 532 #endif 533 ULONGLONG QuadPart; 534 } ULARGE_INTEGER; 535 536 typedef ULARGE_INTEGER *PULARGE_INTEGER; 537 538 typedef struct _LUID { 539 DWORD LowPart; 540 LONG HighPart; 541 } LUID,*PLUID; 542 543 #endif /* _LARGE_INTEGER_DEFINED */ 544 545 #define _DWORDLONG_ 546 typedef ULONGLONG DWORDLONG; 547 typedef DWORDLONG *PDWORDLONG; 548 549 #define Int32x32To64(a, b) (((LONGLONG) ((LONG) (a))) * ((LONGLONG) ((LONG) (b)))) 550 #define UInt32x32To64(a, b) (((ULONGLONG) ((unsigned int) (a))) *((ULONGLONG) ((unsigned int) (b)))) 551 #define Int64ShllMod32(a, b) (((ULONGLONG) (a)) << (b)) 552 #define Int64ShraMod32(a, b) (((LONGLONG) (a)) >> (b)) 553 #define Int64ShrlMod32(a, b) (((ULONGLONG) (a)) >> (b)) 554 555 #ifdef __cplusplus 556 extern "C" { 557 #endif 558 559 #ifdef __x86_64 560 561 #define RotateLeft8 _rotl8 562 #define RotateLeft16 _rotl16 563 #define RotateRight8 _rotr8 564 #define RotateRight16 _rotr16 565 566 unsigned char __cdecl _rotl8(unsigned char Value,unsigned char Shift); 567 unsigned short __cdecl _rotl16(unsigned short Value,unsigned char Shift); 568 unsigned char __cdecl _rotr8(unsigned char Value,unsigned char Shift); 569 unsigned short __cdecl _rotr16(unsigned short Value,unsigned char Shift); 570 #endif /* __x86_64 */ 571 572 #define RotateLeft32 _rotl 573 #define RotateLeft64 _rotl64 574 #define RotateRight32 _rotr 575 #define RotateRight64 _rotr64 576 577 #pragma push_macro ("_rotl") 578 #pragma push_macro ("_rotr") 579 #undef _rotl 580 #undef _rotr 581 unsigned int __cdecl _rotl(unsigned int Value,int Shift); 582 unsigned int __cdecl _rotr(unsigned int Value,int Shift); 583 #pragma pop_macro ("_rotr") 584 #pragma pop_macro ("_rotl") 585 #pragma push_macro ("_rotr64") 586 #pragma push_macro ("_rotl64") 587 #undef _rotl64 588 #undef _rotr64 589 __MINGW_EXTENSION unsigned __int64 __cdecl _rotl64(unsigned __int64 Value,int Shift); 590 __MINGW_EXTENSION unsigned __int64 __cdecl _rotr64(unsigned __int64 Value,int Shift); 591 #pragma pop_macro ("_rotl64") 592 #pragma pop_macro ("_rotr64") 593 594 #ifdef __cplusplus 595 } 596 #endif 597 598 #define ANSI_NULL ((CHAR)0) 599 #define UNICODE_NULL ((WCHAR)0) 600 #define UNICODE_STRING_MAX_BYTES ((WORD) 65534) 601 #define UNICODE_STRING_MAX_CHARS (32767) 602 603 #ifndef _BOOLEAN_ 604 #define _BOOLEAN_ 605 typedef BYTE BOOLEAN; 606 #endif 607 typedef BOOLEAN *PBOOLEAN; 608 609 #ifndef _LIST_ENTRY_DEFINED 610 #define _LIST_ENTRY_DEFINED 611 612 typedef struct _LIST_ENTRY { 613 struct _LIST_ENTRY *Flink; 614 struct _LIST_ENTRY *Blink; 615 } LIST_ENTRY,*PLIST_ENTRY,*RESTRICTED_POINTER PRLIST_ENTRY; 616 617 typedef struct _SINGLE_LIST_ENTRY { 618 struct _SINGLE_LIST_ENTRY *Next; 619 } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY; 620 621 typedef struct LIST_ENTRY32 { 622 DWORD Flink; 623 DWORD Blink; 624 } LIST_ENTRY32; 625 typedef LIST_ENTRY32 *PLIST_ENTRY32; 626 627 typedef struct LIST_ENTRY64 { 628 ULONGLONG Flink; 629 ULONGLONG Blink; 630 } LIST_ENTRY64; 631 typedef LIST_ENTRY64 *PLIST_ENTRY64; 632 633 #endif /* _LIST_ENTRY_DEFINED */ 634 635 #include <guiddef.h> 636 637 #ifndef __OBJECTID_DEFINED 638 #define __OBJECTID_DEFINED 639 typedef struct _OBJECTID { 640 GUID Lineage; 641 DWORD Uniquifier; 642 } OBJECTID; 643 #endif 644 645 #define MINCHAR 0x80 646 #define MAXCHAR 0x7f 647 #define MINSHORT 0x8000 648 #define MAXSHORT 0x7fff 649 #define MINLONG 0x80000000 650 #define MAXLONG 0x7fffffff 651 #define MAXBYTE 0xff 652 #define MAXWORD 0xffff 653 #define MAXDWORD 0xffffffff 654 655 #define FIELD_OFFSET(Type, Field) ((LONG) __builtin_offsetof(Type, Field)) 656 #define RTL_FIELD_SIZE(type,field) (sizeof(((type *)0)->field)) 657 #define RTL_SIZEOF_THROUGH_FIELD(type,field) (FIELD_OFFSET(type,field) + RTL_FIELD_SIZE(type,field)) 658 #define RTL_CONTAINS_FIELD(Struct,Size,Field) ((((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size))) 659 #define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0])) 660 #define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A) 661 662 #ifdef ENABLE_RTL_NUMBER_OF_V2 663 #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A) 664 #else 665 #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A) 666 #endif 667 668 #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A) 669 #define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A) 670 671 #define RTL_FIELD_TYPE(type,field) (((type*)0)->field) 672 #define RTL_NUMBER_OF_FIELD(type,field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type,field))) 673 #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))) 674 675 #ifdef __cplusplus 676 #define RTL_CONST_CAST(type) const_cast<type> 677 #else 678 #define RTL_CONST_CAST(type) (type) 679 #endif 680 681 #ifdef __cplusplus 682 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \ 683 extern "C++" { \ 684 inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) | ((int)b)); } \ 685 inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \ 686 inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) & ((int)b)); } \ 687 inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \ 688 inline ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((int)a)); } \ 689 inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) ^ ((int)b)); } \ 690 inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \ 691 } 692 #else 693 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) /* */ 694 #endif 695 696 #define COMPILETIME_OR_2FLAGS(a, b) ((UINT) (a) | (UINT) (b)) 697 #define COMPILETIME_OR_3FLAGS(a, b, c) ((UINT) (a) | (UINT) (b) | (UINT) (c)) 698 #define COMPILETIME_OR_4FLAGS(a, b, c, d) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d)) 699 #define COMPILETIME_OR_5FLAGS(a, b, c, d, e) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d) | (UINT) (e)) 700 701 702 #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8) 703 #define RTL_BITS_OF_FIELD(type,field) (RTL_BITS_OF(RTL_FIELD_TYPE(type,field))) 704 #define CONTAINING_RECORD(address,type,field) ((type *)((PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field))) 705 706 typedef EXCEPTION_DISPOSITION NTAPI EXCEPTION_ROUTINE (struct _EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, struct _CONTEXT *ContextRecord, PVOID DispatcherContext); 707 #ifndef __PEXCEPTION_ROUTINE_DEFINED 708 #define __PEXCEPTION_ROUTINE_DEFINED 709 typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE; 710 #endif 711 712 #define VER_WORKSTATION_NT 0x40000000 713 #define VER_SERVER_NT 0x80000000 714 #define VER_SUITE_SMALLBUSINESS 0x00000001 715 #define VER_SUITE_ENTERPRISE 0x00000002 716 #define VER_SUITE_BACKOFFICE 0x00000004 717 #define VER_SUITE_COMMUNICATIONS 0x00000008 718 #define VER_SUITE_TERMINAL 0x00000010 719 #define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 720 #define VER_SUITE_EMBEDDEDNT 0x00000040 721 #define VER_SUITE_DATACENTER 0x00000080 722 #define VER_SUITE_SINGLEUSERTS 0x00000100 723 #define VER_SUITE_PERSONAL 0x00000200 724 #define VER_SUITE_BLADE 0x00000400 725 #define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800 726 #define VER_SUITE_SECURITY_APPLIANCE 0x00001000 727 #define VER_SUITE_STORAGE_SERVER 0x00002000 728 #define VER_SUITE_COMPUTE_SERVER 0x00004000 729 #define VER_SUITE_WH_SERVER 0x00008000 730 731 #define PRODUCT_UNDEFINED 0x0 732 733 #define PRODUCT_ULTIMATE 0x1 734 #define PRODUCT_HOME_BASIC 0x2 735 #define PRODUCT_HOME_PREMIUM 0x3 736 #define PRODUCT_ENTERPRISE 0x4 737 #define PRODUCT_HOME_BASIC_N 0x5 738 #define PRODUCT_BUSINESS 0x6 739 #define PRODUCT_STANDARD_SERVER 0x7 740 #define PRODUCT_DATACENTER_SERVER 0x8 741 #define PRODUCT_SMALLBUSINESS_SERVER 0x9 742 #define PRODUCT_ENTERPRISE_SERVER 0xa 743 #define PRODUCT_STARTER 0xb 744 #define PRODUCT_DATACENTER_SERVER_CORE 0xc 745 #define PRODUCT_STANDARD_SERVER_CORE 0xd 746 #define PRODUCT_ENTERPRISE_SERVER_CORE 0xe 747 #define PRODUCT_ENTERPRISE_SERVER_IA64 0xf 748 #define PRODUCT_BUSINESS_N 0x10 749 #define PRODUCT_WEB_SERVER 0x11 750 #define PRODUCT_CLUSTER_SERVER 0x12 751 #define PRODUCT_HOME_SERVER 0x13 752 #define PRODUCT_STORAGE_EXPRESS_SERVER 0x14 753 #define PRODUCT_STORAGE_STANDARD_SERVER 0x15 754 #define PRODUCT_STORAGE_WORKGROUP_SERVER 0x16 755 #define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x17 756 #define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x18 757 #define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19 758 #define PRODUCT_HOME_PREMIUM_N 0x1a 759 #define PRODUCT_ENTERPRISE_N 0x1b 760 #define PRODUCT_ULTIMATE_N 0x1c 761 #define PRODUCT_WEB_SERVER_CORE 0x1d 762 #define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x1e 763 #define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x1f 764 #define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x20 765 #define PRODUCT_SERVER_FOUNDATION 0x21 766 #define PRODUCT_HOME_PREMIUM_SERVER 0x22 767 #define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x23 768 #define PRODUCT_STANDARD_SERVER_V 0x24 769 #define PRODUCT_DATACENTER_SERVER_V 0x25 770 #define PRODUCT_SERVER_V 0x25 771 #define PRODUCT_ENTERPRISE_SERVER_V 0x26 772 #define PRODUCT_DATACENTER_SERVER_CORE_V 0x27 773 #define PRODUCT_STANDARD_SERVER_CORE_V 0x28 774 #define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x29 775 #define PRODUCT_HYPERV 0x2a 776 #define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x2b 777 #define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x2c 778 #define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x2d 779 #define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x2e 780 #define PRODUCT_STARTER_N 0x2f 781 #define PRODUCT_PROFESSIONAL 0x30 782 #define PRODUCT_PROFESSIONAL_N 0x31 783 #define PRODUCT_SB_SOLUTION_SERVER 0x32 784 #define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x33 785 #define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x34 786 #define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x35 787 #define PRODUCT_SB_SOLUTION_SERVER_EM 0x36 788 #define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x37 789 #define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x38 790 #define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x39 791 #define PRODUCT_PROFESSIONAL_EMBEDDED 0x3A 792 #define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x3B 793 #define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x3C 794 #define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x3D 795 #define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x3E 796 #define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x3f 797 #define PRODUCT_CLUSTER_SERVER_V 0x40 798 #define PRODUCT_EMBEDDED 0x41 799 #define PRODUCT_STARTER_E 0x42 800 #define PRODUCT_HOME_BASIC_E 0x43 801 #define PRODUCT_HOME_PREMIUM_E 0x44 802 #define PRODUCT_PROFESSIONAL_E 0x45 803 #define PRODUCT_ENTERPRISE_E 0x46 804 #define PRODUCT_ULTIMATE_E 0x47 805 #define PRODUCT_ENTERPRISE_EVALUATION 0x48 806 #define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x4C 807 #define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x4D 808 #define PRODUCT_STANDARD_EVALUATION_SERVER 0x4F 809 #define PRODUCT_DATACENTER_EVALUATION_SERVER 0x50 810 #define PRODUCT_ENTERPRISE_N_EVALUATION 0x54 811 #define PRODUCT_EMBEDDED_AUTOMOTIVE 0x55 812 #define PRODUCT_EMBEDDED_INDUSTRY_A 0x56 813 #define PRODUCT_THINPC 0x57 814 #define PRODUCT_EMBEDDED_A 0x58 815 #define PRODUCT_EMBEDDED_INDUSTRY 0x59 816 #define PRODUCT_EMBEDDED_E 0x5A 817 #define PRODUCT_EMBEDDED_INDUSTRY_E 0x5B 818 #define PRODUCT_EMBEDDED_INDUSTRY_A_E 0x5C 819 #define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x5F 820 #define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x60 821 #define PRODUCT_CORE_ARM 0x61 822 #define PRODUCT_CORE_N 0x62 823 #define PRODUCT_CORE_COUNTRYSPECIFIC 0x63 824 #define PRODUCT_CORE_SINGLELANGUAGE 0x64 825 #define PRODUCT_CORE_LANGUAGESPECIFIC 0x64 826 #define PRODUCT_CORE 0x65 827 #define PRODUCT_PROFESSIONAL_WMC 0x67 828 #define PRODUCT_MOBILE_CORE 0x68 829 #define PRODUCT_EMBEDDED_INDUSTRY_EVAL 0x69 830 #define PRODUCT_EMBEDDED_INDUSTRY_E_EVAL 0x6A 831 #define PRODUCT_EMBEDDED_EVAL 0x6B 832 #define PRODUCT_EMBEDDED_E_EVAL 0x6C 833 #define PRODUCT_NANO_SERVER 0x6D 834 #define PRODUCT_CLOUD_STORAGE_SERVER 0x6E 835 #define PRODUCT_CORE_CONNECTED 0x6F 836 #define PRODUCT_PROFESSIONAL_STUDENT 0x70 837 #define PRODUCT_CORE_CONNECTED_N 0x71 838 #define PRODUCT_PROFESSIONAL_STUDENT_N 0x72 839 #define PRODUCT_CORE_CONNECTED_SINGLELANGUAGE 0x73 840 #define PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC 0x74 841 #define PRODUCT_CONNECTED_CAR 0x75 842 #define PRODUCT_INDUSTRY_HANDHELD 0x76 843 #define PRODUCT_PPI_PRO 0x77 844 #define PRODUCT_ARM64_SERVER 0x78 845 #define PRODUCT_EDUCATION 0x79 846 #define PRODUCT_EDUCATION_N 0x7a 847 #define PRODUCT_IOTUAP 0x7B 848 #define PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER 0x7C 849 #define PRODUCT_ENTERPRISE_S 0x7D 850 #define PRODUCT_ENTERPRISE_S_N 0x7E 851 #define PRODUCT_PROFESSIONAL_S 0x7F 852 #define PRODUCT_PROFESSIONAL_S_N 0x80 853 #define PRODUCT_ENTERPRISE_S_EVALUATION 0x81 854 #define PRODUCT_ENTERPRISE_S_N_EVALUATION 0x82 855 #define PRODUCT_MOBILE_ENTERPRISE 0x85 856 857 #define PRODUCT_UNLICENSED 0xabcdabcd 858 859 #define LANG_NEUTRAL 0x00 860 #define LANG_INVARIANT 0x7f 861 862 #define LANG_AFRIKAANS 0x36 863 #define LANG_ALBANIAN 0x1c 864 #define LANG_ALSATIAN 0x84 865 #define LANG_AMHARIC 0x5e 866 #define LANG_ARABIC 0x01 867 #define LANG_ARMENIAN 0x2b 868 #define LANG_ASSAMESE 0x4d 869 #define LANG_AZERI 0x2c 870 #define LANG_AZERBAIJANI 0x2c 871 #define LANG_BANGLA 0x45 872 #define LANG_BASHKIR 0x6d 873 #define LANG_BASQUE 0x2d 874 #define LANG_BELARUSIAN 0x23 875 #define LANG_BENGALI 0x45 876 #define LANG_BRETON 0x7e 877 #define LANG_BOSNIAN 0x1a 878 #define LANG_BOSNIAN_NEUTRAL 0x781a 879 #define LANG_BULGARIAN 0x02 880 #define LANG_CATALAN 0x03 881 #define LANG_CENTRAL_KURDISH 0x92 882 #define LANG_CHEROKEE 0x5c 883 #define LANG_CHINESE 0x04 884 #define LANG_CHINESE_SIMPLIFIED 0x04 885 #define LANG_CHINESE_TRADITIONAL 0x7c04 886 #define LANG_CORSICAN 0x83 887 #define LANG_CROATIAN 0x1a 888 #define LANG_CZECH 0x05 889 #define LANG_DANISH 0x06 890 #define LANG_DARI 0x8c 891 #define LANG_DIVEHI 0x65 892 #define LANG_DUTCH 0x13 893 #define LANG_ENGLISH 0x09 894 #define LANG_ESTONIAN 0x25 895 #define LANG_FAEROESE 0x38 896 #define LANG_FARSI 0x29 897 #define LANG_FILIPINO 0x64 898 #define LANG_FINNISH 0x0b 899 #define LANG_FRENCH 0x0c 900 #define LANG_FRISIAN 0x62 901 #define LANG_FULAH 0x67 902 #define LANG_GALICIAN 0x56 903 #define LANG_GEORGIAN 0x37 904 #define LANG_GERMAN 0x07 905 #define LANG_GREEK 0x08 906 #define LANG_GREENLANDIC 0x6f 907 #define LANG_GUJARATI 0x47 908 #define LANG_HAUSA 0x68 909 #define LANG_HEBREW 0x0d 910 #define LANG_HINDI 0x39 911 #define LANG_HUNGARIAN 0x0e 912 #define LANG_ICELANDIC 0x0f 913 #define LANG_IGBO 0x70 914 #define LANG_INDONESIAN 0x21 915 #define LANG_INUKTITUT 0x5d 916 #define LANG_IRISH 0x3c 917 #define LANG_ITALIAN 0x10 918 #define LANG_JAPANESE 0x11 919 #define LANG_KANNADA 0x4b 920 #define LANG_KASHMIRI 0x60 921 #define LANG_KAZAK 0x3f 922 #define LANG_KHMER 0x53 923 #define LANG_KICHE 0x86 924 #define LANG_KINYARWANDA 0x87 925 #define LANG_KONKANI 0x57 926 #define LANG_KOREAN 0x12 927 #define LANG_KYRGYZ 0x40 928 #define LANG_LAO 0x54 929 #define LANG_LATVIAN 0x26 930 #define LANG_LITHUANIAN 0x27 931 #define LANG_LOWER_SORBIAN 0x2e 932 #define LANG_LUXEMBOURGISH 0x6e 933 #define LANG_MACEDONIAN 0x2f 934 #define LANG_MALAY 0x3e 935 #define LANG_MALAYALAM 0x4c 936 #define LANG_MALTESE 0x3a 937 #define LANG_MANIPURI 0x58 938 #define LANG_MAORI 0x81 939 #define LANG_MAPUDUNGUN 0x7a 940 #define LANG_MARATHI 0x4e 941 #define LANG_MOHAWK 0x7c 942 #define LANG_MONGOLIAN 0x50 943 #define LANG_NEPALI 0x61 944 #define LANG_NORWEGIAN 0x14 945 #define LANG_OCCITAN 0x82 946 #define LANG_ODIA 0x48 947 #define LANG_ORIYA 0x48 948 #define LANG_PASHTO 0x63 949 #define LANG_PERSIAN 0x29 950 #define LANG_POLISH 0x15 951 #define LANG_PORTUGUESE 0x16 952 #define LANG_PULAR 0x67 953 #define LANG_PUNJABI 0x46 954 #define LANG_QUECHUA 0x6b 955 #define LANG_ROMANIAN 0x18 956 #define LANG_ROMANSH 0x17 957 #define LANG_RUSSIAN 0x19 958 #define LANG_SAKHA 0x85 959 #define LANG_SAMI 0x3b 960 #define LANG_SANSKRIT 0x4f 961 #define LANG_SCOTTISH_GAELIC 0x91 962 #define LANG_SERBIAN 0x1a 963 #define LANG_SERBIAN_NEUTRAL 0x7c1a 964 #define LANG_SINDHI 0x59 965 #define LANG_SINHALESE 0x5b 966 #define LANG_SLOVAK 0x1b 967 #define LANG_SLOVENIAN 0x24 968 #define LANG_SOTHO 0x6c 969 #define LANG_SPANISH 0x0a 970 #define LANG_SWAHILI 0x41 971 #define LANG_SWEDISH 0x1d 972 #define LANG_SYRIAC 0x5a 973 #define LANG_TAJIK 0x28 974 #define LANG_TAMAZIGHT 0x5f 975 #define LANG_TAMIL 0x49 976 #define LANG_TATAR 0x44 977 #define LANG_TELUGU 0x4a 978 #define LANG_THAI 0x1e 979 #define LANG_TIBETAN 0x51 980 #define LANG_TIGRIGNA 0x73 981 #define LANG_TIGRINYA 0x73 982 #define LANG_TSWANA 0x32 983 #define LANG_TURKISH 0x1f 984 #define LANG_TURKMEN 0x42 985 #define LANG_UIGHUR 0x80 986 #define LANG_UKRAINIAN 0x22 987 #define LANG_UPPER_SORBIAN 0x2e 988 #define LANG_URDU 0x20 989 #define LANG_UZBEK 0x43 990 #define LANG_VALENCIAN 0x03 991 #define LANG_VIETNAMESE 0x2a 992 #define LANG_WELSH 0x52 993 #define LANG_WOLOF 0x88 994 #define LANG_XHOSA 0x34 995 #define LANG_YAKUT 0x85 996 #define LANG_YI 0x78 997 #define LANG_YORUBA 0x6a 998 #define LANG_ZULU 0x35 999 1000 #define SUBLANG_NEUTRAL 0x00 1001 #define SUBLANG_DEFAULT 0x01 1002 #define SUBLANG_SYS_DEFAULT 0x02 1003 #define SUBLANG_CUSTOM_DEFAULT 0x03 1004 #define SUBLANG_CUSTOM_UNSPECIFIED 0x04 1005 #define SUBLANG_UI_CUSTOM_DEFAULT 0x05 1006 1007 #define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01 1008 #define SUBLANG_ALBANIAN_ALBANIA 0x01 1009 #define SUBLANG_ALSATIAN_FRANCE 0x01 1010 #define SUBLANG_AMHARIC_ETHIOPIA 0x01 1011 #define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 1012 #define SUBLANG_ARABIC_IRAQ 0x02 1013 #define SUBLANG_ARABIC_EGYPT 0x03 1014 #define SUBLANG_ARABIC_LIBYA 0x04 1015 #define SUBLANG_ARABIC_ALGERIA 0x05 1016 #define SUBLANG_ARABIC_MOROCCO 0x06 1017 #define SUBLANG_ARABIC_TUNISIA 0x07 1018 #define SUBLANG_ARABIC_OMAN 0x08 1019 #define SUBLANG_ARABIC_YEMEN 0x09 1020 #define SUBLANG_ARABIC_SYRIA 0x0a 1021 #define SUBLANG_ARABIC_JORDAN 0x0b 1022 #define SUBLANG_ARABIC_LEBANON 0x0c 1023 #define SUBLANG_ARABIC_KUWAIT 0x0d 1024 #define SUBLANG_ARABIC_UAE 0x0e 1025 #define SUBLANG_ARABIC_BAHRAIN 0x0f 1026 #define SUBLANG_ARABIC_QATAR 0x10 1027 #define SUBLANG_ARMENIAN_ARMENIA 0x01 1028 #define SUBLANG_ASSAMESE_INDIA 0x01 1029 #define SUBLANG_AZERI_LATIN 0x01 1030 #define SUBLANG_AZERI_CYRILLIC 0x02 1031 #define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01 1032 #define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02 1033 #define SUBLANG_BANGLA_INDIA 0x01 1034 #define SUBLANG_BANGLA_BANGLADESH 0x02 1035 #define SUBLANG_BASHKIR_RUSSIA 0x01 1036 #define SUBLANG_BASQUE_BASQUE 0x01 1037 #define SUBLANG_BELARUSIAN_BELARUS 0x01 1038 #define SUBLANG_BENGALI_INDIA 0x01 1039 #define SUBLANG_BENGALI_BANGLADESH 0x02 1040 #define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05 1041 #define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08 1042 #define SUBLANG_BRETON_FRANCE 0x01 1043 #define SUBLANG_BULGARIAN_BULGARIA 0x01 1044 #define SUBLANG_CATALAN_CATALAN 0x01 1045 #define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01 1046 #define SUBLANG_CHEROKEE_CHEROKEE 0x01 1047 #define SUBLANG_CHINESE_TRADITIONAL 0x01 1048 #define SUBLANG_CHINESE_SIMPLIFIED 0x02 1049 #define SUBLANG_CHINESE_HONGKONG 0x03 1050 #define SUBLANG_CHINESE_SINGAPORE 0x04 1051 #define SUBLANG_CHINESE_MACAU 0x05 1052 #define SUBLANG_CORSICAN_FRANCE 0x01 1053 #define SUBLANG_CZECH_CZECH_REPUBLIC 0x01 1054 #define SUBLANG_CROATIAN_CROATIA 0x01 1055 #define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04 1056 #define SUBLANG_DANISH_DENMARK 0x01 1057 #define SUBLANG_DARI_AFGHANISTAN 0x01 1058 #define SUBLANG_DIVEHI_MALDIVES 0x01 1059 #define SUBLANG_DUTCH 0x01 1060 #define SUBLANG_DUTCH_BELGIAN 0x02 1061 #define SUBLANG_ENGLISH_US 0x01 1062 #define SUBLANG_ENGLISH_UK 0x02 1063 #define SUBLANG_ENGLISH_AUS 0x03 1064 #define SUBLANG_ENGLISH_CAN 0x04 1065 #define SUBLANG_ENGLISH_NZ 0x05 1066 #define SUBLANG_ENGLISH_IRELAND 0x06 1067 #define SUBLANG_ENGLISH_EIRE 0x06 1068 #define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 1069 #define SUBLANG_ENGLISH_JAMAICA 0x08 1070 #define SUBLANG_ENGLISH_CARIBBEAN 0x09 1071 #define SUBLANG_ENGLISH_BELIZE 0x0a 1072 #define SUBLANG_ENGLISH_TRINIDAD 0x0b 1073 #define SUBLANG_ENGLISH_ZIMBABWE 0x0c 1074 #define SUBLANG_ENGLISH_PHILIPPINES 0x0d 1075 #define SUBLANG_ENGLISH_INDIA 0x10 1076 #define SUBLANG_ENGLISH_MALAYSIA 0x11 1077 #define SUBLANG_ENGLISH_SINGAPORE 0x12 1078 #define SUBLANG_ESTONIAN_ESTONIA 0x01 1079 #define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01 1080 #define SUBLANG_FILIPINO_PHILIPPINES 0x01 1081 #define SUBLANG_FINNISH_FINLAND 0x01 1082 #define SUBLANG_FRENCH 0x01 1083 #define SUBLANG_FRENCH_BELGIAN 0x02 1084 #define SUBLANG_FRENCH_CANADIAN 0x03 1085 #define SUBLANG_FRENCH_SWISS 0x04 1086 #define SUBLANG_FRENCH_LUXEMBOURG 0x05 1087 #define SUBLANG_FRENCH_MONACO 0x06 1088 #define SUBLANG_FRISIAN_NETHERLANDS 0x01 1089 #define SUBLANG_FULAH_SENEGAL 0x02 1090 #define SUBLANG_GALICIAN_GALICIAN 0x01 1091 #define SUBLANG_GEORGIAN_GEORGIA 0x01 1092 #define SUBLANG_GERMAN 0x01 1093 #define SUBLANG_GERMAN_SWISS 0x02 1094 #define SUBLANG_GERMAN_AUSTRIAN 0x03 1095 #define SUBLANG_GERMAN_LUXEMBOURG 0x04 1096 #define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 1097 #define SUBLANG_GREEK_GREECE 0x01 1098 #define SUBLANG_GREENLANDIC_GREENLAND 0x01 1099 #define SUBLANG_GUJARATI_INDIA 0x01 1100 #define SUBLANG_HAUSA_NIGERIA_LATIN 0x01 1101 #define SUBLANG_HAUSA_NIGERIA SUBLANG_HAUSA_NIGERIA_LATIN /* SUBLANG_HAUSA_NIGERIA_LATIN is what MS defines */ 1102 #define SUBLANG_HAWAIIAN_US 0x01 1103 #define SUBLANG_HEBREW_ISRAEL 0x01 1104 #define SUBLANG_HINDI_INDIA 0x01 1105 #define SUBLANG_HUNGARIAN_HUNGARY 0x01 1106 #define SUBLANG_ICELANDIC_ICELAND 0x01 1107 #define SUBLANG_IGBO_NIGERIA 0x01 1108 #define SUBLANG_INDONESIAN_INDONESIA 0x01 1109 #define SUBLANG_INUKTITUT_CANADA 0x01 1110 #define SUBLANG_INUKTITUT_CANADA_LATIN 0x02 1111 #define SUBLANG_IRISH_IRELAND 0x02 1112 #define SUBLANG_ITALIAN 0x01 1113 #define SUBLANG_ITALIAN_SWISS 0x02 1114 #define SUBLANG_JAPANESE_JAPAN 0x01 1115 #define SUBLANG_KANNADA_INDIA 0x01 1116 #define SUBLANG_KASHMIRI_INDIA 0x02 1117 #define SUBLANG_KASHMIRI_SASIA 0x02 1118 #define SUBLANG_KAZAK_KAZAKHSTAN 0x01 1119 #define SUBLANG_KHMER_CAMBODIA 0x01 1120 #define SUBLANG_KICHE_GUATEMALA 0x01 1121 #define SUBLANG_KINYARWANDA_RWANDA 0x01 1122 #define SUBLANG_KONKANI_INDIA 0x01 1123 #define SUBLANG_KOREAN 0x01 1124 #define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01 1125 #define SUBLANG_LAO_LAO 0x01 1126 #define SUBLANG_LAO_LAO_PDR SUBLANG_LAO_LAO /* SUBLANG_LAO_LAO is what MS defines */ 1127 #define SUBLANG_LATVIAN_LATVIA 0x01 1128 #if (WINVER >= 0x0600) 1129 #define SUBLANG_LITHUANIAN_LITHUANIA 0x01 1130 #endif /* WINVER >= 0x0600 */ 1131 #define SUBLANG_LITHUANIAN 0x01 1132 #define SUBLANG_LOWER_SORBIAN_GERMANY 0x02 1133 #define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01 1134 #define SUBLANG_MACEDONIAN_MACEDONIA 0x01 1135 #define SUBLANG_MALAY_MALAYSIA 0x01 1136 #define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 1137 #define SUBLANG_MALAYALAM_INDIA 0x01 1138 #define SUBLANG_MALTESE_MALTA 0x01 1139 #define SUBLANG_MAORI_NEW_ZEALAND 0x01 1140 #define SUBLANG_MAPUDUNGUN_CHILE 0x01 1141 #define SUBLANG_MARATHI_INDIA 0x01 1142 #define SUBLANG_MOHAWK_MOHAWK 0x01 1143 #define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01 1144 #define SUBLANG_MONGOLIAN_PRC 0x02 1145 #define SUBLANG_NEPALI_NEPAL 0x01 1146 #define SUBLANG_NEPALI_INDIA 0x02 1147 #define SUBLANG_NORWEGIAN_BOKMAL 0x01 1148 #define SUBLANG_NORWEGIAN_NYNORSK 0x02 1149 #define SUBLANG_OCCITAN_FRANCE 0x01 1150 #define SUBLANG_ORIYA_INDIA 0x01 1151 #define SUBLANG_PASHTO_AFGHANISTAN 0x01 1152 #define SUBLANG_PERSIAN_IRAN 0x01 1153 #define SUBLANG_POLISH_POLAND 0x01 1154 #define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 1155 #if (WINVER >= 0x0600) 1156 #define SUBLANG_PORTUGUESE_PORTUGAL 0x02 1157 #endif /* WINVER >= 0x0600 */ 1158 #define SUBLANG_PORTUGUESE 0x02 1159 #define SUBLANG_PULAR_SENEGAL 0x02 1160 #define SUBLANG_PUNJABI_INDIA 0x01 1161 #define SUBLANG_PUNJABI_PAKISTAN 0x02 1162 #define SUBLANG_QUECHUA_BOLIVIA 0x01 1163 #define SUBLANG_QUECHUA_ECUADOR 0x02 1164 #define SUBLANG_QUECHUA_PERU 0x03 1165 #define SUBLANG_ROMANIAN_ROMANIA 0x01 1166 /* ??? #define SUBLANG_ROMANIAN_MOLDOVA 0x01 ??? */ 1167 #define SUBLANG_ROMANSH_SWITZERLAND 0x01 1168 #define SUBLANG_RUSSIAN_RUSSIA 0x01 1169 #define SUBLANG_SAKHA_RUSSIA 0x01 1170 #define SUBLANG_SAMI_NORTHERN_NORWAY 0x01 1171 #define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02 1172 #define SUBLANG_SAMI_NORTHERN_FINLAND 0x03 1173 #define SUBLANG_SAMI_LULE_NORWAY 0x04 1174 #define SUBLANG_SAMI_LULE_SWEDEN 0x05 1175 #define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06 1176 #define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07 1177 #define SUBLANG_SAMI_SKOLT_FINLAND 0x08 1178 #define SUBLANG_SAMI_INARI_FINLAND 0x09 1179 #define SUBLANG_SANSKRIT_INDIA 0x01 1180 #define SUBLANG_SCOTTISH_GAELIC 0x01 1181 #define SUBLANG_SERBIAN_LATIN 0x02 1182 #define SUBLANG_SERBIAN_CYRILLIC 0x03 1183 #define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06 1184 #define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07 1185 #define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0b 1186 #define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0c 1187 #define SUBLANG_SERBIAN_SERBIA_LATIN 0x09 1188 #define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0a 1189 #define SUBLANG_SINDHI_INDIA 0x01 1190 #define SUBLANG_SINDHI_AFGHANISTAN 0x02 1191 #define SUBLANG_SINDHI_PAKISTAN 0x02 1192 #define SUBLANG_SINHALESE_SRI_LANKA 0x01 1193 #define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01 1194 #define SUBLANG_SLOVAK_SLOVAKIA 0x01 1195 #define SUBLANG_SLOVENIAN_SLOVENIA 0x01 1196 #define SUBLANG_SPANISH 0x01 1197 #define SUBLANG_SPANISH_MEXICAN 0x02 1198 #define SUBLANG_SPANISH_MODERN 0x03 1199 #define SUBLANG_SPANISH_GUATEMALA 0x04 1200 #define SUBLANG_SPANISH_COSTA_RICA 0x05 1201 #define SUBLANG_SPANISH_PANAMA 0x06 1202 #define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 1203 #define SUBLANG_SPANISH_VENEZUELA 0x08 1204 #define SUBLANG_SPANISH_COLOMBIA 0x09 1205 #define SUBLANG_SPANISH_PERU 0x0a 1206 #define SUBLANG_SPANISH_ARGENTINA 0x0b 1207 #define SUBLANG_SPANISH_ECUADOR 0x0c 1208 #define SUBLANG_SPANISH_CHILE 0x0d 1209 #define SUBLANG_SPANISH_URUGUAY 0x0e 1210 #define SUBLANG_SPANISH_PARAGUAY 0x0f 1211 #define SUBLANG_SPANISH_BOLIVIA 0x10 1212 #define SUBLANG_SPANISH_EL_SALVADOR 0x11 1213 #define SUBLANG_SPANISH_HONDURAS 0x12 1214 #define SUBLANG_SPANISH_NICARAGUA 0x13 1215 #define SUBLANG_SPANISH_PUERTO_RICO 0x14 1216 #define SUBLANG_SPANISH_US 0x15 1217 #define SUBLANG_SWAHILI_KENYA 0x01 1218 #if (WINVER >= 0x0600) 1219 #define SUBLANG_SWEDISH_SWEDEN 0x01 1220 #endif /* WINVER >= 0x0600 */ 1221 #define SUBLANG_SWEDISH 0x01 1222 #define SUBLANG_SWEDISH_FINLAND 0x02 1223 #define SUBLANG_SYRIAC 0x01 1224 #define SUBLANG_SYRIAC_SYRIA SUBLANG_SYRIAC /* SUBLANG_SYRIAC_SYRIA is what MSDN mentions */ 1225 #define SUBLANG_TAJIK_TAJIKISTAN 0x01 1226 #define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 1227 #define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04 1228 #define SUBLANG_TAMIL_INDIA 0x01 1229 #define SUBLANG_TAMIL_SRI_LANKA 0x02 1230 #define SUBLANG_TATAR_RUSSIA 0x01 1231 #define SUBLANG_TELUGU_INDIA 0x01 1232 #define SUBLANG_THAI_THAILAND 0x01 1233 #define SUBLANG_TIBETAN_PRC 0x01 1234 #define SUBLANG_TIBETAN_BHUTAN 0x02 1235 #define SUBLANG_TIGRIGNA_ERITREA 0x02 1236 #define SUBLANG_TIGRINYA_ERITREA 0x02 1237 #define SUBLANG_TIGRINYA_ETHIOPIA 0x01 1238 #define SUBLANG_TSWANA_BOTSWANA 0x02 1239 #define SUBLANG_TSWANA_SOUTH_AFRICA 0x01 1240 #define SUBLANG_TURKISH_TURKEY 0x01 1241 #define SUBLANG_TURKMEN_TURKMENISTAN 0x01 1242 #define SUBLANG_UIGHUR_PRC 0x01 1243 #define SUBLANG_UKRAINIAN_UKRAINE 0x01 1244 #define SUBLANG_UPPER_SORBIAN_GERMANY 0x01 1245 #define SUBLANG_URDU_PAKISTAN 0x01 1246 #define SUBLANG_URDU_INDIA 0x02 1247 #define SUBLANG_UZBEK_LATIN 0x01 1248 #define SUBLANG_UZBEK_CYRILLIC 0x02 1249 #define SUBLANG_VALENCIAN_VALENCIA 0x02 1250 #define SUBLANG_VIETNAMESE_VIETNAM 0x01 1251 #define SUBLANG_WELSH_UNITED_KINGDOM 0x01 1252 #define SUBLANG_WOLOF_SENEGAL 0x01 1253 #define SUBLANG_YORUBA_NIGERIA 0x01 1254 #define SUBLANG_XHOSA_SOUTH_AFRICA 0x01 1255 #define SUBLANG_YAKUT_RUSSIA 0x01 1256 #define SUBLANG_YI_PRC 0x01 1257 #define SUBLANG_ZULU_SOUTH_AFRICA 0x01 1258 1259 #define SORT_DEFAULT 0x0 1260 #define SORT_INVARIANT_MATH 0x1 1261 1262 #define SORT_JAPANESE_XJIS 0x0 1263 #define SORT_JAPANESE_UNICODE 0x1 1264 #define SORT_JAPANESE_RADICALSTROKE 0x4 1265 1266 #define SORT_CHINESE_BIG5 0x0 1267 #define SORT_CHINESE_PRCP 0x0 1268 #define SORT_CHINESE_UNICODE 0x1 1269 #define SORT_CHINESE_PRC 0x2 1270 #define SORT_CHINESE_BOPOMOFO 0x3 1271 #define SORT_CHINESE_RADICALSTROKE 0x4 1272 1273 #define SORT_KOREAN_KSC 0x0 1274 #define SORT_KOREAN_UNICODE 0x1 1275 1276 #define SORT_GERMAN_PHONE_BOOK 0x1 1277 1278 #define SORT_HUNGARIAN_DEFAULT 0x0 1279 #define SORT_HUNGARIAN_TECHNICAL 0x1 1280 1281 #define SORT_GEORGIAN_TRADITIONAL 0x0 1282 #define SORT_GEORGIAN_MODERN 0x1 1283 1284 #define MAKELANGID(p,s) ((((WORD)(s)) << 10) | (WORD)(p)) 1285 #define PRIMARYLANGID(lgid) ((WORD)(lgid) & 0x3ff) 1286 #define SUBLANGID(lgid) ((WORD)(lgid) >> 10) 1287 1288 #define NLS_VALID_LOCALE_MASK 0x000fffff 1289 1290 #define MAKELCID(lgid,srtid) ((DWORD)((((DWORD)((WORD)(srtid))) << 16) | ((DWORD)((WORD)(lgid))))) 1291 #define MAKESORTLCID(lgid,srtid,ver) ((DWORD)((MAKELCID(lgid,srtid)) | (((DWORD)((WORD)(ver))) << 20))) 1292 #define LANGIDFROMLCID(lcid) ((WORD)(lcid)) 1293 #define SORTIDFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 16) & 0xf)) 1294 #define SORTVERSIONFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 20) & 0xf)) 1295 1296 #define LOCALE_NAME_MAX_LENGTH 85 1297 #define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)) 1298 #define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)) 1299 1300 #define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT,SORT_DEFAULT)) 1301 #define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT,SORT_DEFAULT)) 1302 1303 #define LOCALE_NEUTRAL (MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)) 1304 1305 #define LOCALE_CUSTOM_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT)) 1306 #define LOCALE_CUSTOM_UNSPECIFIED (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT)) 1307 #define LOCALE_CUSTOM_UI_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT)) 1308 1309 #define LOCALE_INVARIANT (MAKELCID(MAKELANGID(LANG_INVARIANT,SUBLANG_NEUTRAL),SORT_DEFAULT)) 1310 1311 #define UNREFERENCED_PARAMETER(P) {(P) = (P);} 1312 #define UNREFERENCED_LOCAL_VARIABLE(V) {(V) = (V);} 1313 #define DBG_UNREFERENCED_PARAMETER(P) (P) 1314 #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V) 1315 1316 #define DEFAULT_UNREACHABLE 1317 1318 #ifndef UMDF_USING_NTSTATUS 1319 #ifndef WIN32_NO_STATUS 1320 #define STATUS_WAIT_0 ((DWORD)0x00000000) 1321 #define STATUS_ABANDONED_WAIT_0 ((DWORD)0x00000080) 1322 #define STATUS_USER_APC ((DWORD)0x000000C0) 1323 #define STATUS_TIMEOUT ((DWORD)0x00000102) 1324 #define STATUS_PENDING ((DWORD)0x00000103) 1325 #define DBG_EXCEPTION_HANDLED ((DWORD)0x00010001) 1326 #define DBG_CONTINUE ((DWORD)0x00010002) 1327 #define STATUS_SEGMENT_NOTIFICATION ((DWORD)0x40000005) 1328 #define STATUS_FATAL_APP_EXIT ((DWORD)0x40000015) 1329 #define DBG_TERMINATE_THREAD ((DWORD)0x40010003) 1330 #define DBG_TERMINATE_PROCESS ((DWORD)0x40010004) 1331 #define DBG_CONTROL_C ((DWORD)0x40010005) 1332 #define DBG_PRINTEXCEPTION_C ((DWORD)0x40010006) 1333 #define DBG_RIPEXCEPTION ((DWORD)0x40010007) 1334 #define DBG_CONTROL_BREAK ((DWORD)0x40010008) 1335 #define DBG_COMMAND_EXCEPTION ((DWORD)0x40010009) 1336 #define DBG_PRINTEXCEPTION_WIDE_C ((DWORD)0x4001000A) 1337 #define STATUS_GUARD_PAGE_VIOLATION ((DWORD)0x80000001) 1338 #define STATUS_DATATYPE_MISALIGNMENT ((DWORD)0x80000002) 1339 #define STATUS_BREAKPOINT ((DWORD)0x80000003) 1340 #define STATUS_SINGLE_STEP ((DWORD)0x80000004) 1341 #define STATUS_LONGJUMP ((DWORD)0x80000026) 1342 #define STATUS_UNWIND_CONSOLIDATE ((DWORD)0x80000029) 1343 #define DBG_EXCEPTION_NOT_HANDLED ((DWORD)0x80010001) 1344 #define STATUS_ACCESS_VIOLATION ((DWORD)0xC0000005) 1345 #define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006) 1346 #define STATUS_INVALID_HANDLE ((DWORD)0xC0000008) 1347 #define STATUS_INVALID_PARAMETER ((DWORD)0xC000000D) 1348 #define STATUS_NO_MEMORY ((DWORD)0xC0000017) 1349 #define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001D) 1350 #define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD)0xC0000025) 1351 #define STATUS_INVALID_DISPOSITION ((DWORD)0xC0000026) 1352 #define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008C) 1353 #define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008D) 1354 #define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008E) 1355 #define STATUS_FLOAT_INEXACT_RESULT ((DWORD)0xC000008F) 1356 #define STATUS_FLOAT_INVALID_OPERATION ((DWORD)0xC0000090) 1357 #define STATUS_FLOAT_OVERFLOW ((DWORD)0xC0000091) 1358 #define STATUS_FLOAT_STACK_CHECK ((DWORD)0xC0000092) 1359 #define STATUS_FLOAT_UNDERFLOW ((DWORD)0xC0000093) 1360 #define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD)0xC0000094) 1361 #define STATUS_INTEGER_OVERFLOW ((DWORD)0xC0000095) 1362 #define STATUS_PRIVILEGED_INSTRUCTION ((DWORD)0xC0000096) 1363 #define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FD) 1364 #define STATUS_DLL_NOT_FOUND ((DWORD)0xC0000135) 1365 #define STATUS_ORDINAL_NOT_FOUND ((DWORD)0xC0000138) 1366 #define STATUS_ENTRYPOINT_NOT_FOUND ((DWORD)0xC0000139) 1367 #define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013A) 1368 #define STATUS_DLL_INIT_FAILED ((DWORD)0xC0000142) 1369 #define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD)0xC00002B4) 1370 #define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD)0xC00002B5) 1371 #define STATUS_REG_NAT_CONSUMPTION ((DWORD)0xC00002C9) 1372 #define STATUS_STACK_BUFFER_OVERRUN ((DWORD)0xC0000409) 1373 #define STATUS_INVALID_CRUNTIME_PARAMETER ((DWORD)0xC0000417) 1374 #define STATUS_ASSERTION_FAILURE ((DWORD)0xC0000420) 1375 #define STATUS_SXS_EARLY_DEACTIVATION ((DWORD)0xC015000F) 1376 #define STATUS_SXS_INVALID_DEACTIVATION ((DWORD)0xC0150010) 1377 #endif 1378 #endif 1379 1380 #define MAXIMUM_WAIT_OBJECTS 64 1381 #define MAXIMUM_SUSPEND_COUNT MAXCHAR 1382 1383 typedef ULONG_PTR KSPIN_LOCK; 1384 typedef KSPIN_LOCK *PKSPIN_LOCK; 1385 1386 typedef struct DECLSPEC_ALIGN (16) _M128A { 1387 ULONGLONG Low; 1388 LONGLONG High; 1389 } M128A,*PM128A; 1390 1391 typedef struct DECLSPEC_ALIGN (16) _XSAVE_FORMAT { 1392 WORD ControlWord; 1393 WORD StatusWord; 1394 BYTE TagWord; 1395 BYTE Reserved1; 1396 WORD ErrorOpcode; 1397 DWORD ErrorOffset; 1398 WORD ErrorSelector; 1399 WORD Reserved2; 1400 DWORD DataOffset; 1401 WORD DataSelector; 1402 WORD Reserved3; 1403 DWORD MxCsr; 1404 DWORD MxCsr_Mask; 1405 M128A FloatRegisters[8]; 1406 #ifdef _WIN64 1407 M128A XmmRegisters[16]; 1408 BYTE Reserved4[96]; 1409 #else 1410 M128A XmmRegisters[8]; 1411 BYTE Reserved4[220]; 1412 DWORD Cr0NpxState; 1413 #endif 1414 } XSAVE_FORMAT,*PXSAVE_FORMAT; 1415 1416 typedef struct DECLSPEC_ALIGN (8) _XSAVE_AREA_HEADER { 1417 DWORD64 Mask; 1418 DWORD64 Reserved[7]; 1419 } XSAVE_AREA_HEADER,*PXSAVE_AREA_HEADER; 1420 1421 typedef struct DECLSPEC_ALIGN (16) _XSAVE_AREA { 1422 XSAVE_FORMAT LegacyState; 1423 XSAVE_AREA_HEADER Header; 1424 } XSAVE_AREA,*PXSAVE_AREA; 1425 1426 typedef struct _XSTATE_CONTEXT { 1427 DWORD64 Mask; 1428 DWORD Length; 1429 DWORD Reserved1; 1430 PXSAVE_AREA Area; 1431 #if defined (__i386__) 1432 DWORD Reserved2; 1433 #endif 1434 PVOID Buffer; 1435 #if defined (__i386__) 1436 DWORD Reserved3; 1437 #endif 1438 } XSTATE_CONTEXT,*PXSTATE_CONTEXT; 1439 1440 typedef struct _SCOPE_TABLE_AMD64 { 1441 DWORD Count; 1442 struct { 1443 DWORD BeginAddress; 1444 DWORD EndAddress; 1445 DWORD HandlerAddress; 1446 DWORD JumpTarget; 1447 } ScopeRecord[1]; 1448 } SCOPE_TABLE_AMD64,*PSCOPE_TABLE_AMD64; 1449 1450 #ifdef _AMD64_ 1451 1452 #if defined(__x86_64) && !defined(RC_INVOKED) 1453 1454 #ifdef __cplusplus 1455 extern "C" { 1456 #endif 1457 1458 #define BitTest _bittest 1459 #define BitTestAndComplement _bittestandcomplement 1460 #define BitTestAndSet _bittestandset 1461 #define BitTestAndReset _bittestandreset 1462 #define BitTest64 _bittest64 1463 #define BitTestAndComplement64 _bittestandcomplement64 1464 #define BitTestAndSet64 _bittestandset64 1465 #define BitTestAndReset64 _bittestandreset64 1466 1467 /* BOOLEAN _bittest(LONG const *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */ 1468 /* BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */ 1469 /* BOOLEAN _bittestandset(LONG *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */ 1470 /* BOOLEAN _bittestandreset(LONG *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */ 1471 /* BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */ 1472 /* BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */ 1473 /* BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */ 1474 /* BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */ 1475 1476 #define BitScanForward _BitScanForward 1477 #define BitScanReverse _BitScanReverse 1478 #define BitScanForward64 _BitScanForward64 1479 #define BitScanReverse64 _BitScanReverse64 1480 1481 /* BOOLEAN _BitScanForward(DWORD *Index,DWORD Mask); moved to psdk_inc/intrin-impl.h */ 1482 /* BOOLEAN _BitScanReverse(DWORD *Index,DWORD Mask); moved to psdk_inc/intrin-impl.h */ 1483 /* BOOLEAN _BitScanForward64(DWORD *Index,DWORD64 Mask); moved to psdk_inc/intrin-impl.h */ 1484 /* BOOLEAN _BitScanReverse64(DWORD *Index,DWORD64 Mask); moved to psdk_inc/intrin-impl.h */ 1485 1486 #define InterlockedIncrement16 _InterlockedIncrement16 1487 #define InterlockedDecrement16 _InterlockedDecrement16 1488 #define InterlockedCompareExchange16 _InterlockedCompareExchange16 1489 1490 #define InterlockedAnd _InterlockedAnd 1491 #define InterlockedOr _InterlockedOr 1492 #define InterlockedXor _InterlockedXor 1493 #define InterlockedIncrement _InterlockedIncrement 1494 #define InterlockedIncrementAcquire InterlockedIncrement 1495 #define InterlockedIncrementRelease InterlockedIncrement 1496 #define InterlockedDecrement _InterlockedDecrement 1497 #define InterlockedDecrementAcquire InterlockedDecrement 1498 #define InterlockedDecrementRelease InterlockedDecrement 1499 #define InterlockedAdd _InterlockedAdd 1500 #define InterlockedExchange _InterlockedExchange 1501 #define InterlockedExchangeAdd _InterlockedExchangeAdd 1502 #define InterlockedCompareExchange _InterlockedCompareExchange 1503 #define InterlockedCompareExchangeAcquire InterlockedCompareExchange 1504 #define InterlockedCompareExchangeRelease InterlockedCompareExchange 1505 1506 #define InterlockedAnd64 _InterlockedAnd64 1507 #define InterlockedAndAffinity InterlockedAnd64 1508 #define InterlockedOr64 _InterlockedOr64 1509 #define InterlockedOrAffinity InterlockedOr64 1510 #define InterlockedXor64 _InterlockedXor64 1511 #define InterlockedIncrement64 _InterlockedIncrement64 1512 #define InterlockedDecrement64 _InterlockedDecrement64 1513 #define InterlockedAdd64 _InterlockedAdd64 1514 #define InterlockedExchange64 _InterlockedExchange64 1515 #define InterlockedExchangeAcquire64 InterlockedExchange64 1516 #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 1517 #define InterlockedCompareExchange64 _InterlockedCompareExchange64 1518 #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 1519 #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 1520 1521 #define InterlockedExchangePointer _InterlockedExchangePointer 1522 #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer 1523 #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer 1524 #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer 1525 1526 #define InterlockedExchangeAddSizeT(a,b) InterlockedExchangeAdd64((LONG64 *)a,b) 1527 #define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a) 1528 #define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a) 1529 1530 /* SHORT InterlockedIncrement16(SHORT volatile *Addend); moved to psdk_inc/intrin-impl.h */ 1531 /* SHORT InterlockedDecrement16(SHORT volatile *Addend); moved to psdk_inc/intrin-impl.h */ 1532 /* SHORT InterlockedCompareExchange16(SHORT volatile *Destination,SHORT ExChange,SHORT Comperand); moved to psdk_inc/intrin-impl.h */ 1533 /* LONG InterlockedIncrement(LONG volatile *Addend); moved to psdk_inc/intrin-impl.h */ 1534 /* LONG InterlockedDecrement(LONG volatile *Addend); moved to psdk_inc/intrin-impl.h */ 1535 /* LONG InterlockedExchange(LONG volatile *Target,LONG Value); moved to psdk_inc/intrin-impl.h */ 1536 1537 /* LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value); moved to psdk_inc/intrin-impl.h */ 1538 /* LONG InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand); moved to psdk_inc/intrin-impl.h */ 1539 /* LONG InterlockedAdd(LONG volatile *Addend,LONG Value); moved to psdk_inc/intrin-impl.h */ 1540 /* LONG64 InterlockedIncrement64(LONG64 volatile *Addend); moved to psdk_inc/intrin-impl.h */ 1541 /* LONG64 InterlockedDecrement64(LONG64 volatile *Addend); moved to psdk_inc/intrin-impl.h */ 1542 /* LONG64 InterlockedExchange64(LONG64 volatile *Target,LONG64 Value); moved to psdk_inc/intrin-impl.h */ 1543 /* LONG64 InterlockedExchangeAdd64(LONG64 volatile *Addend,LONG64 Value); moved to psdk_inc/intrin-impl.h */ 1544 /* LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value); moved to psdk_inc/intrin-impl.h */ 1545 /* LONG64 InterlockedCompareExchange64(LONG64 volatile *Destination,LONG64 ExChange,LONG64 Comperand); moved to psdk_inc/intrin-impl.h */ 1546 /* PVOID InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand); moved to psdk_inc/intrin-impl.h */ 1547 /* PVOID InterlockedExchangePointer(PVOID volatile *Target,PVOID Value); moved to psdk_inc/intrin-impl.h */ 1548 1549 #define CacheLineFlush(Address) _mm_clflush(Address) 1550 1551 # if defined(__cplusplus) 1552 extern "C" { 1553 # endif 1554 # include <x86intrin.h> 1555 # if defined(__cplusplus) 1556 } 1557 # endif 1558 #include <emmintrin.h> 1559 1560 #define FastFence __faststorefence 1561 #define LoadFence _mm_lfence 1562 #define MemoryFence _mm_mfence 1563 #define StoreFence _mm_sfence 1564 1565 #define YieldProcessor _mm_pause 1566 #define MemoryBarrier _mm_mfence 1567 #define PreFetchCacheLine(l,a) _mm_prefetch((CHAR CONST *) a,l) 1568 #define PrefetchForWrite(p) _m_prefetchw(p) 1569 #define ReadForWriteAccess(p) (_m_prefetchw(p),*(p)) 1570 1571 #define PF_TEMPORAL_LEVEL_1 _MM_HINT_T0 1572 #define PF_TEMPORAL_LEVEL_2 _MM_HINT_T1 1573 #define PF_TEMPORAL_LEVEL_3 _MM_HINT_T2 1574 #define PF_NON_TEMPORAL_LEVEL_ALL _MM_HINT_NTA 1575 1576 #define ReadMxCsr _mm_getcsr 1577 #define WriteMxCsr _mm_setcsr 1578 1579 #define DbgRaiseAssertionFailure __int2c 1580 #define GetCallersEflags() __getcallerseflags() 1581 1582 unsigned __int32 __getcallerseflags(VOID); 1583 1584 #define GetSegmentLimit __segmentlimit 1585 1586 DWORD __segmentlimit(DWORD Selector); 1587 1588 #define ReadTimeStampCounter() __rdtsc() 1589 1590 /* VOID __movsb(PBYTE Destination,BYTE const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */ 1591 /* VOID __movsw(PWORD Destination,WORD const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */ 1592 /* VOID __movsd(PDWORD Destination,DWORD const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */ 1593 /* VOID __movsq(PDWORD64 Destination,DWORD64 const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */ 1594 1595 #define MultiplyHigh __mulh 1596 #define UnsignedMultiplyHigh __umulh 1597 1598 LONGLONG MultiplyHigh(LONGLONG Multiplier,LONGLONG Multiplicand); 1599 ULONGLONG UnsignedMultiplyHigh(ULONGLONG Multiplier,ULONGLONG Multiplicand); 1600 1601 #define ShiftLeft128 __shiftleft128 1602 #define ShiftRight128 __shiftright128 1603 1604 DWORD64 ShiftLeft128(DWORD64 LowPart,DWORD64 HighPart,BYTE Shift); 1605 DWORD64 ShiftRight128(DWORD64 LowPart,DWORD64 HighPart,BYTE Shift); 1606 1607 #define Multiply128 _mul128 1608 1609 LONG64 Multiply128(LONG64 Multiplier,LONG64 Multiplicand,LONG64 *HighProduct); 1610 1611 #define UnsignedMultiply128 _umul128 1612 1613 DWORD64 UnsignedMultiply128(DWORD64 Multiplier,DWORD64 Multiplicand,DWORD64 *HighProduct); 1614 1615 LONG64 MultiplyExtract128(LONG64 Multiplier,LONG64 Multiplicand,BYTE Shift); 1616 DWORD64 UnsignedMultiplyExtract128(DWORD64 Multiplier,DWORD64 Multiplicand,BYTE Shift); 1617 1618 #ifndef __CRT__NO_INLINE MultiplyExtract128(LONG64 Multiplier,LONG64 Multiplicand,BYTE Shift)1619 __CRT_INLINE LONG64 MultiplyExtract128(LONG64 Multiplier,LONG64 Multiplicand,BYTE Shift) { 1620 LONG64 extractedProduct; 1621 LONG64 highProduct; 1622 LONG64 lowProduct; 1623 lowProduct = Multiply128(Multiplier,Multiplicand,&highProduct); 1624 extractedProduct = (LONG64)ShiftRight128((LONG64)lowProduct,(LONG64)highProduct,Shift); 1625 return extractedProduct; 1626 } 1627 UnsignedMultiplyExtract128(DWORD64 Multiplier,DWORD64 Multiplicand,BYTE Shift)1628 __CRT_INLINE DWORD64 UnsignedMultiplyExtract128(DWORD64 Multiplier,DWORD64 Multiplicand,BYTE Shift) { 1629 DWORD64 extractedProduct; 1630 DWORD64 highProduct; 1631 DWORD64 lowProduct; 1632 lowProduct = UnsignedMultiply128(Multiplier,Multiplicand,&highProduct); 1633 extractedProduct = ShiftRight128(lowProduct,highProduct,Shift); 1634 return extractedProduct; 1635 } 1636 #endif 1637 1638 /* unsigned char __readgsbyte(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */ 1639 /* unsigned short __readgsword(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */ 1640 /* unsigned __LONG32 __readgsdword(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */ 1641 /* __MINGW_EXTENSION unsigned __int64 __readgsqword(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */ 1642 1643 /* void __writegsbyte(unsigned __LONG32 Offset,unsigned char Data); moved to psdk_inc/intrin-impl.h */ 1644 /* void __writegsword(unsigned __LONG32 Offset,unsigned short Data); moved to psdk_inc/intrin-impl.h */ 1645 /* void __writegsdword(unsigned __LONG32 Offset,unsigned __LONG32 Data); moved to psdk_inc/intrin-impl.h */ 1646 1647 #ifdef __cplusplus 1648 } 1649 #endif 1650 #endif /* defined(__x86_64) && !defined(RC_INVOKED) */ 1651 1652 #define EXCEPTION_READ_FAULT 0 1653 #define EXCEPTION_WRITE_FAULT 1 1654 #define EXCEPTION_EXECUTE_FAULT 8 1655 1656 #if !defined(RC_INVOKED) 1657 1658 #define CONTEXT_AMD64 0x100000 1659 1660 #define CONTEXT_CONTROL (CONTEXT_AMD64 | __MSABI_LONG(0x1)) 1661 #define CONTEXT_INTEGER (CONTEXT_AMD64 | __MSABI_LONG(0x2)) 1662 #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | __MSABI_LONG(0x4)) 1663 #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | __MSABI_LONG(0x8)) 1664 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | __MSABI_LONG(0x10)) 1665 1666 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) 1667 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) 1668 1669 #define CONTEXT_EXCEPTION_ACTIVE 0x8000000 1670 #define CONTEXT_SERVICE_ACTIVE 0x10000000 1671 #define CONTEXT_EXCEPTION_REQUEST 0x40000000 1672 #define CONTEXT_EXCEPTION_REPORTING 0x80000000 1673 #endif /* !defined(RC_INVOKED) */ 1674 1675 #define INITIAL_MXCSR 0x1f80 1676 #define INITIAL_FPCSR 0x027f 1677 1678 typedef struct _XMM_SAVE_AREA32 { 1679 WORD ControlWord; 1680 WORD StatusWord; 1681 BYTE TagWord; 1682 BYTE Reserved1; 1683 WORD ErrorOpcode; 1684 DWORD ErrorOffset; 1685 WORD ErrorSelector; 1686 WORD Reserved2; 1687 DWORD DataOffset; 1688 WORD DataSelector; 1689 WORD Reserved3; 1690 DWORD MxCsr; 1691 DWORD MxCsr_Mask; 1692 M128A FloatRegisters[8]; 1693 M128A XmmRegisters[16]; 1694 BYTE Reserved4[96]; 1695 } XMM_SAVE_AREA32,*PXMM_SAVE_AREA32; 1696 1697 #define LEGACY_SAVE_AREA_LENGTH sizeof(XMM_SAVE_AREA32) 1698 1699 typedef struct DECLSPEC_ALIGN(16) _CONTEXT { 1700 DWORD64 P1Home; 1701 DWORD64 P2Home; 1702 DWORD64 P3Home; 1703 DWORD64 P4Home; 1704 DWORD64 P5Home; 1705 DWORD64 P6Home; 1706 DWORD ContextFlags; 1707 DWORD MxCsr; 1708 WORD SegCs; 1709 WORD SegDs; 1710 WORD SegEs; 1711 WORD SegFs; 1712 WORD SegGs; 1713 WORD SegSs; 1714 DWORD EFlags; 1715 DWORD64 Dr0; 1716 DWORD64 Dr1; 1717 DWORD64 Dr2; 1718 DWORD64 Dr3; 1719 DWORD64 Dr6; 1720 DWORD64 Dr7; 1721 DWORD64 Rax; 1722 DWORD64 Rcx; 1723 DWORD64 Rdx; 1724 DWORD64 Rbx; 1725 DWORD64 Rsp; 1726 DWORD64 Rbp; 1727 DWORD64 Rsi; 1728 DWORD64 Rdi; 1729 DWORD64 R8; 1730 DWORD64 R9; 1731 DWORD64 R10; 1732 DWORD64 R11; 1733 DWORD64 R12; 1734 DWORD64 R13; 1735 DWORD64 R14; 1736 DWORD64 R15; 1737 DWORD64 Rip; 1738 __C89_NAMELESS union { 1739 XMM_SAVE_AREA32 FltSave; 1740 XMM_SAVE_AREA32 FloatSave; 1741 __C89_NAMELESS struct { 1742 M128A Header[2]; 1743 M128A Legacy[8]; 1744 M128A Xmm0; 1745 M128A Xmm1; 1746 M128A Xmm2; 1747 M128A Xmm3; 1748 M128A Xmm4; 1749 M128A Xmm5; 1750 M128A Xmm6; 1751 M128A Xmm7; 1752 M128A Xmm8; 1753 M128A Xmm9; 1754 M128A Xmm10; 1755 M128A Xmm11; 1756 M128A Xmm12; 1757 M128A Xmm13; 1758 M128A Xmm14; 1759 M128A Xmm15; 1760 }; 1761 }; 1762 M128A VectorRegister[26]; 1763 DWORD64 VectorControl; 1764 DWORD64 DebugControl; 1765 DWORD64 LastBranchToRip; 1766 DWORD64 LastBranchFromRip; 1767 DWORD64 LastExceptionToRip; 1768 DWORD64 LastExceptionFromRip; 1769 } CONTEXT,*PCONTEXT; 1770 1771 #define RUNTIME_FUNCTION_INDIRECT 0x1 1772 1773 typedef struct _RUNTIME_FUNCTION { 1774 DWORD BeginAddress; 1775 DWORD EndAddress; 1776 DWORD UnwindData; 1777 } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION; 1778 1779 typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context); 1780 typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions); 1781 1782 #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" 1783 1784 #define UNW_FLAG_NHANDLER 0x0 1785 #define UNW_FLAG_EHANDLER 0x1 1786 #define UNW_FLAG_UHANDLER 0x2 1787 #define UNW_FLAG_CHAININFO 0x4 1788 1789 #endif /* end of _AMD64_ */ 1790 1791 1792 #ifdef _ARM_ 1793 1794 #if defined(__arm__) && !defined(RC_INVOKED) 1795 1796 #ifdef __cplusplus 1797 extern "C" { 1798 #endif 1799 1800 #define BitTest _bittest 1801 #define BitTestAndComplement _bittestandcomplement 1802 #define BitTestAndSet _bittestandset 1803 #define BitTestAndReset _bittestandreset 1804 1805 #define BitScanForward _BitScanForward 1806 #define BitScanReverse _BitScanReverse 1807 1808 #define InterlockedIncrement16 _InterlockedIncrement16 1809 #define InterlockedDecrement16 _InterlockedDecrement16 1810 #define InterlockedCompareExchange16 _InterlockedCompareExchange16 1811 1812 #define InterlockedAnd _InterlockedAnd 1813 #define InterlockedOr _InterlockedOr 1814 #define InterlockedXor _InterlockedXor 1815 #define InterlockedIncrement _InterlockedIncrement 1816 #define InterlockedIncrementAcquire InterlockedIncrement 1817 #define InterlockedIncrementRelease InterlockedIncrement 1818 #define InterlockedDecrement _InterlockedDecrement 1819 #define InterlockedDecrementAcquire InterlockedDecrement 1820 #define InterlockedDecrementRelease InterlockedDecrement 1821 #define InterlockedAdd _InterlockedAdd 1822 #define InterlockedExchange _InterlockedExchange 1823 #define InterlockedExchangeAdd _InterlockedExchangeAdd 1824 #define InterlockedCompareExchange _InterlockedCompareExchange 1825 #define InterlockedCompareExchangeAcquire InterlockedCompareExchange 1826 #define InterlockedCompareExchangeRelease InterlockedCompareExchange 1827 1828 #define InterlockedAnd64 _InterlockedAnd64 1829 #define InterlockedAndAffinity InterlockedAnd64 1830 #define InterlockedOr64 _InterlockedOr64 1831 #define InterlockedOrAffinity InterlockedOr64 1832 #define InterlockedXor64 _InterlockedXor64 1833 #define InterlockedIncrement64 _InterlockedIncrement64 1834 #define InterlockedDecrement64 _InterlockedDecrement64 1835 #define InterlockedAdd64 _InterlockedAdd64 1836 #define InterlockedExchange64 _InterlockedExchange64 1837 #define InterlockedExchangeAcquire64 InterlockedExchange64 1838 #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 1839 #define InterlockedCompareExchange64 _InterlockedCompareExchange64 1840 #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 1841 #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 1842 1843 #define InterlockedExchangePointer _InterlockedExchangePointer 1844 #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer 1845 #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer 1846 #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer 1847 1848 #ifdef __cplusplus 1849 } 1850 #endif 1851 #endif /* defined(__arm__) && !defined(RC_INVOKED) */ 1852 1853 #define EXCEPTION_READ_FAULT 0 1854 #define EXCEPTION_WRITE_FAULT 1 1855 #define EXCEPTION_EXECUTE_FAULT 8 1856 1857 #if !defined(RC_INVOKED) 1858 1859 #define CONTEXT_ARM 0x0200000 1860 1861 #define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001) 1862 #define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002) 1863 #define CONTEXT_FLOATING_POINT (CONTEXT_ARM | 0x00000004) 1864 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM | 0x00000008) 1865 1866 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) 1867 1868 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) 1869 1870 #define CONTEXT_EXCEPTION_ACTIVE 0x08000000 1871 #define CONTEXT_SERVICE_ACTIVE 0x10000000 1872 #define CONTEXT_EXCEPTION_REQUEST 0x40000000 1873 #define CONTEXT_EXCEPTION_REPORTING 0x80000000 1874 1875 #define CONTEXT_UNWOUND_TO_CALL 0x20000000 1876 1877 #endif /* !defined(RC_INVOKED) */ 1878 1879 #define INITIAL_CPSR 0x10 1880 #define INITIAL_FPSCR 0x00 1881 1882 #define ARM_MAX_BREAKPOINTS 8 1883 #define ARM_MAX_WATCHPOINTS 1 1884 1885 1886 typedef struct _NEON128 { 1887 ULONGLONG Low; 1888 LONGLONG High; 1889 } NEON128, *PNEON128; 1890 1891 typedef struct DECLSPEC_ALIGN(8) _CONTEXT { 1892 DWORD ContextFlags; 1893 1894 DWORD R0; 1895 DWORD R1; 1896 DWORD R2; 1897 DWORD R3; 1898 DWORD R4; 1899 DWORD R5; 1900 DWORD R6; 1901 DWORD R7; 1902 DWORD R8; 1903 DWORD R9; 1904 DWORD R10; 1905 DWORD R11; 1906 DWORD R12; 1907 1908 DWORD Sp; 1909 DWORD Lr; 1910 DWORD Pc; 1911 DWORD Cpsr; 1912 1913 DWORD Fpscr; 1914 DWORD Padding; 1915 union { 1916 NEON128 Q[16]; 1917 ULONGLONG D[32]; 1918 DWORD S[32]; 1919 } DUMMYUNIONNAME; 1920 1921 DWORD Bvr[ARM_MAX_BREAKPOINTS]; 1922 DWORD Bcr[ARM_MAX_BREAKPOINTS]; 1923 DWORD Wvr[ARM_MAX_WATCHPOINTS]; 1924 DWORD Wcr[ARM_MAX_WATCHPOINTS]; 1925 1926 DWORD Padding2[2]; 1927 } CONTEXT, *PCONTEXT; 1928 1929 typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; 1930 typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD ControlPc,PVOID Context); 1931 1932 #define UNW_FLAG_NHANDLER 0x0 1933 #define UNW_FLAG_EHANDLER 0x1 1934 #define UNW_FLAG_UHANDLER 0x2 1935 1936 #define UNWIND_HISTORY_TABLE_SIZE 12 1937 1938 typedef struct _UNWIND_HISTORY_TABLE_ENTRY { 1939 DWORD ImageBase; 1940 PRUNTIME_FUNCTION FunctionEntry; 1941 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; 1942 1943 typedef struct _UNWIND_HISTORY_TABLE { 1944 DWORD Count; 1945 BYTE LocalHint; 1946 BYTE GlobalHint; 1947 BYTE Search; 1948 BYTE Once; 1949 DWORD LowAddress; 1950 DWORD HighAddress; 1951 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; 1952 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; 1953 1954 struct _DISPATCHER_CONTEXT; 1955 typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT; 1956 typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT; 1957 1958 struct _DISPATCHER_CONTEXT { 1959 ULONG ControlPc; 1960 ULONG ImageBase; 1961 PRUNTIME_FUNCTION FunctionEntry; 1962 ULONG EstablisherFrame; 1963 ULONG TargetPc; 1964 PCONTEXT ContextRecord; 1965 PEXCEPTION_ROUTINE LanguageHandler; 1966 PVOID HandlerData; 1967 PUNWIND_HISTORY_TABLE HistoryTable; 1968 ULONG ScopeIndex; 1969 BOOLEAN ControlPcIsUnwound; 1970 PBYTE NonVolatileRegisters; 1971 ULONG VirtualVfpHead; 1972 }; 1973 1974 typedef struct _KNONVOLATILE_CONTEXT_POINTERS { 1975 PDWORD R4; 1976 PDWORD R5; 1977 PDWORD R6; 1978 PDWORD R7; 1979 PDWORD R8; 1980 PDWORD R9; 1981 PDWORD R10; 1982 PDWORD R11; 1983 PDWORD Lr; 1984 PULONGLONG D8; 1985 PULONGLONG D9; 1986 PULONGLONG D10; 1987 PULONGLONG D11; 1988 PULONGLONG D12; 1989 PULONGLONG D13; 1990 PULONGLONG D14; 1991 PULONGLONG D15; 1992 } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; 1993 1994 #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" 1995 1996 #endif /* _ARM_ */ 1997 1998 1999 #ifdef _ARM64_ 2000 2001 #if defined(__aarch64__) && !defined(RC_INVOKED) 2002 2003 #ifdef __cplusplus 2004 extern "C" { 2005 #endif 2006 2007 #define BitTest _bittest 2008 #define BitTestAndComplement _bittestandcomplement 2009 #define BitTestAndSet _bittestandset 2010 #define BitTestAndReset _bittestandreset 2011 2012 #define BitScanForward _BitScanForward 2013 #define BitScanReverse _BitScanReverse 2014 #define BitScanForward64 _BitScanForward64 2015 #define BitScanReverse64 _BitScanReverse64 2016 2017 #define InterlockedIncrement16 _InterlockedIncrement16 2018 #define InterlockedDecrement16 _InterlockedDecrement16 2019 #define InterlockedCompareExchange16 _InterlockedCompareExchange16 2020 2021 #define InterlockedAnd _InterlockedAnd 2022 #define InterlockedOr _InterlockedOr 2023 #define InterlockedXor _InterlockedXor 2024 #define InterlockedIncrement _InterlockedIncrement 2025 #define InterlockedIncrementAcquire InterlockedIncrement 2026 #define InterlockedIncrementRelease InterlockedIncrement 2027 #define InterlockedDecrement _InterlockedDecrement 2028 #define InterlockedDecrementAcquire InterlockedDecrement 2029 #define InterlockedDecrementRelease InterlockedDecrement 2030 #define InterlockedAdd _InterlockedAdd 2031 #define InterlockedExchange _InterlockedExchange 2032 #define InterlockedExchangeAdd _InterlockedExchangeAdd 2033 #define InterlockedCompareExchange _InterlockedCompareExchange 2034 #define InterlockedCompareExchangeAcquire InterlockedCompareExchange 2035 #define InterlockedCompareExchangeRelease InterlockedCompareExchange 2036 2037 #define InterlockedAnd64 _InterlockedAnd64 2038 #define InterlockedAndAffinity InterlockedAnd64 2039 #define InterlockedOr64 _InterlockedOr64 2040 #define InterlockedOrAffinity InterlockedOr64 2041 #define InterlockedXor64 _InterlockedXor64 2042 #define InterlockedIncrement64 _InterlockedIncrement64 2043 #define InterlockedDecrement64 _InterlockedDecrement64 2044 #define InterlockedAdd64 _InterlockedAdd64 2045 #define InterlockedExchange64 _InterlockedExchange64 2046 #define InterlockedExchangeAcquire64 InterlockedExchange64 2047 #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 2048 #define InterlockedCompareExchange64 _InterlockedCompareExchange64 2049 #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 2050 #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 2051 2052 #define InterlockedExchangePointer _InterlockedExchangePointer 2053 #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer 2054 #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer 2055 #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer 2056 2057 #ifdef __cplusplus 2058 } 2059 #endif 2060 #endif /* defined(__aarch64__) && !defined(RC_INVOKED) */ 2061 2062 #define EXCEPTION_READ_FAULT 0 2063 #define EXCEPTION_WRITE_FAULT 1 2064 #define EXCEPTION_EXECUTE_FAULT 8 2065 2066 #if !defined(RC_INVOKED) 2067 2068 #define CONTEXT_ARM64 0x400000 2069 #define CONTEXT_CONTROL (CONTEXT_ARM64 | 0x00000001) 2070 #define CONTEXT_INTEGER (CONTEXT_ARM64 | 0x00000002) 2071 #define CONTEXT_FLOATING_POINT (CONTEXT_ARM64 | 0x00000004) 2072 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM64 | 0x00000008) 2073 2074 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER) 2075 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) 2076 2077 #define EXCEPTION_READ_FAULT 0 2078 #define EXCEPTION_WRITE_FAULT 1 2079 #define EXCEPTION_EXECUTE_FAULT 8 2080 2081 #define ARM64_MAX_BREAKPOINTS 8 2082 #define ARM64_MAX_WATCHPOINTS 2 2083 2084 #endif /* !defined(RC_INVOKED) */ 2085 2086 typedef union _NEON128 { 2087 struct 2088 { 2089 ULONGLONG Low; 2090 LONGLONG High; 2091 } DUMMYSTRUCTNAME; 2092 double D[2]; 2093 float S[4]; 2094 WORD H[8]; 2095 BYTE B[16]; 2096 } NEON128, *PNEON128; 2097 2098 typedef struct DECLSPEC_ALIGN(16) _CONTEXT { 2099 ULONG ContextFlags; /* 000 */ 2100 /* CONTEXT_INTEGER */ 2101 ULONG Cpsr; /* 004 */ 2102 union 2103 { 2104 struct 2105 { 2106 DWORD64 X0; /* 008 */ 2107 DWORD64 X1; /* 010 */ 2108 DWORD64 X2; /* 018 */ 2109 DWORD64 X3; /* 020 */ 2110 DWORD64 X4; /* 028 */ 2111 DWORD64 X5; /* 030 */ 2112 DWORD64 X6; /* 038 */ 2113 DWORD64 X7; /* 040 */ 2114 DWORD64 X8; /* 048 */ 2115 DWORD64 X9; /* 050 */ 2116 DWORD64 X10; /* 058 */ 2117 DWORD64 X11; /* 060 */ 2118 DWORD64 X12; /* 068 */ 2119 DWORD64 X13; /* 070 */ 2120 DWORD64 X14; /* 078 */ 2121 DWORD64 X15; /* 080 */ 2122 DWORD64 X16; /* 088 */ 2123 DWORD64 X17; /* 090 */ 2124 DWORD64 X18; /* 098 */ 2125 DWORD64 X19; /* 0a0 */ 2126 DWORD64 X20; /* 0a8 */ 2127 DWORD64 X21; /* 0b0 */ 2128 DWORD64 X22; /* 0b8 */ 2129 DWORD64 X23; /* 0c0 */ 2130 DWORD64 X24; /* 0c8 */ 2131 DWORD64 X25; /* 0d0 */ 2132 DWORD64 X26; /* 0d8 */ 2133 DWORD64 X27; /* 0e0 */ 2134 DWORD64 X28; /* 0e8 */ 2135 DWORD64 Fp; /* 0f0 */ 2136 DWORD64 Lr; /* 0f8 */ 2137 } DUMMYSTRUCTNAME; 2138 DWORD64 X[31]; /* 008 */ 2139 } DUMMYUNIONNAME; 2140 /* CONTEXT_CONTROL */ 2141 DWORD64 Sp; /* 100 */ 2142 DWORD64 Pc; /* 108 */ 2143 /* CONTEXT_FLOATING_POINT */ 2144 NEON128 V[32]; /* 110 */ 2145 DWORD Fpcr; /* 310 */ 2146 DWORD Fpsr; /* 314 */ 2147 /* CONTEXT_DEBUG_REGISTERS */ 2148 DWORD Bcr[ARM64_MAX_BREAKPOINTS]; /* 318 */ 2149 DWORD64 Bvr[ARM64_MAX_BREAKPOINTS]; /* 338 */ 2150 DWORD Wcr[ARM64_MAX_WATCHPOINTS]; /* 378 */ 2151 DWORD64 Wvr[ARM64_MAX_WATCHPOINTS]; /* 380 */ 2152 } CONTEXT, *PCONTEXT; 2153 2154 typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; 2155 typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context); 2156 2157 #define UNW_FLAG_NHANDLER 0x0 2158 #define UNW_FLAG_EHANDLER 0x1 2159 #define UNW_FLAG_UHANDLER 0x2 2160 2161 #define UNWIND_HISTORY_TABLE_SIZE 12 2162 2163 typedef struct _UNWIND_HISTORY_TABLE_ENTRY { 2164 DWORD64 ImageBase; 2165 PRUNTIME_FUNCTION FunctionEntry; 2166 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; 2167 2168 typedef struct _UNWIND_HISTORY_TABLE { 2169 DWORD Count; 2170 BYTE LocalHint; 2171 BYTE GlobalHint; 2172 BYTE Search; 2173 BYTE Once; 2174 DWORD64 LowAddress; 2175 DWORD64 HighAddress; 2176 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; 2177 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; 2178 2179 struct _DISPATCHER_CONTEXT; 2180 typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT; 2181 typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT; 2182 2183 struct _DISPATCHER_CONTEXT { 2184 ULONG_PTR ControlPc; 2185 ULONG_PTR ImageBase; 2186 PRUNTIME_FUNCTION FunctionEntry; 2187 ULONG_PTR EstablisherFrame; 2188 ULONG_PTR TargetPc; 2189 PCONTEXT ContextRecord; 2190 PEXCEPTION_ROUTINE LanguageHandler; 2191 PVOID HandlerData; 2192 PUNWIND_HISTORY_TABLE HistoryTable; 2193 ULONG ScopeIndex; 2194 BOOLEAN ControlPcIsUnwound; 2195 PBYTE NonVolatileRegisters; 2196 }; 2197 2198 typedef struct _KNONVOLATILE_CONTEXT_POINTERS { 2199 PDWORD64 X19; 2200 PDWORD64 X20; 2201 PDWORD64 X21; 2202 PDWORD64 X22; 2203 PDWORD64 X23; 2204 PDWORD64 X24; 2205 PDWORD64 X25; 2206 PDWORD64 X26; 2207 PDWORD64 X27; 2208 PDWORD64 X28; 2209 PDWORD64 Fp; 2210 PDWORD64 Lr; 2211 2212 PDWORD64 D8; 2213 PDWORD64 D9; 2214 PDWORD64 D10; 2215 PDWORD64 D11; 2216 PDWORD64 D12; 2217 PDWORD64 D13; 2218 PDWORD64 D14; 2219 PDWORD64 D15; 2220 } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; 2221 2222 #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" 2223 2224 #endif /* _ARM64_ */ 2225 2226 2227 #ifdef _X86_ 2228 2229 #if defined(__i386__) && !defined(__x86_64) && !defined(RC_INVOKED) 2230 #ifdef __cplusplus 2231 extern "C" { 2232 #endif 2233 2234 #define BitTest _bittest 2235 #define BitTestAndComplement _bittestandcomplement 2236 #define BitTestAndSet _bittestandset 2237 #define BitTestAndReset _bittestandreset 2238 2239 #define BitScanForward _BitScanForward 2240 #define BitScanReverse _BitScanReverse 2241 2242 #define InterlockedIncrement16 _InterlockedIncrement16 2243 #define InterlockedDecrement16 _InterlockedDecrement16 2244 #define InterlockedCompareExchange16 _InterlockedCompareExchange16 2245 2246 #define InterlockedAnd _InterlockedAnd 2247 #define InterlockedOr _InterlockedOr 2248 #define InterlockedXor _InterlockedXor 2249 #define InterlockedIncrement _InterlockedIncrement 2250 #define InterlockedIncrementAcquire InterlockedIncrement 2251 #define InterlockedIncrementRelease InterlockedIncrement 2252 #define InterlockedDecrement _InterlockedDecrement 2253 #define InterlockedDecrementAcquire InterlockedDecrement 2254 #define InterlockedDecrementRelease InterlockedDecrement 2255 #define InterlockedAdd _InterlockedAdd 2256 #define InterlockedExchange _InterlockedExchange 2257 #define InterlockedExchangeAdd _InterlockedExchangeAdd 2258 #define InterlockedCompareExchange _InterlockedCompareExchange 2259 #define InterlockedCompareExchangeAcquire InterlockedCompareExchange 2260 #define InterlockedCompareExchangeRelease InterlockedCompareExchange 2261 2262 #define InterlockedAnd64 _InterlockedAnd64 2263 #define InterlockedAndAffinity InterlockedAnd64 2264 #define InterlockedOr64 _InterlockedOr64 2265 #define InterlockedOrAffinity InterlockedOr64 2266 #define InterlockedXor64 _InterlockedXor64 2267 #define InterlockedIncrement64 _InterlockedIncrement64 2268 #define InterlockedDecrement64 _InterlockedDecrement64 2269 #define InterlockedAdd64 _InterlockedAdd64 2270 #define InterlockedExchange64 _InterlockedExchange64 2271 #define InterlockedExchangeAcquire64 InterlockedExchange64 2272 #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 2273 #define InterlockedCompareExchange64 _InterlockedCompareExchange64 2274 #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 2275 #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 2276 2277 #define InterlockedExchangePointer _InterlockedExchangePointer 2278 #define InterlockedCompareExchangePointer(Destination, ExChange, Comperand) (PVOID) (LONG_PTR)InterlockedCompareExchange ((LONG volatile *) (Destination),(LONG) (LONG_PTR) (ExChange),(LONG) (LONG_PTR) (Comperand)) 2279 #define InterlockedCompareExchangePointerAcquire InterlockedCompareExchangePointer 2280 #define InterlockedCompareExchangePointerRelease InterlockedCompareExchangePointer 2281 2282 #ifdef _PREFIX_ 2283 /* BYTE __readfsbyte(DWORD Offset); moved to psdk_inc/intrin-impl.h */ 2284 /* WORD __readfsword(DWORD Offset); moved to psdk_inc/intrin-impl.h */ 2285 /* DWORD __readfsdword(DWORD Offset); moved to psdk_inc/intrin-impl.h */ 2286 /* VOID __writefsbyte(DWORD Offset,BYTE Data); moved to psdk_inc/intrin-impl.h */ 2287 /* VOID __writefsword(DWORD Offset,WORD Data); moved to psdk_inc/intrin-impl.h */ 2288 /* VOID __writefsdword(DWORD Offset,DWORD Data); moved to psdk_inc/intrin-impl.h */ 2289 #endif 2290 2291 #ifdef __cplusplus 2292 } 2293 #endif 2294 #endif /* defined(__i386__) && !defined(__x86_64) && !defined(RC_INVOKED) */ 2295 2296 #if defined(__i386__) && !defined(__x86_64) 2297 2298 #ifdef __SSE2__ 2299 #include <emmintrin.h> 2300 #define YieldProcessor _mm_pause 2301 #define MemoryBarrier _mm_mfence 2302 #else 2303 #define YieldProcessor __buildpause 2304 VOID MemoryBarrier(VOID); 2305 FORCEINLINE VOID MemoryBarrier(VOID) 2306 __buildmemorybarrier() 2307 #endif 2308 2309 #define PreFetchCacheLine(l,a) 2310 #define ReadForWriteAccess(p) (*(p)) 2311 2312 #define PF_TEMPORAL_LEVEL_1 2313 #define PF_NON_TEMPORAL_LEVEL_ALL 2314 2315 #define PcTeb 0x18 2316 struct _TEB *NtCurrentTeb(void); 2317 PVOID GetCurrentFiber(void); 2318 PVOID GetFiberData(void); 2319 2320 #define DbgRaiseAssertionFailure __int2c 2321 NtCurrentTeb(void)2322 FORCEINLINE struct _TEB *NtCurrentTeb(void) 2323 { 2324 return (struct _TEB *)__readfsdword(PcTeb); 2325 } GetCurrentFiber(void)2326 FORCEINLINE PVOID GetCurrentFiber(void) 2327 { 2328 return(PVOID)__readfsdword(0x10); 2329 } GetFiberData(void)2330 FORCEINLINE PVOID GetFiberData(void) 2331 { 2332 return *(PVOID *)GetCurrentFiber(); 2333 } 2334 #endif /* defined(__i386__) && !defined(__x86_64) */ 2335 2336 #define EXCEPTION_READ_FAULT 0 2337 #define EXCEPTION_WRITE_FAULT 1 2338 #define EXCEPTION_EXECUTE_FAULT 8 2339 2340 #define SIZE_OF_80387_REGISTERS 80 2341 2342 #if !defined(RC_INVOKED) 2343 2344 #define CONTEXT_i386 0x00010000 2345 #define CONTEXT_i486 0x00010000 2346 2347 #define CONTEXT_CONTROL (CONTEXT_i386 | __MSABI_LONG(0x00000001)) 2348 #define CONTEXT_INTEGER (CONTEXT_i386 | __MSABI_LONG(0x00000002)) 2349 #define CONTEXT_SEGMENTS (CONTEXT_i386 | __MSABI_LONG(0x00000004)) 2350 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | __MSABI_LONG(0x00000008)) 2351 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | __MSABI_LONG(0x00000010)) 2352 #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | __MSABI_LONG(0x00000020)) 2353 2354 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS) 2355 2356 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS) 2357 #endif /* !defined(RC_INVOKED) */ 2358 2359 #define MAXIMUM_SUPPORTED_EXTENSION 512 2360 2361 typedef struct _FLOATING_SAVE_AREA { 2362 DWORD ControlWord; 2363 DWORD StatusWord; 2364 DWORD TagWord; 2365 DWORD ErrorOffset; 2366 DWORD ErrorSelector; 2367 DWORD DataOffset; 2368 DWORD DataSelector; 2369 BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; 2370 DWORD Cr0NpxState; 2371 } FLOATING_SAVE_AREA; 2372 2373 typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA; 2374 2375 typedef struct _CONTEXT { 2376 DWORD ContextFlags; 2377 DWORD Dr0; 2378 DWORD Dr1; 2379 DWORD Dr2; 2380 DWORD Dr3; 2381 DWORD Dr6; 2382 DWORD Dr7; 2383 FLOATING_SAVE_AREA FloatSave; 2384 DWORD SegGs; 2385 DWORD SegFs; 2386 DWORD SegEs; 2387 DWORD SegDs; 2388 2389 DWORD Edi; 2390 DWORD Esi; 2391 DWORD Ebx; 2392 DWORD Edx; 2393 DWORD Ecx; 2394 DWORD Eax; 2395 DWORD Ebp; 2396 DWORD Eip; 2397 DWORD SegCs; 2398 DWORD EFlags; 2399 DWORD Esp; 2400 DWORD SegSs; 2401 BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; 2402 } CONTEXT; 2403 2404 typedef CONTEXT *PCONTEXT; 2405 2406 #endif /* end of _X86_ */ 2407 2408 /* LONG WINAPI InterlockedIncrement(LONG volatile *); moved to psdk_inc/intrin-impl.h */ 2409 /* LONG WINAPI InterlockedDecrement(LONG volatile *); moved to psdk_inc/intrin-impl.h */ 2410 /* LONG WINAPI InterlockedExchange(LONG volatile *, LONG); moved to psdk_inc/intrin-impl.h */ 2411 2412 #ifndef _LDT_ENTRY_DEFINED 2413 #define _LDT_ENTRY_DEFINED 2414 2415 typedef struct _LDT_ENTRY { 2416 WORD LimitLow; 2417 WORD BaseLow; 2418 union { 2419 struct { 2420 BYTE BaseMid; 2421 BYTE Flags1; 2422 BYTE Flags2; 2423 BYTE BaseHi; 2424 } Bytes; 2425 struct { 2426 DWORD BaseMid : 8; 2427 DWORD Type : 5; 2428 DWORD Dpl : 2; 2429 DWORD Pres : 1; 2430 DWORD LimitHi : 4; 2431 DWORD Sys : 1; 2432 DWORD Reserved_0 : 1; 2433 DWORD Default_Big : 1; 2434 DWORD Granularity : 1; 2435 DWORD BaseHi : 8; 2436 } Bits; 2437 } HighWord; 2438 } LDT_ENTRY,*PLDT_ENTRY; 2439 #endif /* _LDT_ENTRY_DEFINED */ 2440 2441 #if defined(__ia64__) && !defined(RC_INVOKED) 2442 2443 #ifdef __cplusplus 2444 extern "C" { 2445 #endif 2446 2447 BOOLEAN BitScanForward64(DWORD *Index,DWORD64 Mask); 2448 BOOLEAN BitScanReverse64(DWORD *Index,DWORD64 Mask); 2449 2450 #ifdef __cplusplus 2451 } 2452 #endif 2453 #endif /* defined(__ia64__) && !defined(RC_INVOKED) */ 2454 2455 #if !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_) 2456 2457 void *_cdecl _rdteb(void); 2458 2459 #ifdef __ia64__ 2460 #define NtCurrentTeb() ((struct _TEB *)_rdteb()) 2461 #define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData) 2462 #define GetFiberData() (*(PVOID *)(GetCurrentFiber())) 2463 2464 #ifdef __cplusplus 2465 extern "C" { 2466 #endif 2467 2468 void __break(int); 2469 void __yield(void); 2470 void __mf(void); 2471 void __lfetch(int Level,VOID CONST *Address); 2472 void __lfetchfault(int Level,VOID CONST *Address); 2473 void __lfetch_excl(int Level,VOID CONST *Address); 2474 void __lfetchfault_excl(int Level,VOID CONST *Address); 2475 2476 #define MD_LFHINT_NONE 0x00 2477 #define MD_LFHINT_NT1 0x01 2478 #define MD_LFHINT_NT2 0x02 2479 #define MD_LFHINT_NTA 0x03 2480 2481 #ifdef __cplusplus 2482 } 2483 #endif 2484 2485 #define YieldProcessor __yield 2486 #define MemoryBarrier __mf 2487 #define PreFetchCacheLine __lfetch 2488 #define ReadForWriteAccess(p) (*(p)) 2489 #define DbgRaiseAssertionFailure() __break(ASSERT_BREAKPOINT) 2490 2491 #define PF_TEMPORAL_LEVEL_1 MD_LFHINT_NONE 2492 #define PF_NON_TEMPORAL_LEVEL_ALL MD_LFHINT_NTA 2493 2494 #define UnsignedMultiplyHigh __UMULH 2495 2496 ULONGLONG UnsignedMultiplyHigh(ULONGLONG Multiplier,ULONGLONG Multiplicand); 2497 #else /* __ia64__ */ 2498 struct _TEB *NtCurrentTeb(void); 2499 #endif /* __ia64__ */ 2500 #endif /* !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_) */ 2501 2502 #ifdef _IA64_ 2503 2504 #define EXCEPTION_READ_FAULT 0 2505 #define EXCEPTION_WRITE_FAULT 1 2506 #define EXCEPTION_EXECUTE_FAULT 2 2507 2508 #if !defined(RC_INVOKED) 2509 2510 #define CONTEXT_IA64 0x00080000 2511 2512 #define CONTEXT_CONTROL (CONTEXT_IA64 | __MSABI_LONG(0x00000001)) 2513 #define CONTEXT_LOWER_FLOATING_POINT (CONTEXT_IA64 | __MSABI_LONG(0x00000002)) 2514 #define CONTEXT_HIGHER_FLOATING_POINT (CONTEXT_IA64 | __MSABI_LONG(0x00000004)) 2515 #define CONTEXT_INTEGER (CONTEXT_IA64 | __MSABI_LONG(0x00000008)) 2516 #define CONTEXT_DEBUG (CONTEXT_IA64 | __MSABI_LONG(0x00000010)) 2517 #define CONTEXT_IA32_CONTROL (CONTEXT_IA64 | __MSABI_LONG(0x00000020)) 2518 2519 #define CONTEXT_FLOATING_POINT (CONTEXT_LOWER_FLOATING_POINT | CONTEXT_HIGHER_FLOATING_POINT) 2520 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_IA32_CONTROL) 2521 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_DEBUG | CONTEXT_IA32_CONTROL) 2522 2523 #define CONTEXT_EXCEPTION_ACTIVE 0x8000000 2524 #define CONTEXT_SERVICE_ACTIVE 0x10000000 2525 #define CONTEXT_EXCEPTION_REQUEST 0x40000000 2526 #define CONTEXT_EXCEPTION_REPORTING 0x80000000 2527 #endif /* !defined(RC_INVOKED) */ 2528 2529 typedef struct _CONTEXT { 2530 DWORD ContextFlags; 2531 DWORD Fill1[3]; 2532 ULONGLONG DbI0; 2533 ULONGLONG DbI1; 2534 ULONGLONG DbI2; 2535 ULONGLONG DbI3; 2536 ULONGLONG DbI4; 2537 ULONGLONG DbI5; 2538 ULONGLONG DbI6; 2539 ULONGLONG DbI7; 2540 ULONGLONG DbD0; 2541 ULONGLONG DbD1; 2542 ULONGLONG DbD2; 2543 ULONGLONG DbD3; 2544 ULONGLONG DbD4; 2545 ULONGLONG DbD5; 2546 ULONGLONG DbD6; 2547 ULONGLONG DbD7; 2548 FLOAT128 FltS0; 2549 FLOAT128 FltS1; 2550 FLOAT128 FltS2; 2551 FLOAT128 FltS3; 2552 FLOAT128 FltT0; 2553 FLOAT128 FltT1; 2554 FLOAT128 FltT2; 2555 FLOAT128 FltT3; 2556 FLOAT128 FltT4; 2557 FLOAT128 FltT5; 2558 FLOAT128 FltT6; 2559 FLOAT128 FltT7; 2560 FLOAT128 FltT8; 2561 FLOAT128 FltT9; 2562 FLOAT128 FltS4; 2563 FLOAT128 FltS5; 2564 FLOAT128 FltS6; 2565 FLOAT128 FltS7; 2566 FLOAT128 FltS8; 2567 FLOAT128 FltS9; 2568 FLOAT128 FltS10; 2569 FLOAT128 FltS11; 2570 FLOAT128 FltS12; 2571 FLOAT128 FltS13; 2572 FLOAT128 FltS14; 2573 FLOAT128 FltS15; 2574 FLOAT128 FltS16; 2575 FLOAT128 FltS17; 2576 FLOAT128 FltS18; 2577 FLOAT128 FltS19; 2578 FLOAT128 FltF32; 2579 FLOAT128 FltF33; 2580 FLOAT128 FltF34; 2581 FLOAT128 FltF35; 2582 FLOAT128 FltF36; 2583 FLOAT128 FltF37; 2584 FLOAT128 FltF38; 2585 FLOAT128 FltF39; 2586 FLOAT128 FltF40; 2587 FLOAT128 FltF41; 2588 FLOAT128 FltF42; 2589 FLOAT128 FltF43; 2590 FLOAT128 FltF44; 2591 FLOAT128 FltF45; 2592 FLOAT128 FltF46; 2593 FLOAT128 FltF47; 2594 FLOAT128 FltF48; 2595 FLOAT128 FltF49; 2596 FLOAT128 FltF50; 2597 FLOAT128 FltF51; 2598 FLOAT128 FltF52; 2599 FLOAT128 FltF53; 2600 FLOAT128 FltF54; 2601 FLOAT128 FltF55; 2602 FLOAT128 FltF56; 2603 FLOAT128 FltF57; 2604 FLOAT128 FltF58; 2605 FLOAT128 FltF59; 2606 FLOAT128 FltF60; 2607 FLOAT128 FltF61; 2608 FLOAT128 FltF62; 2609 FLOAT128 FltF63; 2610 FLOAT128 FltF64; 2611 FLOAT128 FltF65; 2612 FLOAT128 FltF66; 2613 FLOAT128 FltF67; 2614 FLOAT128 FltF68; 2615 FLOAT128 FltF69; 2616 FLOAT128 FltF70; 2617 FLOAT128 FltF71; 2618 FLOAT128 FltF72; 2619 FLOAT128 FltF73; 2620 FLOAT128 FltF74; 2621 FLOAT128 FltF75; 2622 FLOAT128 FltF76; 2623 FLOAT128 FltF77; 2624 FLOAT128 FltF78; 2625 FLOAT128 FltF79; 2626 FLOAT128 FltF80; 2627 FLOAT128 FltF81; 2628 FLOAT128 FltF82; 2629 FLOAT128 FltF83; 2630 FLOAT128 FltF84; 2631 FLOAT128 FltF85; 2632 FLOAT128 FltF86; 2633 FLOAT128 FltF87; 2634 FLOAT128 FltF88; 2635 FLOAT128 FltF89; 2636 FLOAT128 FltF90; 2637 FLOAT128 FltF91; 2638 FLOAT128 FltF92; 2639 FLOAT128 FltF93; 2640 FLOAT128 FltF94; 2641 FLOAT128 FltF95; 2642 FLOAT128 FltF96; 2643 FLOAT128 FltF97; 2644 FLOAT128 FltF98; 2645 FLOAT128 FltF99; 2646 FLOAT128 FltF100; 2647 FLOAT128 FltF101; 2648 FLOAT128 FltF102; 2649 FLOAT128 FltF103; 2650 FLOAT128 FltF104; 2651 FLOAT128 FltF105; 2652 FLOAT128 FltF106; 2653 FLOAT128 FltF107; 2654 FLOAT128 FltF108; 2655 FLOAT128 FltF109; 2656 FLOAT128 FltF110; 2657 FLOAT128 FltF111; 2658 FLOAT128 FltF112; 2659 FLOAT128 FltF113; 2660 FLOAT128 FltF114; 2661 FLOAT128 FltF115; 2662 FLOAT128 FltF116; 2663 FLOAT128 FltF117; 2664 FLOAT128 FltF118; 2665 FLOAT128 FltF119; 2666 FLOAT128 FltF120; 2667 FLOAT128 FltF121; 2668 FLOAT128 FltF122; 2669 FLOAT128 FltF123; 2670 FLOAT128 FltF124; 2671 FLOAT128 FltF125; 2672 FLOAT128 FltF126; 2673 FLOAT128 FltF127; 2674 ULONGLONG StFPSR; 2675 ULONGLONG IntGp; 2676 ULONGLONG IntT0; 2677 ULONGLONG IntT1; 2678 ULONGLONG IntS0; 2679 ULONGLONG IntS1; 2680 ULONGLONG IntS2; 2681 ULONGLONG IntS3; 2682 ULONGLONG IntV0; 2683 ULONGLONG IntT2; 2684 ULONGLONG IntT3; 2685 ULONGLONG IntT4; 2686 ULONGLONG IntSp; 2687 ULONGLONG IntTeb; 2688 ULONGLONG IntT5; 2689 ULONGLONG IntT6; 2690 ULONGLONG IntT7; 2691 ULONGLONG IntT8; 2692 ULONGLONG IntT9; 2693 ULONGLONG IntT10; 2694 ULONGLONG IntT11; 2695 ULONGLONG IntT12; 2696 ULONGLONG IntT13; 2697 ULONGLONG IntT14; 2698 ULONGLONG IntT15; 2699 ULONGLONG IntT16; 2700 ULONGLONG IntT17; 2701 ULONGLONG IntT18; 2702 ULONGLONG IntT19; 2703 ULONGLONG IntT20; 2704 ULONGLONG IntT21; 2705 ULONGLONG IntT22; 2706 ULONGLONG IntNats; 2707 ULONGLONG Preds; 2708 ULONGLONG BrRp; 2709 ULONGLONG BrS0; 2710 ULONGLONG BrS1; 2711 ULONGLONG BrS2; 2712 ULONGLONG BrS3; 2713 ULONGLONG BrS4; 2714 ULONGLONG BrT0; 2715 ULONGLONG BrT1; 2716 ULONGLONG ApUNAT; 2717 ULONGLONG ApLC; 2718 ULONGLONG ApEC; 2719 ULONGLONG ApCCV; 2720 ULONGLONG ApDCR; 2721 ULONGLONG RsPFS; 2722 ULONGLONG RsBSP; 2723 ULONGLONG RsBSPSTORE; 2724 ULONGLONG RsRSC; 2725 ULONGLONG RsRNAT; 2726 ULONGLONG StIPSR; 2727 ULONGLONG StIIP; 2728 ULONGLONG StIFS; 2729 ULONGLONG StFCR; 2730 ULONGLONG Eflag; 2731 ULONGLONG SegCSD; 2732 ULONGLONG SegSSD; 2733 ULONGLONG Cflag; 2734 ULONGLONG StFSR; 2735 ULONGLONG StFIR; 2736 ULONGLONG StFDR; 2737 ULONGLONG UNUSEDPACK; 2738 } CONTEXT,*PCONTEXT; 2739 2740 typedef struct _PLABEL_DESCRIPTOR { 2741 ULONGLONG EntryPoint; 2742 ULONGLONG GlobalPointer; 2743 } PLABEL_DESCRIPTOR,*PPLABEL_DESCRIPTOR; 2744 2745 typedef struct _RUNTIME_FUNCTION { 2746 DWORD BeginAddress; 2747 DWORD EndAddress; 2748 DWORD UnwindInfoAddress; 2749 } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION; 2750 2751 typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context); 2752 typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions); 2753 2754 #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" 2755 2756 VOID __jump_unwind(ULONGLONG TargetMsFrame,ULONGLONG TargetBsFrame,ULONGLONG TargetPc); 2757 #endif /* end of _IA64_ */ 2758 2759 /* http://www.nynaeve.net/?p=99 */ 2760 2761 #define EXCEPTION_NONCONTINUABLE 0x1 2762 #define EXCEPTION_UNWINDING 0x2 2763 #define EXCEPTION_EXIT_UNWIND 0x4 2764 #define EXCEPTION_STACK_INVALID 0x8 2765 #define EXCEPTION_NESTED_CALL 0x10 2766 #define EXCEPTION_TARGET_UNWIND 0x20 2767 #define EXCEPTION_COLLIDED_UNWIND 0x40 2768 #define EXCEPTION_UNWIND 0x66 2769 2770 #define IS_UNWINDING(f) ((f & EXCEPTION_UNWIND) != 0) 2771 #define IS_DISPATCHING(f) ((f & EXCEPTION_UNWIND) == 0) 2772 #define IS_TARGET_UNWIND(f) ((f & EXCEPTION_TARGET_UNWIND) != 0) 2773 2774 #define EXCEPTION_MAXIMUM_PARAMETERS 15 2775 2776 typedef struct _EXCEPTION_RECORD { 2777 DWORD ExceptionCode; 2778 DWORD ExceptionFlags; 2779 struct _EXCEPTION_RECORD *ExceptionRecord; 2780 PVOID ExceptionAddress; 2781 DWORD NumberParameters; 2782 ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 2783 } EXCEPTION_RECORD; 2784 2785 typedef EXCEPTION_RECORD *PEXCEPTION_RECORD; 2786 2787 typedef struct _EXCEPTION_RECORD32 { 2788 DWORD ExceptionCode; 2789 DWORD ExceptionFlags; 2790 DWORD ExceptionRecord; 2791 DWORD ExceptionAddress; 2792 DWORD NumberParameters; 2793 DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 2794 } EXCEPTION_RECORD32,*PEXCEPTION_RECORD32; 2795 2796 typedef struct _EXCEPTION_RECORD64 { 2797 DWORD ExceptionCode; 2798 DWORD ExceptionFlags; 2799 DWORD64 ExceptionRecord; 2800 DWORD64 ExceptionAddress; 2801 DWORD NumberParameters; 2802 DWORD __unusedAlignment; 2803 DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 2804 } EXCEPTION_RECORD64,*PEXCEPTION_RECORD64; 2805 2806 typedef struct _EXCEPTION_POINTERS { 2807 PEXCEPTION_RECORD ExceptionRecord; 2808 PCONTEXT ContextRecord; 2809 } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS; 2810 2811 #ifdef __ia64__ 2812 NTSYSAPI VOID NTAPI RtlUnwind2 (FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord); 2813 #endif 2814 2815 #ifdef __x86_64__ 2816 2817 /* http://msdn.microsoft.com/en-us/library/ms680597(VS.85).aspx */ 2818 2819 #define UNWIND_HISTORY_TABLE_SIZE 12 2820 2821 typedef struct _UNWIND_HISTORY_TABLE_ENTRY { 2822 ULONG64 ImageBase; 2823 PRUNTIME_FUNCTION FunctionEntry; 2824 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; 2825 2826 #define UNWIND_HISTORY_TABLE_NONE 0 2827 #define UNWIND_HISTORY_TABLE_GLOBAL 1 2828 #define UNWIND_HISTORY_TABLE_LOCAL 2 2829 2830 typedef struct _UNWIND_HISTORY_TABLE { 2831 ULONG Count; 2832 BYTE LocalHint; 2833 BYTE GlobalHint; 2834 BYTE Search; 2835 BYTE Once; 2836 ULONG64 LowAddress; 2837 ULONG64 HighAddress; 2838 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; 2839 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; 2840 2841 /* http://msdn.microsoft.com/en-us/library/b6sf5kbd(VS.80).aspx */ 2842 2843 struct _DISPATCHER_CONTEXT; 2844 typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT; 2845 typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT; 2846 2847 struct _DISPATCHER_CONTEXT { 2848 ULONG64 ControlPc; 2849 ULONG64 ImageBase; 2850 PRUNTIME_FUNCTION FunctionEntry; 2851 ULONG64 EstablisherFrame; 2852 ULONG64 TargetIp; 2853 PCONTEXT ContextRecord; 2854 PEXCEPTION_ROUTINE LanguageHandler; 2855 PVOID HandlerData; 2856 /* http://www.nynaeve.net/?p=99 */ 2857 PUNWIND_HISTORY_TABLE HistoryTable; 2858 ULONG ScopeIndex; 2859 ULONG Fill0; 2860 }; 2861 2862 /* http://msdn.microsoft.com/en-us/library/ms680617(VS.85).aspx */ 2863 2864 typedef struct _KNONVOLATILE_CONTEXT_POINTERS 2865 { 2866 PM128A FloatingContext[16]; 2867 PULONG64 IntegerContext[16]; 2868 } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; 2869 #endif /* defined(__x86_64__) */ 2870 2871 typedef PVOID PACCESS_TOKEN; 2872 typedef PVOID PSECURITY_DESCRIPTOR; 2873 typedef PVOID PSID; 2874 typedef PVOID PCLAIMS_BLOB; 2875 typedef DWORD ACCESS_MASK; 2876 typedef ACCESS_MASK *PACCESS_MASK; 2877 2878 #define DELETE (__MSABI_LONG(0x00010000)) 2879 #define READ_CONTROL (__MSABI_LONG(0x00020000)) 2880 #define WRITE_DAC (__MSABI_LONG(0x00040000)) 2881 #define WRITE_OWNER (__MSABI_LONG(0x00080000)) 2882 #define SYNCHRONIZE (__MSABI_LONG(0x00100000)) 2883 2884 #define STANDARD_RIGHTS_REQUIRED (__MSABI_LONG(0x000F0000)) 2885 2886 #define STANDARD_RIGHTS_READ (READ_CONTROL) 2887 #define STANDARD_RIGHTS_WRITE (READ_CONTROL) 2888 #define STANDARD_RIGHTS_EXECUTE (READ_CONTROL) 2889 2890 #define STANDARD_RIGHTS_ALL (__MSABI_LONG(0x001F0000)) 2891 2892 #define SPECIFIC_RIGHTS_ALL (__MSABI_LONG(0x0000FFFF)) 2893 2894 #define ACCESS_SYSTEM_SECURITY (__MSABI_LONG(0x01000000)) 2895 #define MAXIMUM_ALLOWED (__MSABI_LONG(0x02000000)) 2896 2897 #define GENERIC_READ (__MSABI_LONG(0x80000000)) 2898 #define GENERIC_WRITE (__MSABI_LONG(0x40000000)) 2899 #define GENERIC_EXECUTE (__MSABI_LONG(0x20000000)) 2900 #define GENERIC_ALL (__MSABI_LONG(0x10000000)) 2901 2902 typedef struct _GENERIC_MAPPING { 2903 ACCESS_MASK GenericRead; 2904 ACCESS_MASK GenericWrite; 2905 ACCESS_MASK GenericExecute; 2906 ACCESS_MASK GenericAll; 2907 } GENERIC_MAPPING; 2908 typedef GENERIC_MAPPING *PGENERIC_MAPPING; 2909 2910 #include <pshpack4.h> 2911 typedef struct _LUID_AND_ATTRIBUTES { 2912 LUID Luid; 2913 DWORD Attributes; 2914 } LUID_AND_ATTRIBUTES,*PLUID_AND_ATTRIBUTES; 2915 typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; 2916 typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; 2917 #include <poppack.h> 2918 2919 #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED 2920 #define SID_IDENTIFIER_AUTHORITY_DEFINED 2921 typedef struct _SID_IDENTIFIER_AUTHORITY { 2922 BYTE Value[6]; 2923 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY; 2924 #endif /* SID_IDENTIFIER_AUTHORITY_DEFINED */ 2925 2926 #ifndef SID_DEFINED 2927 #define SID_DEFINED 2928 typedef struct _SID { 2929 BYTE Revision; 2930 BYTE SubAuthorityCount; 2931 SID_IDENTIFIER_AUTHORITY IdentifierAuthority; 2932 DWORD SubAuthority[ANYSIZE_ARRAY]; 2933 } SID,*PISID; 2934 #endif /* SID_DEFINED */ 2935 2936 #define SID_REVISION (1) 2937 #define SID_MAX_SUB_AUTHORITIES (15) 2938 #define SID_RECOMMENDED_SUB_AUTHORITIES (1) 2939 #ifndef __WIDL__ 2940 #define SECURITY_MAX_SID_SIZE (sizeof (SID) - sizeof (DWORD) + (SID_MAX_SUB_AUTHORITIES *sizeof (DWORD))) 2941 #endif 2942 2943 #define SID_HASH_SIZE 32 2944 2945 typedef enum _SID_NAME_USE { 2946 SidTypeUser = 1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown,SidTypeComputer,SidTypeLabel,SidTypeLogonSession 2947 } SID_NAME_USE,*PSID_NAME_USE; 2948 2949 typedef struct _SID_AND_ATTRIBUTES { 2950 #ifdef __WIDL__ 2951 PISID Sid; 2952 #else 2953 PSID Sid; 2954 #endif 2955 DWORD Attributes; 2956 } SID_AND_ATTRIBUTES,*PSID_AND_ATTRIBUTES; 2957 2958 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; 2959 typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY; 2960 2961 typedef ULONG_PTR SID_HASH_ENTRY, *PSID_HASH_ENTRY; 2962 2963 typedef struct _SID_AND_ATTRIBUTES_HASH { 2964 DWORD SidCount; 2965 PSID_AND_ATTRIBUTES SidAttr; 2966 SID_HASH_ENTRY Hash[SID_HASH_SIZE]; 2967 } SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH; 2968 2969 #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} 2970 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} 2971 #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} 2972 #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} 2973 #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} 2974 #define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9} 2975 2976 #define SECURITY_NULL_RID (__MSABI_LONG(0x00000000)) 2977 #define SECURITY_WORLD_RID (__MSABI_LONG(0x00000000)) 2978 #define SECURITY_LOCAL_RID (__MSABI_LONG(0x00000000)) 2979 #define SECURITY_LOCAL_LOGON_RID (__MSABI_LONG(0x00000001)) 2980 2981 #define SECURITY_CREATOR_OWNER_RID (__MSABI_LONG(0x00000000)) 2982 #define SECURITY_CREATOR_GROUP_RID (__MSABI_LONG(0x00000001)) 2983 #define SECURITY_CREATOR_OWNER_SERVER_RID (__MSABI_LONG(0x00000002)) 2984 #define SECURITY_CREATOR_GROUP_SERVER_RID (__MSABI_LONG(0x00000003)) 2985 #define SECURITY_CREATOR_OWNER_RIGHTS_RID (__MSABI_LONG(0x00000004)) 2986 2987 #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} 2988 2989 #define SECURITY_DIALUP_RID (__MSABI_LONG(0x00000001)) 2990 #define SECURITY_NETWORK_RID (__MSABI_LONG(0x00000002)) 2991 #define SECURITY_BATCH_RID (__MSABI_LONG(0x00000003)) 2992 #define SECURITY_INTERACTIVE_RID (__MSABI_LONG(0x00000004)) 2993 #define SECURITY_LOGON_IDS_RID (__MSABI_LONG(0x00000005)) 2994 #define SECURITY_LOGON_IDS_RID_COUNT (__MSABI_LONG(3)) 2995 #define SECURITY_SERVICE_RID (__MSABI_LONG(0x00000006)) 2996 #define SECURITY_ANONYMOUS_LOGON_RID (__MSABI_LONG(0x00000007)) 2997 #define SECURITY_PROXY_RID (__MSABI_LONG(0x00000008)) 2998 #define SECURITY_ENTERPRISE_CONTROLLERS_RID (__MSABI_LONG(0x00000009)) 2999 #define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID 3000 #define SECURITY_PRINCIPAL_SELF_RID (__MSABI_LONG(0x0000000A)) 3001 #define SECURITY_AUTHENTICATED_USER_RID (__MSABI_LONG(0x0000000B)) 3002 #define SECURITY_RESTRICTED_CODE_RID (__MSABI_LONG(0x0000000C)) 3003 #define SECURITY_TERMINAL_SERVER_RID (__MSABI_LONG(0x0000000D)) 3004 #define SECURITY_REMOTE_LOGON_RID (__MSABI_LONG(0x0000000E)) 3005 #define SECURITY_THIS_ORGANIZATION_RID (__MSABI_LONG(0x0000000F)) 3006 #define SECURITY_IUSER_RID (__MSABI_LONG(0x00000011)) 3007 #define SECURITY_LOCAL_SYSTEM_RID (__MSABI_LONG(0x00000012)) 3008 #define SECURITY_LOCAL_SERVICE_RID (__MSABI_LONG(0x00000013)) 3009 #define SECURITY_NETWORK_SERVICE_RID (__MSABI_LONG(0x00000014)) 3010 3011 #define SECURITY_NT_NON_UNIQUE (__MSABI_LONG(0x00000015)) 3012 #define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT (__MSABI_LONG(3)) 3013 3014 #define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID (__MSABI_LONG(0x00000016)) 3015 3016 #define SECURITY_BUILTIN_DOMAIN_RID (__MSABI_LONG(0x00000020)) 3017 #define SECURITY_WRITE_RESTRICTED_CODE_RID (__MSABI_LONG(0x00000021)) 3018 3019 #define SECURITY_PACKAGE_BASE_RID (__MSABI_LONG(0x00000040)) 3020 #define SECURITY_PACKAGE_RID_COUNT (__MSABI_LONG(2)) 3021 #define SECURITY_PACKAGE_NTLM_RID (__MSABI_LONG(0x0000000A)) 3022 #define SECURITY_PACKAGE_SCHANNEL_RID (__MSABI_LONG(0x0000000E)) 3023 #define SECURITY_PACKAGE_DIGEST_RID (__MSABI_LONG(0x00000015)) 3024 3025 #define SECURITY_CRED_TYPE_BASE_RID (__MSABI_LONG(0x00000041)) 3026 #define SECURITY_CRED_TYPE_RID_COUNT (__MSABI_LONG(2)) 3027 #define SECURITY_CRED_TYPE_THIS_ORG_CERT_RID (__MSABI_LONG(0x00000001)) 3028 3029 #define SECURITY_MIN_BASE_RID (__MSABI_LONG(0x00000050)) 3030 3031 #define SECURITY_SERVICE_ID_BASE_RID (__MSABI_LONG(0x00000050)) 3032 #define SECURITY_SERVICE_ID_RID_COUNT (__MSABI_LONG(6)) 3033 3034 #define SECURITY_RESERVED_ID_BASE_RID (__MSABI_LONG(0x00000051)) 3035 3036 #define SECURITY_APPPOOL_ID_BASE_RID (__MSABI_LONG(0x00000052)) 3037 #define SECURITY_APPPOOL_ID_RID_COUNT (__MSABI_LONG(6)) 3038 3039 #define SECURITY_VIRTUALSERVER_ID_BASE_RID (__MSABI_LONG(0x00000053)) 3040 #define SECURITY_VIRTUALSERVER_ID_RID_COUNT (__MSABI_LONG(6)) 3041 3042 #define SECURITY_USERMODEDRIVERHOST_ID_BASE_RID (__MSABI_LONG(0x00000054)) 3043 #define SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT (__MSABI_LONG(6)) 3044 3045 #define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID (__MSABI_LONG(0x00000055)) 3046 #define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT (__MSABI_LONG(6)) 3047 3048 #define SECURITY_WMIHOST_ID_BASE_RID (__MSABI_LONG(0x00000056)) 3049 #define SECURITY_WMIHOST_ID_RID_COUNT (__MSABI_LONG(6)) 3050 3051 #define SECURITY_TASK_ID_BASE_RID (__MSABI_LONG(0x00000057)) 3052 3053 #define SECURITY_NFS_ID_BASE_RID (__MSABI_LONG(0x00000058)) 3054 3055 #define SECURITY_COM_ID_BASE_RID (__MSABI_LONG(0x00000059)) 3056 3057 #define SECURITY_WINDOW_MANAGER_BASE_RID (__MSABI_LONG(0x0000005a)) 3058 3059 #define SECURITY_RDV_GFX_BASE_RID (__MSABI_LONG(0x0000005b)) 3060 3061 #define SECURITY_DASHOST_ID_BASE_RID (__MSABI_LONG(0x0000005c)) 3062 #define SECURITY_DASHOST_ID_RID_COUNT (__MSABI_LONG(6)) 3063 3064 #define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (__MSABI_LONG(6)) 3065 3066 #define SECURITY_MAX_BASE_RID (__MSABI_LONG(0x0000006f)) 3067 3068 #define SECURITY_MAX_ALWAYS_FILTERED (__MSABI_LONG(0x000003E7)) 3069 #define SECURITY_MIN_NEVER_FILTERED (__MSABI_LONG(0x000003E8)) 3070 3071 #define SECURITY_OTHER_ORGANIZATION_RID (__MSABI_LONG(0x000003E8)) 3072 3073 #define SECURITY_WINDOWSMOBILE_ID_BASE_RID (__MSABI_LONG(0x00000070)) 3074 3075 #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED (__MSABI_LONG(0x000001f0)) 3076 #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS (__MSABI_LONG(0x000001f1)) 3077 #define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS (__MSABI_LONG(0x000001f2)) 3078 3079 #define FOREST_USER_RID_MAX (__MSABI_LONG(0x000001F3)) 3080 3081 #define DOMAIN_USER_RID_ADMIN (__MSABI_LONG(0x000001F4)) 3082 #define DOMAIN_USER_RID_GUEST (__MSABI_LONG(0x000001F5)) 3083 #define DOMAIN_USER_RID_KRBTGT (__MSABI_LONG(0x000001F6)) 3084 3085 #define DOMAIN_USER_RID_MAX (__MSABI_LONG(0x000003E7)) 3086 3087 #define DOMAIN_GROUP_RID_ADMINS (__MSABI_LONG(0x00000200)) 3088 #define DOMAIN_GROUP_RID_USERS (__MSABI_LONG(0x00000201)) 3089 #define DOMAIN_GROUP_RID_GUESTS (__MSABI_LONG(0x00000202)) 3090 #define DOMAIN_GROUP_RID_COMPUTERS (__MSABI_LONG(0x00000203)) 3091 #define DOMAIN_GROUP_RID_CONTROLLERS (__MSABI_LONG(0x00000204)) 3092 #define DOMAIN_GROUP_RID_CERT_ADMINS (__MSABI_LONG(0x00000205)) 3093 #define DOMAIN_GROUP_RID_SCHEMA_ADMINS (__MSABI_LONG(0x00000206)) 3094 #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (__MSABI_LONG(0x00000207)) 3095 #define DOMAIN_GROUP_RID_POLICY_ADMINS (__MSABI_LONG(0x00000208)) 3096 #define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (__MSABI_LONG(0x00000209)) 3097 #define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS (__MSABI_LONG(0x0000020a)) 3098 3099 #define DOMAIN_ALIAS_RID_ADMINS (__MSABI_LONG(0x00000220)) 3100 #define DOMAIN_ALIAS_RID_USERS (__MSABI_LONG(0x00000221)) 3101 #define DOMAIN_ALIAS_RID_GUESTS (__MSABI_LONG(0x00000222)) 3102 #define DOMAIN_ALIAS_RID_POWER_USERS (__MSABI_LONG(0x00000223)) 3103 3104 #define DOMAIN_ALIAS_RID_ACCOUNT_OPS (__MSABI_LONG(0x00000224)) 3105 #define DOMAIN_ALIAS_RID_SYSTEM_OPS (__MSABI_LONG(0x00000225)) 3106 #define DOMAIN_ALIAS_RID_PRINT_OPS (__MSABI_LONG(0x00000226)) 3107 #define DOMAIN_ALIAS_RID_BACKUP_OPS (__MSABI_LONG(0x00000227)) 3108 3109 #define DOMAIN_ALIAS_RID_REPLICATOR (__MSABI_LONG(0x00000228)) 3110 #define DOMAIN_ALIAS_RID_RAS_SERVERS (__MSABI_LONG(0x00000229)) 3111 #define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS (__MSABI_LONG(0x0000022A)) 3112 #define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS (__MSABI_LONG(0x0000022B)) 3113 #define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS (__MSABI_LONG(0x0000022C)) 3114 #define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS (__MSABI_LONG(0x0000022D)) 3115 3116 #define DOMAIN_ALIAS_RID_MONITORING_USERS (__MSABI_LONG(0x0000022E)) 3117 #define DOMAIN_ALIAS_RID_LOGGING_USERS (__MSABI_LONG(0x0000022F)) 3118 #define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS (__MSABI_LONG(0x00000230)) 3119 #define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS (__MSABI_LONG(0x00000231)) 3120 #define DOMAIN_ALIAS_RID_DCOM_USERS (__MSABI_LONG(0x00000232)) 3121 3122 #define DOMAIN_ALIAS_RID_IUSERS (__MSABI_LONG(0x00000238)) 3123 #define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS (__MSABI_LONG(0x00000239)) 3124 #define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023B)) 3125 #define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023C)) 3126 #define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (__MSABI_LONG(0x0000023D)) 3127 #define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP (__MSABI_LONG(0x0000023e)) 3128 #define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS (__MSABI_LONG(0x0000023f)) 3129 #define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS (__MSABI_LONG(0x00000240)) 3130 #define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS (__MSABI_LONG(0x00000241)) 3131 #define DOMAIN_ALIAS_RID_HYPER_V_ADMINS (__MSABI_LONG(0x00000242)) 3132 #define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS (__MSABI_LONG(0x00000243)) 3133 #define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS (__MSABI_LONG(0x00000244)) 3134 3135 #define SECURITY_APP_PACKAGE_AUTHORITY {0, 0, 0, 0, 0, 15} 3136 3137 #define SECURITY_APP_PACKAGE_BASE_RID (__MSABI_LONG(0x00000002)) 3138 #define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (__MSABI_LONG(2)) 3139 #define SECURITY_APP_PACKAGE_RID_COUNT (__MSABI_LONG(8)) 3140 #define SECURITY_CAPABILITY_BASE_RID (__MSABI_LONG(0x00000003)) 3141 #define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (__MSABI_LONG(2)) 3142 #define SECURITY_CAPABILITY_RID_COUNT (__MSABI_LONG(5)) 3143 3144 #define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (__MSABI_LONG(0x00000001)) 3145 #define SECURITY_BUILTIN_PACKAGE_ANY_RESTRICTED_PACKAGE (__MSABI_LONG(0x00000002)) 3146 3147 #define SECURITY_CAPABILITY_INTERNET_CLIENT (__MSABI_LONG(0x00000001)) 3148 #define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (__MSABI_LONG(0x00000002)) 3149 #define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (__MSABI_LONG(0x00000003)) 3150 #define SECURITY_CAPABILITY_PICTURES_LIBRARY (__MSABI_LONG(0x00000004)) 3151 #define SECURITY_CAPABILITY_VIDEOS_LIBRARY (__MSABI_LONG(0x00000005)) 3152 #define SECURITY_CAPABILITY_MUSIC_LIBRARY (__MSABI_LONG(0x00000006)) 3153 #define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (__MSABI_LONG(0x00000007)) 3154 #define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (__MSABI_LONG(0x00000008)) 3155 #define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (__MSABI_LONG(0x00000009)) 3156 #define SECURITY_CAPABILITY_REMOVABLE_STORAGE (__MSABI_LONG(0x0000000a)) 3157 #define SECURITY_CAPABILITY_APPOINTMENTS (__MSABI_LONG(0x0000000b)) 3158 #define SECURITY_CAPABILITY_CONTACTS (__MSABI_LONG(0x0000000c)) 3159 #define SECURITY_CAPABILITY_INTERNET_EXPLORER (__MSABI_LONG(0x00001000)) 3160 3161 3162 3163 #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} 3164 #define SECURITY_MANDATORY_UNTRUSTED_RID (__MSABI_LONG(0x00000000)) 3165 #define SECURITY_MANDATORY_LOW_RID (__MSABI_LONG(0x00001000)) 3166 #define SECURITY_MANDATORY_MEDIUM_RID (__MSABI_LONG(0x00002000)) 3167 #define SECURITY_MANDATORY_HIGH_RID (__MSABI_LONG(0x00003000)) 3168 #define SECURITY_MANDATORY_SYSTEM_RID (__MSABI_LONG(0x00004000)) 3169 #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (__MSABI_LONG(0x00005000)) 3170 3171 #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID 3172 3173 #define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000) 3174 3175 #define SECURITY_SCOPED_POLICY_ID_AUTHORITY {0, 0, 0, 0, 0, 17} 3176 3177 #define SECURITY_AUTHENTICATION_AUTHORITY {0, 0, 0, 0, 0, 18} 3178 #define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (__MSABI_LONG(1)) 3179 #define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (__MSABI_LONG(0x00000001)) 3180 #define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (__MSABI_LONG(0x00000002)) 3181 3182 #define SECURITY_TRUSTED_INSTALLER_RID1 956008885 3183 #define SECURITY_TRUSTED_INSTALLER_RID2 3418522649 3184 #define SECURITY_TRUSTED_INSTALLER_RID3 1831038044 3185 #define SECURITY_TRUSTED_INSTALLER_RID4 1853292631 3186 #define SECURITY_TRUSTED_INSTALLER_RID5 2271478464 3187 3188 typedef enum { 3189 WinNullSid = 0,WinWorldSid = 1,WinLocalSid = 2,WinCreatorOwnerSid = 3, 3190 WinCreatorGroupSid = 4,WinCreatorOwnerServerSid = 5, 3191 WinCreatorGroupServerSid = 6,WinNtAuthoritySid = 7,WinDialupSid = 8, 3192 WinNetworkSid = 9,WinBatchSid = 10,WinInteractiveSid = 11, 3193 WinServiceSid = 12,WinAnonymousSid = 13,WinProxySid = 14, 3194 WinEnterpriseControllersSid = 15,WinSelfSid = 16, 3195 WinAuthenticatedUserSid = 17,WinRestrictedCodeSid = 18, 3196 WinTerminalServerSid = 19,WinRemoteLogonIdSid = 20,WinLogonIdsSid = 21, 3197 WinLocalSystemSid = 22,WinLocalServiceSid = 23,WinNetworkServiceSid = 24, 3198 WinBuiltinDomainSid = 25,WinBuiltinAdministratorsSid = 26, 3199 WinBuiltinUsersSid = 27,WinBuiltinGuestsSid = 28, 3200 WinBuiltinPowerUsersSid = 29,WinBuiltinAccountOperatorsSid = 30, 3201 WinBuiltinSystemOperatorsSid = 31,WinBuiltinPrintOperatorsSid = 32, 3202 WinBuiltinBackupOperatorsSid = 33,WinBuiltinReplicatorSid = 34, 3203 WinBuiltinPreWindows2000CompatibleAccessSid = 35, 3204 WinBuiltinRemoteDesktopUsersSid = 36, 3205 WinBuiltinNetworkConfigurationOperatorsSid = 37, 3206 WinAccountAdministratorSid = 38,WinAccountGuestSid = 39, 3207 WinAccountKrbtgtSid = 40,WinAccountDomainAdminsSid = 41, 3208 WinAccountDomainUsersSid = 42,WinAccountDomainGuestsSid = 43, 3209 WinAccountComputersSid = 44,WinAccountControllersSid = 45, 3210 WinAccountCertAdminsSid = 46,WinAccountSchemaAdminsSid = 47, 3211 WinAccountEnterpriseAdminsSid = 48,WinAccountPolicyAdminsSid = 49, 3212 WinAccountRasAndIasServersSid = 50,WinNTLMAuthenticationSid = 51, 3213 WinDigestAuthenticationSid = 52,WinSChannelAuthenticationSid = 53, 3214 WinThisOrganizationSid = 54,WinOtherOrganizationSid = 55, 3215 WinBuiltinIncomingForestTrustBuildersSid = 56, 3216 WinBuiltinPerfMonitoringUsersSid = 57,WinBuiltinPerfLoggingUsersSid = 58, 3217 WinBuiltinAuthorizationAccessSid = 59, 3218 WinBuiltinTerminalServerLicenseServersSid = 60, 3219 WinBuiltinDCOMUsersSid = 61,WinBuiltinIUsersSid = 62, 3220 WinIUserSid = 63, WinBuiltinCryptoOperatorsSid = 64, 3221 WinUntrustedLabelSid = 65, WinLowLabelSid = 66, WinMediumLabelSid = 67, 3222 WinHighLabelSid = 68, WinSystemLabelSid = 69, WinWriteRestrictedCodeSid = 70, 3223 WinCreatorOwnerRightsSid = 71, WinCacheablePrincipalsGroupSid = 72, 3224 WinNonCacheablePrincipalsGroupSid = 73, WinEnterpriseReadonlyControllersSid = 74, 3225 WinAccountReadonlyControllersSid = 75, WinBuiltinEventLogReadersGroup = 76, 3226 WinNewEnterpriseReadonlyControllersSid = 77, WinBuiltinCertSvcDComAccessGroup = 78, 3227 WinMediumPlusLabelSid = 79, WinLocalLogonSid = 80, WinConsoleLogonSid = 81, 3228 WinThisOrganizationCertificateSid = 82, WinApplicationPackageAuthoritySid = 83, 3229 WinBuiltinAnyPackageSid = 84, WinCapabilityInternetClientSid = 85, 3230 WinCapabilityInternetClientServerSid = 86, 3231 WinCapabilityPrivateNetworkClientServerSid = 87, 3232 WinCapabilityPicturesLibrarySid = 88, WinCapabilityVideosLibrarySid = 89, 3233 WinCapabilityMusicLibrarySid = 90, WinCapabilityDocumentsLibrarySid = 91, 3234 WinCapabilitySharedUserCertificatesSid = 92, WinCapabilityEnterpriseAuthenticationSid = 93, 3235 WinCapabilityRemovableStorageSid = 94, WinBuiltinRDSRemoteAccessServersSid = 95, 3236 WinBuiltinRDSEndpointServersSid = 96, WinBuiltinRDSManagementServersSid = 97, 3237 WinUserModeDriversSid = 98, WinBuiltinHyperVAdminsSid = 99, 3238 WinAccountCloneableControllersSid = 100, 3239 WinBuiltinAccessControlAssistanceOperatorsSid = 101, 3240 WinBuiltinRemoteManagementUsersSid = 102, WinAuthenticationAuthorityAssertedSid = 103, 3241 WinAuthenticationServiceAssertedSid = 104, 3242 WinLocalAccountSid = 105, 3243 WinLocalAccountAndAdministratorSid = 106, 3244 WinAccountProtectedUsersSid = 107, 3245 WinCapabilityAppointmentsSid = 108, 3246 WinCapabilityContactsSid = 109, 3247 WinAccountDefaultSystemManagedSid = 110, 3248 WinBuiltinDefaultSystemManagedGroupSid = 111, 3249 WinBuiltinStorageReplicaAdminsSid = 112, 3250 WinAccountKeyAdminsSid = 113, 3251 WinAccountEnterpriseKeyAdminsSid = 114, 3252 WinAuthenticationKeyTrustSid = 115, 3253 WinAuthenticationKeyPropertyMFASid = 116, 3254 WinAuthenticationKeyPropertyAttestationSid = 117 3255 } WELL_KNOWN_SID_TYPE; 3256 3257 #define SYSTEM_LUID { 0x3e7, 0x0 } 3258 #define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 } 3259 #define LOCALSERVICE_LUID { 0x3e5, 0x0 } 3260 #define NETWORKSERVICE_LUID { 0x3e4, 0x0 } 3261 #define IUSER_LUID { 0x3e3, 0x0 } 3262 3263 #define SE_GROUP_MANDATORY (__MSABI_LONG(0x00000001)) 3264 #define SE_GROUP_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000002)) 3265 #define SE_GROUP_ENABLED (__MSABI_LONG(0x00000004)) 3266 #define SE_GROUP_OWNER (__MSABI_LONG(0x00000008)) 3267 #define SE_GROUP_USE_FOR_DENY_ONLY (__MSABI_LONG(0x00000010)) 3268 #define SE_GROUP_INTEGRITY (__MSABI_LONG(0x00000020)) 3269 #define SE_GROUP_INTEGRITY_ENABLED (__MSABI_LONG(0x00000040)) 3270 #define SE_GROUP_LOGON_ID (__MSABI_LONG(0xC0000000)) 3271 #define SE_GROUP_RESOURCE (__MSABI_LONG(0x20000000)) 3272 3273 #define SE_GROUP_VALID_ATTRIBUTES (SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED) 3274 3275 #define ACL_REVISION (2) 3276 #define ACL_REVISION_DS (4) 3277 3278 #define ACL_REVISION1 (1) 3279 #define MIN_ACL_REVISION ACL_REVISION2 3280 #define ACL_REVISION2 (2) 3281 #define ACL_REVISION3 (3) 3282 #define ACL_REVISION4 (4) 3283 #define MAX_ACL_REVISION ACL_REVISION4 3284 3285 typedef struct _ACL { 3286 BYTE AclRevision; 3287 BYTE Sbz1; 3288 WORD AclSize; 3289 WORD AceCount; 3290 WORD Sbz2; 3291 } ACL; 3292 typedef ACL *PACL; 3293 3294 typedef struct _ACE_HEADER { 3295 BYTE AceType; 3296 BYTE AceFlags; 3297 WORD AceSize; 3298 } ACE_HEADER; 3299 typedef ACE_HEADER *PACE_HEADER; 3300 3301 #define ACCESS_MIN_MS_ACE_TYPE (0x0) 3302 #define ACCESS_ALLOWED_ACE_TYPE (0x0) 3303 #define ACCESS_DENIED_ACE_TYPE (0x1) 3304 #define SYSTEM_AUDIT_ACE_TYPE (0x2) 3305 #define SYSTEM_ALARM_ACE_TYPE (0x3) 3306 #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3) 3307 3308 #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4) 3309 #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4) 3310 3311 #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5) 3312 #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5) 3313 #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6) 3314 #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7) 3315 #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8) 3316 #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8) 3317 3318 #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8) 3319 #define ACCESS_MAX_MS_ACE_TYPE (0x8) 3320 3321 #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9) 3322 #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA) 3323 #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB) 3324 #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC) 3325 #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD) 3326 #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE) 3327 #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF) 3328 #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10) 3329 3330 #define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11) 3331 #define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE (0x12) 3332 #define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE (0x13) 3333 #define ACCESS_MAX_MS_V5_ACE_TYPE (0x13) 3334 3335 #define OBJECT_INHERIT_ACE (0x1) 3336 #define CONTAINER_INHERIT_ACE (0x2) 3337 #define NO_PROPAGATE_INHERIT_ACE (0x4) 3338 #define INHERIT_ONLY_ACE (0x8) 3339 #define INHERITED_ACE (0x10) 3340 #define VALID_INHERIT_FLAGS (0x1F) 3341 3342 #define SUCCESSFUL_ACCESS_ACE_FLAG (0x40) 3343 #define FAILED_ACCESS_ACE_FLAG (0x80) 3344 3345 typedef struct _ACCESS_ALLOWED_ACE { 3346 ACE_HEADER Header; 3347 ACCESS_MASK Mask; 3348 DWORD SidStart; 3349 } ACCESS_ALLOWED_ACE; 3350 3351 typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE; 3352 3353 typedef struct _ACCESS_DENIED_ACE { 3354 ACE_HEADER Header; 3355 ACCESS_MASK Mask; 3356 DWORD SidStart; 3357 } ACCESS_DENIED_ACE; 3358 typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE; 3359 3360 typedef struct _SYSTEM_AUDIT_ACE { 3361 ACE_HEADER Header; 3362 ACCESS_MASK Mask; 3363 DWORD SidStart; 3364 } SYSTEM_AUDIT_ACE; 3365 typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; 3366 3367 typedef struct _SYSTEM_ALARM_ACE { 3368 ACE_HEADER Header; 3369 ACCESS_MASK Mask; 3370 DWORD SidStart; 3371 } SYSTEM_ALARM_ACE; 3372 typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE; 3373 3374 typedef struct _SYSTEM_RESOURCE_ATTRIBUTE_ACE { 3375 ACE_HEADER Header; 3376 ACCESS_MASK Mask; 3377 DWORD SidStart; 3378 } SYSTEM_RESOURCE_ATTRIBUTE_ACE,*PSYSTEM_RESOURCE_ATTRIBUTE_ACE; 3379 3380 typedef struct _SYSTEM_SCOPED_POLICY_ID_ACE { 3381 ACE_HEADER Header; 3382 ACCESS_MASK Mask; 3383 DWORD SidStart; 3384 } SYSTEM_SCOPED_POLICY_ID_ACE,*PSYSTEM_SCOPED_POLICY_ID_ACE; 3385 3386 typedef struct _SYSTEM_MANDATORY_LABEL_ACE { 3387 ACE_HEADER Header; 3388 ACCESS_MASK Mask; 3389 DWORD SidStart; 3390 } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE; 3391 3392 #define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1 3393 #define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2 3394 #define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4 3395 3396 #define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP | SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP) 3397 3398 typedef struct _ACCESS_ALLOWED_OBJECT_ACE { 3399 ACE_HEADER Header; 3400 ACCESS_MASK Mask; 3401 DWORD Flags; 3402 GUID ObjectType; 3403 GUID InheritedObjectType; 3404 DWORD SidStart; 3405 } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; 3406 3407 typedef struct _ACCESS_DENIED_OBJECT_ACE { 3408 ACE_HEADER Header; 3409 ACCESS_MASK Mask; 3410 DWORD Flags; 3411 GUID ObjectType; 3412 GUID InheritedObjectType; 3413 DWORD SidStart; 3414 } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; 3415 3416 typedef struct _SYSTEM_AUDIT_OBJECT_ACE { 3417 ACE_HEADER Header; 3418 ACCESS_MASK Mask; 3419 DWORD Flags; 3420 GUID ObjectType; 3421 GUID InheritedObjectType; 3422 DWORD SidStart; 3423 } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; 3424 3425 typedef struct _SYSTEM_ALARM_OBJECT_ACE { 3426 ACE_HEADER Header; 3427 ACCESS_MASK Mask; 3428 DWORD Flags; 3429 GUID ObjectType; 3430 GUID InheritedObjectType; 3431 DWORD SidStart; 3432 } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; 3433 3434 typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { 3435 ACE_HEADER Header; 3436 ACCESS_MASK Mask; 3437 DWORD SidStart; 3438 } ACCESS_ALLOWED_CALLBACK_ACE,*PACCESS_ALLOWED_CALLBACK_ACE; 3439 3440 typedef struct _ACCESS_DENIED_CALLBACK_ACE { 3441 ACE_HEADER Header; 3442 ACCESS_MASK Mask; 3443 DWORD SidStart; 3444 } ACCESS_DENIED_CALLBACK_ACE,*PACCESS_DENIED_CALLBACK_ACE; 3445 3446 typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { 3447 ACE_HEADER Header; 3448 ACCESS_MASK Mask; 3449 DWORD SidStart; 3450 } SYSTEM_AUDIT_CALLBACK_ACE,*PSYSTEM_AUDIT_CALLBACK_ACE; 3451 3452 typedef struct _SYSTEM_ALARM_CALLBACK_ACE { 3453 ACE_HEADER Header; 3454 ACCESS_MASK Mask; 3455 DWORD SidStart; 3456 } SYSTEM_ALARM_CALLBACK_ACE,*PSYSTEM_ALARM_CALLBACK_ACE; 3457 3458 typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { 3459 ACE_HEADER Header; 3460 ACCESS_MASK Mask; 3461 DWORD Flags; 3462 GUID ObjectType; 3463 GUID InheritedObjectType; 3464 DWORD SidStart; 3465 3466 } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE,*PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; 3467 3468 typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { 3469 ACE_HEADER Header; 3470 ACCESS_MASK Mask; 3471 DWORD Flags; 3472 GUID ObjectType; 3473 GUID InheritedObjectType; 3474 DWORD SidStart; 3475 } ACCESS_DENIED_CALLBACK_OBJECT_ACE,*PACCESS_DENIED_CALLBACK_OBJECT_ACE; 3476 3477 typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { 3478 ACE_HEADER Header; 3479 ACCESS_MASK Mask; 3480 DWORD Flags; 3481 GUID ObjectType; 3482 GUID InheritedObjectType; 3483 DWORD SidStart; 3484 } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE,*PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; 3485 3486 typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { 3487 ACE_HEADER Header; 3488 ACCESS_MASK Mask; 3489 DWORD Flags; 3490 GUID ObjectType; 3491 GUID InheritedObjectType; 3492 DWORD SidStart; 3493 3494 } SYSTEM_ALARM_CALLBACK_OBJECT_ACE,*PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; 3495 3496 #define ACE_OBJECT_TYPE_PRESENT 0x1 3497 #define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2 3498 3499 typedef enum _ACL_INFORMATION_CLASS { 3500 AclRevisionInformation = 1,AclSizeInformation 3501 } ACL_INFORMATION_CLASS; 3502 3503 typedef struct _ACL_REVISION_INFORMATION { 3504 DWORD AclRevision; 3505 } ACL_REVISION_INFORMATION; 3506 typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION; 3507 3508 typedef struct _ACL_SIZE_INFORMATION { 3509 DWORD AceCount; 3510 DWORD AclBytesInUse; 3511 DWORD AclBytesFree; 3512 } ACL_SIZE_INFORMATION; 3513 typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION; 3514 3515 #define SECURITY_DESCRIPTOR_REVISION (1) 3516 #define SECURITY_DESCRIPTOR_REVISION1 (1) 3517 3518 #define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR)) 3519 3520 typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL; 3521 3522 #define SE_OWNER_DEFAULTED (0x0001) 3523 #define SE_GROUP_DEFAULTED (0x0002) 3524 #define SE_DACL_PRESENT (0x0004) 3525 #define SE_DACL_DEFAULTED (0x0008) 3526 #define SE_SACL_PRESENT (0x0010) 3527 #define SE_SACL_DEFAULTED (0x0020) 3528 #define SE_DACL_AUTO_INHERIT_REQ (0x0100) 3529 #define SE_SACL_AUTO_INHERIT_REQ (0x0200) 3530 #define SE_DACL_AUTO_INHERITED (0x0400) 3531 #define SE_SACL_AUTO_INHERITED (0x0800) 3532 #define SE_DACL_PROTECTED (0x1000) 3533 #define SE_SACL_PROTECTED (0x2000) 3534 #define SE_RM_CONTROL_VALID (0x4000) 3535 #define SE_SELF_RELATIVE (0x8000) 3536 3537 typedef struct _SECURITY_DESCRIPTOR_RELATIVE { 3538 BYTE Revision; 3539 BYTE Sbz1; 3540 SECURITY_DESCRIPTOR_CONTROL Control; 3541 DWORD Owner; 3542 DWORD Group; 3543 DWORD Sacl; 3544 DWORD Dacl; 3545 } SECURITY_DESCRIPTOR_RELATIVE,*PISECURITY_DESCRIPTOR_RELATIVE; 3546 3547 typedef struct _SECURITY_DESCRIPTOR { 3548 BYTE Revision; 3549 BYTE Sbz1; 3550 SECURITY_DESCRIPTOR_CONTROL Control; 3551 PSID Owner; 3552 PSID Group; 3553 PACL Sacl; 3554 PACL Dacl; 3555 } SECURITY_DESCRIPTOR,*PISECURITY_DESCRIPTOR; 3556 3557 typedef struct _OBJECT_TYPE_LIST { 3558 WORD Level; 3559 WORD Sbz; 3560 GUID *ObjectType; 3561 } OBJECT_TYPE_LIST,*POBJECT_TYPE_LIST; 3562 3563 #define ACCESS_OBJECT_GUID 0 3564 #define ACCESS_PROPERTY_SET_GUID 1 3565 #define ACCESS_PROPERTY_GUID 2 3566 3567 #define ACCESS_MAX_LEVEL 4 3568 3569 typedef enum _AUDIT_EVENT_TYPE { 3570 AuditEventObjectAccess,AuditEventDirectoryServiceAccess 3571 } AUDIT_EVENT_TYPE,*PAUDIT_EVENT_TYPE; 3572 3573 #define AUDIT_ALLOW_NO_PRIVILEGE 0x1 3574 3575 #define ACCESS_DS_SOURCE_A "DS" 3576 #define ACCESS_DS_SOURCE_W L"DS" 3577 #define ACCESS_DS_OBJECT_TYPE_NAME_A "Directory Service Object" 3578 #define ACCESS_DS_OBJECT_TYPE_NAME_W L"Directory Service Object" 3579 3580 #define SE_PRIVILEGE_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000001)) 3581 #define SE_PRIVILEGE_ENABLED (__MSABI_LONG(0x00000002)) 3582 #define SE_PRIVILEGE_REMOVED (0X00000004L) 3583 #define SE_PRIVILEGE_USED_FOR_ACCESS (__MSABI_LONG(0x80000000)) 3584 3585 #define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS) 3586 3587 #define PRIVILEGE_SET_ALL_NECESSARY (1) 3588 3589 typedef struct _PRIVILEGE_SET { 3590 DWORD PrivilegeCount; 3591 DWORD Control; 3592 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; 3593 } PRIVILEGE_SET,*PPRIVILEGE_SET; 3594 3595 #define ACCESS_REASON_TYPE_MASK 0x00ff0000 3596 #define ACCESS_REASON_DATA_MASK 0x0000ffff 3597 3598 #define ACCESS_REASON_STAGING_MASK 0x80000000 3599 #define ACCESS_REASON_EXDATA_MASK 0x7f000000 3600 3601 typedef enum _ACCESS_REASON_TYPE { 3602 AccessReasonNone = 0x00000000, 3603 AccessReasonAllowedAce = 0x00010000, 3604 AccessReasonDeniedAce = 0x00020000, 3605 AccessReasonAllowedParentAce = 0x00030000, 3606 AccessReasonDeniedParentAce = 0x00040000, 3607 AccessReasonNotGrantedByCape = 0x00050000, 3608 AccessReasonNotGrantedByParentCape = 0x00060000, 3609 AccessReasonNotGrantedToAppContainer = 0x00070000, 3610 AccessReasonMissingPrivilege = 0x00100000, 3611 AccessReasonFromPrivilege = 0x00200000, 3612 AccessReasonIntegrityLevel = 0x00300000, 3613 AccessReasonOwnership = 0x00400000, 3614 AccessReasonNullDacl = 0x00500000, 3615 AccessReasonEmptyDacl = 0x00600000, 3616 AccessReasonNoSD = 0x00700000, 3617 AccessReasonNoGrant = 0x00800000 3618 } ACCESS_REASON_TYPE; 3619 typedef DWORD ACCESS_REASON; 3620 3621 typedef struct _ACCESS_REASONS { 3622 ACCESS_REASON Data[32]; 3623 } ACCESS_REASONS,*PACCESS_REASONS; 3624 3625 #define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 3626 #define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 3627 #define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 3628 3629 typedef struct _SE_SECURITY_DESCRIPTOR { 3630 DWORD Size; 3631 DWORD Flags; 3632 PSECURITY_DESCRIPTOR SecurityDescriptor; 3633 } SE_SECURITY_DESCRIPTOR,*PSE_SECURITY_DESCRIPTOR; 3634 3635 typedef struct _SE_ACCESS_REQUEST { 3636 DWORD Size; 3637 PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; 3638 ACCESS_MASK DesiredAccess; 3639 ACCESS_MASK PreviouslyGrantedAccess; 3640 PSID PrincipalSelfSid; 3641 PGENERIC_MAPPING GenericMapping; 3642 DWORD ObjectTypeListCount; 3643 POBJECT_TYPE_LIST ObjectTypeList; 3644 } SE_ACCESS_REQUEST,*PSE_ACCESS_REQUEST; 3645 3646 typedef struct _SE_ACCESS_REPLY { 3647 DWORD Size; 3648 DWORD ResultListCount; 3649 PACCESS_MASK GrantedAccess; 3650 PDWORD AccessStatus; 3651 PACCESS_REASONS AccessReason; 3652 PPRIVILEGE_SET *Privileges; 3653 } SE_ACCESS_REPLY,*PSE_ACCESS_REPLY; 3654 3655 #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") 3656 #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") 3657 #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") 3658 #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") 3659 #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") 3660 #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") 3661 #define SE_TCB_NAME TEXT("SeTcbPrivilege") 3662 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") 3663 #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") 3664 #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") 3665 #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") 3666 #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") 3667 #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") 3668 #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") 3669 #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") 3670 #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") 3671 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege") 3672 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege") 3673 #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") 3674 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege") 3675 #define SE_AUDIT_NAME TEXT("SeAuditPrivilege") 3676 #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") 3677 #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") 3678 #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") 3679 #define SE_UNDOCK_NAME TEXT("SeUndockPrivilege") 3680 #define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege") 3681 #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") 3682 #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") 3683 #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") 3684 #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") 3685 #define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege") 3686 #define SE_RELABEL_NAME TEXT("SeRelabelPrivilege") 3687 #define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege") 3688 #define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") 3689 #define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege") 3690 3691 typedef enum _SECURITY_IMPERSONATION_LEVEL { 3692 SecurityAnonymous,SecurityIdentification,SecurityImpersonation,SecurityDelegation 3693 } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; 3694 3695 #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation 3696 #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous 3697 #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation 3698 #define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL)) 3699 3700 #define TOKEN_ASSIGN_PRIMARY (0x0001) 3701 #define TOKEN_DUPLICATE (0x0002) 3702 #define TOKEN_IMPERSONATE (0x0004) 3703 #define TOKEN_QUERY (0x0008) 3704 #define TOKEN_QUERY_SOURCE (0x0010) 3705 #define TOKEN_ADJUST_PRIVILEGES (0x0020) 3706 #define TOKEN_ADJUST_GROUPS (0x0040) 3707 #define TOKEN_ADJUST_DEFAULT (0x0080) 3708 #define TOKEN_ADJUST_SESSIONID (0x0100) 3709 3710 #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) 3711 #define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) 3712 #define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) 3713 3714 #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT) 3715 3716 #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) 3717 3718 typedef enum _TOKEN_TYPE { 3719 TokenPrimary = 1,TokenImpersonation 3720 } TOKEN_TYPE; 3721 typedef TOKEN_TYPE *PTOKEN_TYPE; 3722 3723 typedef enum _TOKEN_ELEVATION_TYPE { 3724 TokenElevationTypeDefault = 1, 3725 TokenElevationTypeFull, 3726 TokenElevationTypeLimited 3727 } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; 3728 3729 typedef enum _TOKEN_INFORMATION_CLASS { 3730 TokenUser = 1, 3731 TokenGroups, 3732 TokenPrivileges, 3733 TokenOwner, 3734 TokenPrimaryGroup, 3735 TokenDefaultDacl, 3736 TokenSource, 3737 TokenType, 3738 TokenImpersonationLevel, 3739 TokenStatistics, 3740 TokenRestrictedSids, 3741 TokenSessionId, 3742 TokenGroupsAndPrivileges, 3743 TokenSessionReference, 3744 TokenSandBoxInert, 3745 TokenAuditPolicy, 3746 TokenOrigin, 3747 TokenElevationType, 3748 TokenLinkedToken, 3749 TokenElevation, 3750 TokenHasRestrictions, 3751 TokenAccessInformation, 3752 TokenVirtualizationAllowed, 3753 TokenVirtualizationEnabled, 3754 TokenIntegrityLevel, 3755 TokenUIAccess, 3756 TokenMandatoryPolicy, 3757 TokenLogonSid, 3758 TokenIsAppContainer, 3759 TokenCapabilities, 3760 TokenAppContainerSid, 3761 TokenAppContainerNumber, 3762 TokenUserClaimAttributes, 3763 TokenDeviceClaimAttributes, 3764 TokenRestrictedUserClaimAttributes, 3765 TokenRestrictedDeviceClaimAttributes, 3766 TokenDeviceGroups, 3767 TokenRestrictedDeviceGroups, 3768 TokenSecurityAttributes, 3769 TokenIsRestricted, 3770 MaxTokenInfoClass 3771 } TOKEN_INFORMATION_CLASS,*PTOKEN_INFORMATION_CLASS; 3772 3773 typedef struct _TOKEN_USER { 3774 SID_AND_ATTRIBUTES User; 3775 } TOKEN_USER,*PTOKEN_USER; 3776 3777 typedef struct _TOKEN_GROUPS { 3778 DWORD GroupCount; 3779 #ifdef __WIDL__ 3780 [size_is (GroupCount)] SID_AND_ATTRIBUTES Groups[*]; 3781 #else 3782 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; 3783 #endif 3784 } TOKEN_GROUPS,*PTOKEN_GROUPS; 3785 3786 typedef struct _TOKEN_PRIVILEGES { 3787 DWORD PrivilegeCount; 3788 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; 3789 } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES; 3790 3791 typedef struct _TOKEN_OWNER { 3792 PSID Owner; 3793 } TOKEN_OWNER,*PTOKEN_OWNER; 3794 3795 typedef struct _TOKEN_PRIMARY_GROUP { 3796 PSID PrimaryGroup; 3797 } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; 3798 3799 typedef struct _TOKEN_DEFAULT_DACL { 3800 PACL DefaultDacl; 3801 } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; 3802 3803 typedef struct _TOKEN_USER_CLAIMS { 3804 PCLAIMS_BLOB UserClaims; 3805 } TOKEN_USER_CLAIMS,*PTOKEN_USER_CLAIMS; 3806 3807 typedef struct _TOKEN_DEVICE_CLAIMS { 3808 PCLAIMS_BLOB DeviceClaims; 3809 } TOKEN_DEVICE_CLAIMS,*PTOKEN_DEVICE_CLAIMS; 3810 3811 typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { 3812 DWORD SidCount; 3813 DWORD SidLength; 3814 PSID_AND_ATTRIBUTES Sids; 3815 DWORD RestrictedSidCount; 3816 DWORD RestrictedSidLength; 3817 PSID_AND_ATTRIBUTES RestrictedSids; 3818 DWORD PrivilegeCount; 3819 DWORD PrivilegeLength; 3820 PLUID_AND_ATTRIBUTES Privileges; 3821 LUID AuthenticationId; 3822 } TOKEN_GROUPS_AND_PRIVILEGES,*PTOKEN_GROUPS_AND_PRIVILEGES; 3823 3824 typedef struct _TOKEN_LINKED_TOKEN { 3825 HANDLE LinkedToken; 3826 } TOKEN_LINKED_TOKEN,*PTOKEN_LINKED_TOKEN; 3827 3828 typedef struct _TOKEN_ELEVATION { 3829 DWORD TokenIsElevated; 3830 } TOKEN_ELEVATION,*PTOKEN_ELEVATION; 3831 3832 typedef struct _TOKEN_MANDATORY_LABEL { 3833 SID_AND_ATTRIBUTES Label; 3834 } TOKEN_MANDATORY_LABEL,*PTOKEN_MANDATORY_LABEL; 3835 3836 #define TOKEN_MANDATORY_POLICY_OFF 0x0 3837 #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 3838 #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 3839 3840 #define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) 3841 3842 typedef struct _TOKEN_MANDATORY_POLICY { 3843 DWORD Policy; 3844 } TOKEN_MANDATORY_POLICY,*PTOKEN_MANDATORY_POLICY; 3845 3846 typedef struct _TOKEN_ACCESS_INFORMATION { 3847 PSID_AND_ATTRIBUTES_HASH SidHash; 3848 PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; 3849 PTOKEN_PRIVILEGES Privileges; 3850 LUID AuthenticationId; 3851 TOKEN_TYPE TokenType; 3852 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 3853 TOKEN_MANDATORY_POLICY MandatoryPolicy; 3854 DWORD Flags; 3855 DWORD AppContainerNumber; 3856 PSID PackageSid; 3857 PSID_AND_ATTRIBUTES_HASH CapabilitiesHash; 3858 } TOKEN_ACCESS_INFORMATION,*PTOKEN_ACCESS_INFORMATION; 3859 3860 #define POLICY_AUDIT_SUBCATEGORY_COUNT (56) 3861 3862 typedef struct _TOKEN_AUDIT_POLICY { 3863 UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; 3864 } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; 3865 3866 #define TOKEN_SOURCE_LENGTH 8 3867 3868 typedef struct _TOKEN_SOURCE { 3869 CHAR SourceName[TOKEN_SOURCE_LENGTH]; 3870 LUID SourceIdentifier; 3871 } TOKEN_SOURCE,*PTOKEN_SOURCE; 3872 3873 typedef struct _TOKEN_STATISTICS { 3874 LUID TokenId; 3875 LUID AuthenticationId; 3876 LARGE_INTEGER ExpirationTime; 3877 TOKEN_TYPE TokenType; 3878 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 3879 DWORD DynamicCharged; 3880 DWORD DynamicAvailable; 3881 DWORD GroupCount; 3882 DWORD PrivilegeCount; 3883 LUID ModifiedId; 3884 } TOKEN_STATISTICS,*PTOKEN_STATISTICS; 3885 3886 typedef struct _TOKEN_CONTROL { 3887 LUID TokenId; 3888 LUID AuthenticationId; 3889 LUID ModifiedId; 3890 TOKEN_SOURCE TokenSource; 3891 } TOKEN_CONTROL,*PTOKEN_CONTROL; 3892 3893 typedef struct _TOKEN_ORIGIN { 3894 LUID OriginatingLogonSession; 3895 } TOKEN_ORIGIN,*PTOKEN_ORIGIN; 3896 3897 typedef enum _MANDATORY_LEVEL { 3898 MandatoryLevelUntrusted = 0, 3899 MandatoryLevelLow, 3900 MandatoryLevelMedium, 3901 MandatoryLevelHigh, 3902 MandatoryLevelSystem, 3903 MandatoryLevelSecureProcess, 3904 MandatoryLevelCount 3905 } MANDATORY_LEVEL,*PMANDATORY_LEVEL; 3906 3907 typedef struct _TOKEN_APPCONTAINER_INFORMATION { 3908 PSID TokenAppContainer; 3909 } TOKEN_APPCONTAINER_INFORMATION,*PTOKEN_APPCONTAINER_INFORMATION; 3910 3911 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID 0x00 3912 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 0x01 3913 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 0x02 3914 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING 0x03 3915 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN 0x04 3916 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID 0x05 3917 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x06 3918 3919 typedef struct _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE { 3920 DWORD64 Version; 3921 PWSTR Name; 3922 } CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE,*PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE; 3923 3924 typedef struct _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE { 3925 PVOID pValue; 3926 DWORD ValueLength; 3927 } CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE, *PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE; 3928 3929 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10 3930 #define CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x0001 3931 #define CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x0002 3932 #define CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY 0x0004 3933 #define CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x0008 3934 #define CLAIM_SECURITY_ATTRIBUTE_DISABLED 0x0010 3935 #define CLAIM_SECURITY_ATTRIBUTE_MANDATORY 0x0020 3936 3937 #define CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS (CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE | CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY | CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | CLAIM_SECURITY_ATTRIBUTE_DISABLED | CLAIM_SECURITY_ATTRIBUTE_MANDATORY) 3938 #define CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS 0xffff0000 3939 3940 typedef struct _CLAIM_SECURITY_ATTRIBUTE_V1 { 3941 PWSTR Name; 3942 WORD ValueType; 3943 WORD Reserved; 3944 DWORD Flags; 3945 DWORD ValueCount; 3946 union { 3947 PLONG64 pInt64; 3948 PDWORD64 pUint64; 3949 PWSTR *ppString; 3950 PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE pFqbn; 3951 PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE pOctetString; 3952 } Values; 3953 } CLAIM_SECURITY_ATTRIBUTE_V1,*PCLAIM_SECURITY_ATTRIBUTE_V1; 3954 3955 typedef struct _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 { 3956 DWORD Name; 3957 WORD ValueType; 3958 WORD Reserved; 3959 DWORD Flags; 3960 DWORD ValueCount; 3961 union { 3962 DWORD pInt64[ANYSIZE_ARRAY]; 3963 DWORD pUint64[ANYSIZE_ARRAY]; 3964 DWORD ppString[ANYSIZE_ARRAY]; 3965 DWORD pFqbn[ANYSIZE_ARRAY]; 3966 DWORD pOctetString[ANYSIZE_ARRAY]; 3967 } Values; 3968 } CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1,*PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1; 3969 3970 #define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 1 3971 3972 #define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 3973 3974 typedef struct _CLAIM_SECURITY_ATTRIBUTES_INFORMATION { 3975 WORD Version; 3976 WORD Reserved; 3977 DWORD AttributeCount; 3978 union { 3979 PCLAIM_SECURITY_ATTRIBUTE_V1 pAttributeV1; 3980 } Attribute; 3981 } CLAIM_SECURITY_ATTRIBUTES_INFORMATION,*PCLAIM_SECURITY_ATTRIBUTES_INFORMATION; 3982 3983 #define SECURITY_DYNAMIC_TRACKING (TRUE) 3984 #define SECURITY_STATIC_TRACKING (FALSE) 3985 3986 typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; 3987 3988 typedef struct _SECURITY_QUALITY_OF_SERVICE { 3989 DWORD Length; 3990 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 3991 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; 3992 BOOLEAN EffectiveOnly; 3993 } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; 3994 3995 typedef struct _SE_IMPERSONATION_STATE { 3996 PACCESS_TOKEN Token; 3997 BOOLEAN CopyOnOpen; 3998 BOOLEAN EffectiveOnly; 3999 SECURITY_IMPERSONATION_LEVEL Level; 4000 } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; 4001 4002 #define DISABLE_MAX_PRIVILEGE 0x1 4003 #define SANDBOX_INERT 0x2 4004 #define LUA_TOKEN 0x4 4005 #define WRITE_RESTRICTED 0x8 4006 4007 typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION; 4008 4009 #define OWNER_SECURITY_INFORMATION (__MSABI_LONG(0x00000001)) 4010 #define GROUP_SECURITY_INFORMATION (__MSABI_LONG(0x00000002)) 4011 #define DACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000004)) 4012 #define SACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000008)) 4013 #define LABEL_SECURITY_INFORMATION (__MSABI_LONG(0x00000010)) 4014 #define ATTRIBUTE_SECURITY_INFORMATION (__MSABI_LONG(0x00000020)) 4015 #define SCOPE_SECURITY_INFORMATION (__MSABI_LONG(0x00000040)) 4016 #define BACKUP_SECURITY_INFORMATION (__MSABI_LONG(0x00010000)) 4017 4018 #define PROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x80000000)) 4019 #define PROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x40000000)) 4020 #define UNPROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x20000000)) 4021 #define UNPROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x10000000)) 4022 4023 typedef enum _SE_LEARNING_MODE_DATA_TYPE { 4024 SeLearningModeInvalidType = 0, 4025 SeLearningModeSettings, 4026 SeLearningModeMax 4027 } SE_LEARNING_MODE_DATA_TYPE; 4028 4029 #define SE_LEARNING_MODE_FLAG_PERMISSIVE 0x00000001 4030 4031 typedef struct _SECURITY_CAPABILITIES { 4032 PSID AppContainerSid; 4033 PSID_AND_ATTRIBUTES Capabilities; 4034 DWORD CapabilityCount; 4035 DWORD Reserved; 4036 } SECURITY_CAPABILITIES,*PSECURITY_CAPABILITIES,*LPSECURITY_CAPABILITIES; 4037 4038 #define PROCESS_TERMINATE (0x0001) 4039 #define PROCESS_CREATE_THREAD (0x0002) 4040 #define PROCESS_SET_SESSIONID (0x0004) 4041 #define PROCESS_VM_OPERATION (0x0008) 4042 #define PROCESS_VM_READ (0x0010) 4043 #define PROCESS_VM_WRITE (0x0020) 4044 #define PROCESS_DUP_HANDLE (0x0040) 4045 #define PROCESS_CREATE_PROCESS (0x0080) 4046 #define PROCESS_SET_QUOTA (0x0100) 4047 #define PROCESS_SET_INFORMATION (0x0200) 4048 #define PROCESS_QUERY_INFORMATION (0x0400) 4049 #define PROCESS_SUSPEND_RESUME (0x0800) 4050 #define PROCESS_QUERY_LIMITED_INFORMATION (0x1000) 4051 4052 #if NTDDI_VERSION >= 0x06000000 4053 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff) 4054 #else 4055 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xfff) 4056 #endif 4057 4058 #ifdef _WIN64 4059 #define MAXIMUM_PROC_PER_GROUP 64 4060 #else 4061 #define MAXIMUM_PROC_PER_GROUP 32 4062 #endif 4063 4064 #define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP 4065 4066 #define THREAD_TERMINATE (0x0001) 4067 #define THREAD_SUSPEND_RESUME (0x0002) 4068 #define THREAD_GET_CONTEXT (0x0008) 4069 #define THREAD_SET_CONTEXT (0x0010) 4070 #define THREAD_SET_INFORMATION (0x0020) 4071 #define THREAD_QUERY_INFORMATION (0x0040) 4072 #define THREAD_SET_THREAD_TOKEN (0x0080) 4073 #define THREAD_IMPERSONATE (0x0100) 4074 #define THREAD_DIRECT_IMPERSONATION (0x0200) 4075 #define THREAD_SET_LIMITED_INFORMATION (0x0400) 4076 #define THREAD_QUERY_LIMITED_INFORMATION (0x0800) 4077 4078 #if NTDDI_VERSION >= 0x06000000 4079 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff) 4080 #else 4081 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3ff) 4082 #endif 4083 4084 #define JOB_OBJECT_ASSIGN_PROCESS (0x0001) 4085 #define JOB_OBJECT_SET_ATTRIBUTES (0x0002) 4086 #define JOB_OBJECT_QUERY (0x0004) 4087 #define JOB_OBJECT_TERMINATE (0x0008) 4088 #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) 4089 #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F) 4090 4091 typedef struct _JOB_SET_ARRAY { 4092 HANDLE JobHandle; 4093 DWORD MemberLevel; 4094 DWORD Flags; 4095 } JOB_SET_ARRAY,*PJOB_SET_ARRAY; 4096 4097 #define FLS_MAXIMUM_AVAILABLE 128 4098 #define TLS_MINIMUM_AVAILABLE 64 4099 4100 #ifndef __MINGW_EXCPT_DEFINE_PSDK 4101 typedef struct _EXCEPTION_REGISTRATION_RECORD { 4102 __C89_NAMELESS union { 4103 struct _EXCEPTION_REGISTRATION_RECORD *Next; 4104 struct _EXCEPTION_REGISTRATION_RECORD *prev; 4105 }; 4106 __C89_NAMELESS union { 4107 PEXCEPTION_ROUTINE Handler; 4108 PEXCEPTION_ROUTINE handler; 4109 }; 4110 } EXCEPTION_REGISTRATION_RECORD; 4111 4112 typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD; 4113 4114 typedef EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION; 4115 typedef PEXCEPTION_REGISTRATION_RECORD PEXCEPTION_REGISTRATION; 4116 #endif 4117 4118 #ifndef _NT_TIB_DEFINED 4119 #define _NT_TIB_DEFINED 4120 __C89_NAMELESS typedef struct _NT_TIB { 4121 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; 4122 PVOID StackBase; 4123 PVOID StackLimit; 4124 PVOID SubSystemTib; 4125 __C89_NAMELESS union { 4126 PVOID FiberData; 4127 DWORD Version; 4128 }; 4129 PVOID ArbitraryUserPointer; 4130 struct _NT_TIB *Self; 4131 } NT_TIB; 4132 typedef NT_TIB *PNT_TIB; 4133 #endif /* _NT_TIB_DEFINED */ 4134 4135 __C89_NAMELESS typedef struct _NT_TIB32 { 4136 DWORD ExceptionList; 4137 DWORD StackBase; 4138 DWORD StackLimit; 4139 DWORD SubSystemTib; 4140 __C89_NAMELESS union { 4141 DWORD FiberData; 4142 DWORD Version; 4143 }; 4144 DWORD ArbitraryUserPointer; 4145 DWORD Self; 4146 } NT_TIB32,*PNT_TIB32; 4147 4148 __C89_NAMELESS typedef struct _NT_TIB64 { 4149 DWORD64 ExceptionList; 4150 DWORD64 StackBase; 4151 DWORD64 StackLimit; 4152 DWORD64 SubSystemTib; 4153 __C89_NAMELESS union { 4154 DWORD64 FiberData; 4155 DWORD Version; 4156 }; 4157 DWORD64 ArbitraryUserPointer; 4158 DWORD64 Self; 4159 } NT_TIB64,*PNT_TIB64; 4160 4161 #if !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) 4162 #define WX86 4163 #endif 4164 4165 #define THREAD_BASE_PRIORITY_LOWRT 15 4166 #define THREAD_BASE_PRIORITY_MAX 2 4167 #define THREAD_BASE_PRIORITY_MIN (-2) 4168 #define THREAD_BASE_PRIORITY_IDLE (-15) 4169 4170 typedef struct _UMS_CREATE_THREAD_ATTRIBUTES { 4171 DWORD UmsVersion; 4172 PVOID UmsContext; 4173 PVOID UmsCompletionList; 4174 } UMS_CREATE_THREAD_ATTRIBUTES,*PUMS_CREATE_THREAD_ATTRIBUTES; 4175 4176 typedef struct _QUOTA_LIMITS { 4177 SIZE_T PagedPoolLimit; 4178 SIZE_T NonPagedPoolLimit; 4179 SIZE_T MinimumWorkingSetSize; 4180 SIZE_T MaximumWorkingSetSize; 4181 SIZE_T PagefileLimit; 4182 LARGE_INTEGER TimeLimit; 4183 } QUOTA_LIMITS,*PQUOTA_LIMITS; 4184 4185 #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 4186 #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 4187 #define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 4188 #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 4189 #define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 4190 4191 typedef union _RATE_QUOTA_LIMIT { 4192 DWORD RateData; 4193 __C89_NAMELESS struct { 4194 DWORD RatePercent : 7; 4195 DWORD Reserved0 : 25; 4196 } DUMMYSTRUCTNAME; 4197 } RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT; 4198 4199 typedef struct _QUOTA_LIMITS_EX { 4200 SIZE_T PagedPoolLimit; 4201 SIZE_T NonPagedPoolLimit; 4202 SIZE_T MinimumWorkingSetSize; 4203 SIZE_T MaximumWorkingSetSize; 4204 SIZE_T PagefileLimit; 4205 LARGE_INTEGER TimeLimit; 4206 SIZE_T WorkingSetLimit; 4207 SIZE_T Reserved2; 4208 SIZE_T Reserved3; 4209 SIZE_T Reserved4; 4210 DWORD Flags; 4211 RATE_QUOTA_LIMIT CpuRateLimit; 4212 } QUOTA_LIMITS_EX,*PQUOTA_LIMITS_EX; 4213 4214 typedef struct _IO_COUNTERS { 4215 ULONGLONG ReadOperationCount; 4216 ULONGLONG WriteOperationCount; 4217 ULONGLONG OtherOperationCount; 4218 ULONGLONG ReadTransferCount; 4219 ULONGLONG WriteTransferCount; 4220 ULONGLONG OtherTransferCount; 4221 } IO_COUNTERS; 4222 typedef IO_COUNTERS *PIO_COUNTERS; 4223 4224 #define MAX_HW_COUNTERS 16 4225 #define THREAD_PROFILING_FLAG_DISPATCH 0x1 4226 4227 typedef enum _HARDWARE_COUNTER_TYPE { 4228 PMCCounter, 4229 MaxHardwareCounterType 4230 } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE; 4231 4232 typedef enum _PROCESS_MITIGATION_POLICY { 4233 ProcessDEPPolicy, 4234 ProcessASLRPolicy, 4235 ProcessDynamicCodePolicy, 4236 ProcessStrictHandleCheckPolicy, 4237 ProcessSystemCallDisablePolicy, 4238 ProcessMitigationOptionsMask, 4239 ProcessExtensionPointDisablePolicy, 4240 ProcessControlFlowGuardPolicy, 4241 ProcessSignaturePolicy, 4242 ProcessFontDisablePolicy, 4243 ProcessImageLoadPolicy, 4244 MaxProcessMitigationPolicy 4245 } PROCESS_MITIGATION_POLICY,*PPROCESS_MITIGATION_POLICY; 4246 4247 typedef struct _PROCESS_MITIGATION_ASLR_POLICY { 4248 __C89_NAMELESS union { 4249 DWORD Flags; 4250 __C89_NAMELESS struct { 4251 DWORD EnableBottomUpRandomization : 1; 4252 DWORD EnableForceRelocateImages : 1; 4253 DWORD EnableHighEntropy : 1; 4254 DWORD DisallowStrippedImages : 1; 4255 DWORD ReservedFlags : 28; 4256 }; 4257 }; 4258 } PROCESS_MITIGATION_ASLR_POLICY,*PPROCESS_MITIGATION_ASLR_POLICY; 4259 4260 typedef struct _PROCESS_MITIGATION_DEP_POLICY { 4261 __C89_NAMELESS union { 4262 DWORD Flags; 4263 __C89_NAMELESS struct { 4264 DWORD Enable : 1; 4265 DWORD DisableAtlThunkEmulation : 1; 4266 DWORD ReservedFlags : 30; 4267 }; 4268 }; 4269 BOOLEAN Permanent; 4270 } PROCESS_MITIGATION_DEP_POLICY,*PPROCESS_MITIGATION_DEP_POLICY; 4271 4272 typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY { 4273 __C89_NAMELESS union { 4274 DWORD Flags; 4275 __C89_NAMELESS struct { 4276 DWORD RaiseExceptionOnInvalidHandleReference : 1; 4277 DWORD HandleExceptionsPermanentlyEnabled : 1; 4278 DWORD ReservedFlags : 30; 4279 }; 4280 }; 4281 } PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY,*PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY; 4282 4283 typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY { 4284 __C89_NAMELESS union { 4285 DWORD Flags; 4286 __C89_NAMELESS struct { 4287 DWORD DisallowWin32kSystemCalls : 1; 4288 DWORD ReservedFlags : 31; 4289 }; 4290 }; 4291 } PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY,*PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY; 4292 4293 typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY { 4294 __C89_NAMELESS union { 4295 DWORD Flags; 4296 __C89_NAMELESS struct { 4297 DWORD DisableExtensionPoints : 1; 4298 DWORD ReservedFlags : 31; 4299 }; 4300 }; 4301 } PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY,*PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY; 4302 4303 typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY { 4304 __C89_NAMELESS union { 4305 DWORD Flags; 4306 __C89_NAMELESS struct { 4307 DWORD EnableControlFlowGuard :1; 4308 DWORD EnableExportSuppression :1; 4309 DWORD StrictMode :1; 4310 DWORD ReservedFlags :29; 4311 }; 4312 }; 4313 } PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY, *PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY; 4314 4315 typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY { 4316 __C89_NAMELESS union { 4317 DWORD Flags; 4318 __C89_NAMELESS struct { 4319 DWORD MicrosoftSignedOnly :1; 4320 DWORD StoreSignedOnly :1; 4321 DWORD MitigationOptIn :1; 4322 DWORD ReservedFlags :29; 4323 }; 4324 }; 4325 } PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY; 4326 4327 typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY { 4328 __C89_NAMELESS union { 4329 DWORD Flags; 4330 __C89_NAMELESS struct { 4331 DWORD ProhibitDynamicCode :1; 4332 DWORD AllowThreadOptOut :1; 4333 DWORD AllowRemoteDowngrade :1; 4334 DWORD ReservedFlags :30; 4335 }; 4336 }; 4337 } PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY; 4338 4339 typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY { 4340 __C89_NAMELESS union { 4341 DWORD Flags; 4342 __C89_NAMELESS struct { 4343 DWORD DisableNonSystemFonts :1; 4344 DWORD AuditNonSystemFontLoading :1; 4345 DWORD ReservedFlags :30; 4346 }; 4347 }; 4348 } PROCESS_MITIGATION_FONT_DISABLE_POLICY, *PPROCESS_MITIGATION_FONT_DISABLE_POLICY; 4349 4350 typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY { 4351 __C89_NAMELESS union { 4352 DWORD Flags; 4353 __C89_NAMELESS struct { 4354 DWORD NoRemoteImages :1; 4355 DWORD NoLowMandatoryLabelImages :1; 4356 DWORD PreferSystem32Images :1; 4357 DWORD ReservedFlags :29; 4358 }; 4359 }; 4360 } PROCESS_MITIGATION_IMAGE_LOAD_POLICY, *PPROCESS_MITIGATION_IMAGE_LOAD_POLICY; 4361 4362 typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { 4363 LARGE_INTEGER TotalUserTime; 4364 LARGE_INTEGER TotalKernelTime; 4365 LARGE_INTEGER ThisPeriodTotalUserTime; 4366 LARGE_INTEGER ThisPeriodTotalKernelTime; 4367 DWORD TotalPageFaultCount; 4368 DWORD TotalProcesses; 4369 DWORD ActiveProcesses; 4370 DWORD TotalTerminatedProcesses; 4371 } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; 4372 4373 typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION { 4374 LARGE_INTEGER PerProcessUserTimeLimit; 4375 LARGE_INTEGER PerJobUserTimeLimit; 4376 DWORD LimitFlags; 4377 SIZE_T MinimumWorkingSetSize; 4378 SIZE_T MaximumWorkingSetSize; 4379 DWORD ActiveProcessLimit; 4380 ULONG_PTR Affinity; 4381 DWORD PriorityClass; 4382 DWORD SchedulingClass; 4383 } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION; 4384 4385 typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION { 4386 JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; 4387 IO_COUNTERS IoInfo; 4388 SIZE_T ProcessMemoryLimit; 4389 SIZE_T JobMemoryLimit; 4390 SIZE_T PeakProcessMemoryUsed; 4391 SIZE_T PeakJobMemoryUsed; 4392 } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; 4393 4394 typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { 4395 DWORD NumberOfAssignedProcesses; 4396 DWORD NumberOfProcessIdsInList; 4397 ULONG_PTR ProcessIdList[1]; 4398 } JOBOBJECT_BASIC_PROCESS_ID_LIST,*PJOBOBJECT_BASIC_PROCESS_ID_LIST; 4399 4400 typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { 4401 DWORD UIRestrictionsClass; 4402 } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS; 4403 4404 typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { 4405 DWORD SecurityLimitFlags; 4406 HANDLE JobToken; 4407 PTOKEN_GROUPS SidsToDisable; 4408 PTOKEN_PRIVILEGES PrivilegesToDelete; 4409 PTOKEN_GROUPS RestrictedSids; 4410 } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION; 4411 4412 typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { 4413 DWORD EndOfJobTimeAction; 4414 } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; 4415 4416 typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { 4417 PVOID CompletionKey; 4418 HANDLE CompletionPort; 4419 } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; 4420 4421 typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { 4422 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; 4423 IO_COUNTERS IoInfo; 4424 } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; 4425 4426 typedef struct _JOBOBJECT_JOBSET_INFORMATION { 4427 DWORD MemberLevel; 4428 } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION; 4429 4430 typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE { 4431 ToleranceLow = 1, 4432 ToleranceMedium, 4433 ToleranceHigh 4434 } JOBOBJECT_RATE_CONTROL_TOLERANCE; 4435 4436 typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL { 4437 ToleranceIntervalShort = 1, 4438 ToleranceIntervalMedium, 4439 ToleranceIntervalLong 4440 } JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL; 4441 4442 typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION { 4443 DWORD64 IoReadBytesLimit; 4444 DWORD64 IoWriteBytesLimit; 4445 LARGE_INTEGER PerJobUserTimeLimit; 4446 DWORD64 JobMemoryLimit; 4447 JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; 4448 JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; 4449 DWORD LimitFlags; 4450 } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION,*PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION; 4451 4452 typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION { 4453 DWORD LimitFlags; 4454 DWORD ViolationLimitFlags; 4455 DWORD64 IoReadBytes; 4456 DWORD64 IoReadBytesLimit; 4457 DWORD64 IoWriteBytes; 4458 DWORD64 IoWriteBytesLimit; 4459 LARGE_INTEGER PerJobUserTime; 4460 LARGE_INTEGER PerJobUserTimeLimit; 4461 DWORD64 JobMemory; 4462 DWORD64 JobMemoryLimit; 4463 JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; 4464 JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceLimit; 4465 } JOBOBJECT_LIMIT_VIOLATION_INFORMATION,*PJOBOBJECT_LIMIT_VIOLATION_INFORMATION; 4466 4467 typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { 4468 DWORD ControlFlags; 4469 __C89_NAMELESS union { 4470 DWORD CpuRate; 4471 DWORD Weight; 4472 }; 4473 } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION,*PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION; 4474 4475 #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 4476 #define JOB_OBJECT_POST_AT_END_OF_JOB 1 4477 4478 #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 4479 #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 4480 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 4481 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 4482 #define JOB_OBJECT_MSG_NEW_PROCESS 6 4483 #define JOB_OBJECT_MSG_EXIT_PROCESS 7 4484 #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 4485 #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 4486 #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 4487 #define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 11 4488 #define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 12 4489 4490 #define JOB_OBJECT_MSG_MINIMUM 1 4491 #define JOB_OBJECT_MSG_MAXIMUM 12 4492 4493 #define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001 4494 #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002 4495 #define JOB_OBJECT_LIMIT_JOB_TIME 0x00000004 4496 #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x00000008 4497 #define JOB_OBJECT_LIMIT_AFFINITY 0x00000010 4498 #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020 4499 #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040 4500 #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080 4501 4502 #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100 4503 #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200 4504 #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400 4505 #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800 4506 #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000 4507 #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000 4508 4509 #define JOB_OBJECT_LIMIT_SUBSET_AFFINITY 0x00004000 4510 #define JOB_OBJECT_LIMIT_RESERVED3 0x00008000 4511 #define JOB_OBJECT_LIMIT_JOB_READ_BYTES 0x00010000 4512 #define JOB_OBJECT_LIMIT_JOB_WRITE_BYTES 0x00020000 4513 #define JOB_OBJECT_LIMIT_RATE_CONTROL 0x00040000 4514 4515 #define JOB_OBJECT_LIMIT_RESERVED3 0x00008000 4516 #define JOB_OBJECT_LIMIT_RESERVED4 0x00010000 4517 #define JOB_OBJECT_LIMIT_RESERVED5 0x00020000 4518 #define JOB_OBJECT_LIMIT_RESERVED6 0x00040000 4519 4520 #define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff 4521 4522 #define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff 4523 #define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00007fff 4524 #define JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS 0x0007ffff 4525 #define JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS 0x00070204 4526 4527 #define JOB_OBJECT_UILIMIT_NONE 0x00000000 4528 4529 #define JOB_OBJECT_UILIMIT_HANDLES 0x00000001 4530 #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002 4531 #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004 4532 #define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x00000008 4533 #define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x00000010 4534 #define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x00000020 4535 #define JOB_OBJECT_UILIMIT_DESKTOP 0x00000040 4536 #define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x00000080 4537 4538 #define JOB_OBJECT_UILIMIT_ALL 0x000000FF 4539 4540 #define JOB_OBJECT_UI_VALID_FLAGS 0x000000FF 4541 4542 #define JOB_OBJECT_SECURITY_NO_ADMIN 0x00000001 4543 #define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x00000002 4544 #define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x00000004 4545 #define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x00000008 4546 4547 #define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f 4548 4549 #define JOB_OBJECT_CPU_RATE_CONTROL_ENABLE 0x1 4550 #define JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 0x2 4551 #define JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 0x4 4552 #define JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY 0x8 4553 #define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0xf 4554 4555 typedef enum _JOBOBJECTINFOCLASS { 4556 JobObjectBasicAccountingInformation = 1, JobObjectBasicLimitInformation, 4557 JobObjectBasicProcessIdList, JobObjectBasicUIRestrictions, 4558 JobObjectSecurityLimitInformation, JobObjectEndOfJobTimeInformation, 4559 JobObjectAssociateCompletionPortInformation, JobObjectBasicAndIoAccountingInformation, 4560 JobObjectExtendedLimitInformation, JobObjectJobSetInformation, 4561 JobObjectGroupInformation, 4562 JobObjectNotificationLimitInformation, 4563 JobObjectLimitViolationInformation, 4564 JobObjectGroupInformationEx, 4565 JobObjectCpuRateControlInformation, 4566 JobObjectCompletionFilter, 4567 JobObjectCompletionCounter, 4568 JobObjectReserved1Information = 18, 4569 JobObjectReserved2Information, 4570 JobObjectReserved3Information, 4571 JobObjectReserved4Information, 4572 JobObjectReserved5Information, 4573 JobObjectReserved6Information, 4574 JobObjectReserved7Information, 4575 JobObjectReserved8Information, 4576 MaxJobObjectInfoClass 4577 } JOBOBJECTINFOCLASS; 4578 4579 typedef enum _FIRMWARE_TYPE { 4580 FirmwareTypeUnknown, 4581 FirmwareTypeBios, 4582 FirmwareTypeUefi, 4583 FirmwareTypeMax 4584 } FIRMWARE_TYPE,*PFIRMWARE_TYPE; 4585 4586 #define EVENT_MODIFY_STATE 0x0002 4587 #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 4588 4589 #define MUTANT_QUERY_STATE 0x0001 4590 4591 #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE) 4592 #define SEMAPHORE_MODIFY_STATE 0x0002 4593 #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 4594 4595 #define TIMER_QUERY_STATE 0x0001 4596 #define TIMER_MODIFY_STATE 0x0002 4597 4598 #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE) 4599 4600 #define TIME_ZONE_ID_UNKNOWN 0 4601 #define TIME_ZONE_ID_STANDARD 1 4602 #define TIME_ZONE_ID_DAYLIGHT 2 4603 4604 typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { 4605 RelationProcessorCore,RelationNumaNode,RelationCache, 4606 RelationProcessorPackage,RelationGroup,RelationAll=0xffff 4607 } LOGICAL_PROCESSOR_RELATIONSHIP; 4608 4609 #define LTP_PC_SMT 0x1 4610 4611 typedef enum _PROCESSOR_CACHE_TYPE { 4612 CacheUnified,CacheInstruction,CacheData,CacheTrace 4613 } PROCESSOR_CACHE_TYPE; 4614 4615 #define CACHE_FULLY_ASSOCIATIVE 0xFF 4616 4617 typedef struct _CACHE_DESCRIPTOR { 4618 BYTE Level; 4619 BYTE Associativity; 4620 WORD LineSize; 4621 DWORD Size; 4622 PROCESSOR_CACHE_TYPE Type; 4623 } CACHE_DESCRIPTOR,*PCACHE_DESCRIPTOR; 4624 4625 typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { 4626 ULONG_PTR ProcessorMask; 4627 LOGICAL_PROCESSOR_RELATIONSHIP Relationship; 4628 __C89_NAMELESS union { 4629 struct { 4630 BYTE Flags; 4631 } ProcessorCore; 4632 struct { 4633 DWORD NodeNumber; 4634 } NumaNode; 4635 CACHE_DESCRIPTOR Cache; 4636 ULONGLONG Reserved[2]; 4637 } DUMMYUNIONNAME; 4638 } SYSTEM_LOGICAL_PROCESSOR_INFORMATION,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; 4639 4640 typedef struct _PROCESSOR_RELATIONSHIP { 4641 BYTE Flags; 4642 BYTE Reserved[21]; 4643 WORD GroupCount; 4644 GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY]; 4645 } PROCESSOR_RELATIONSHIP,*PPROCESSOR_RELATIONSHIP; 4646 4647 typedef struct _NUMA_NODE_RELATIONSHIP { 4648 DWORD NodeNumber; 4649 BYTE Reserved[20]; 4650 GROUP_AFFINITY GroupMask; 4651 } NUMA_NODE_RELATIONSHIP,*PNUMA_NODE_RELATIONSHIP; 4652 4653 typedef struct _CACHE_RELATIONSHIP { 4654 BYTE Level; 4655 BYTE Associativity; 4656 WORD LineSize; 4657 DWORD CacheSize; 4658 PROCESSOR_CACHE_TYPE Type; 4659 BYTE Reserved[20]; 4660 GROUP_AFFINITY GroupMask; 4661 } CACHE_RELATIONSHIP,*PCACHE_RELATIONSHIP; 4662 4663 typedef struct _PROCESSOR_GROUP_INFO { 4664 BYTE MaximumProcessorCount; 4665 BYTE ActiveProcessorCount; 4666 BYTE Reserved[38]; 4667 KAFFINITY ActiveProcessorMask; 4668 } PROCESSOR_GROUP_INFO,*PPROCESSOR_GROUP_INFO; 4669 4670 typedef struct _GROUP_RELATIONSHIP { 4671 WORD MaximumGroupCount; 4672 WORD ActiveGroupCount; 4673 BYTE Reserved[20]; 4674 PROCESSOR_GROUP_INFO GroupInfo[ANYSIZE_ARRAY]; 4675 } GROUP_RELATIONSHIP,*PGROUP_RELATIONSHIP; 4676 4677 struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { 4678 LOGICAL_PROCESSOR_RELATIONSHIP Relationship; 4679 DWORD Size; 4680 __C89_NAMELESS union { 4681 PROCESSOR_RELATIONSHIP Processor; 4682 NUMA_NODE_RELATIONSHIP NumaNode; 4683 CACHE_RELATIONSHIP Cache; 4684 GROUP_RELATIONSHIP Group; 4685 } DUMMYUNIONNAME; 4686 }; 4687 4688 typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; 4689 4690 typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION { 4691 DWORD64 CycleTime; 4692 } SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,*PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION; 4693 4694 #define PROCESSOR_INTEL_386 386 4695 #define PROCESSOR_INTEL_486 486 4696 #define PROCESSOR_INTEL_PENTIUM 586 4697 #define PROCESSOR_INTEL_IA64 2200 4698 #define PROCESSOR_AMD_X8664 8664 4699 #define PROCESSOR_MIPS_R4000 4000 4700 #define PROCESSOR_ALPHA_21064 21064 4701 #define PROCESSOR_PPC_601 601 4702 #define PROCESSOR_PPC_603 603 4703 #define PROCESSOR_PPC_604 604 4704 #define PROCESSOR_PPC_620 620 4705 #define PROCESSOR_HITACHI_SH3 10003 4706 #define PROCESSOR_HITACHI_SH3E 10004 4707 #define PROCESSOR_HITACHI_SH4 10005 4708 #define PROCESSOR_MOTOROLA_821 821 4709 #define PROCESSOR_SHx_SH3 103 4710 #define PROCESSOR_SHx_SH4 104 4711 #define PROCESSOR_STRONGARM 2577 4712 #define PROCESSOR_ARM720 1824 4713 #define PROCESSOR_ARM820 2080 4714 #define PROCESSOR_ARM920 2336 4715 #define PROCESSOR_ARM_7TDMI 70001 4716 #define PROCESSOR_OPTIL 0x494f 4717 4718 #define PROCESSOR_ARCHITECTURE_INTEL 0 4719 #define PROCESSOR_ARCHITECTURE_MIPS 1 4720 #define PROCESSOR_ARCHITECTURE_ALPHA 2 4721 #define PROCESSOR_ARCHITECTURE_PPC 3 4722 #define PROCESSOR_ARCHITECTURE_SHX 4 4723 #define PROCESSOR_ARCHITECTURE_ARM 5 4724 #define PROCESSOR_ARCHITECTURE_IA64 6 4725 #define PROCESSOR_ARCHITECTURE_ALPHA64 7 4726 #define PROCESSOR_ARCHITECTURE_MSIL 8 4727 #define PROCESSOR_ARCHITECTURE_AMD64 9 4728 #define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 4729 #define PROCESSOR_ARCHITECTURE_NEUTRAL 11 4730 #define PROCESSOR_ARCHITECTURE_ARM64 12 4731 #define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13 4732 #define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 14 4733 4734 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff 4735 4736 #define PF_FLOATING_POINT_PRECISION_ERRATA 0 4737 #define PF_FLOATING_POINT_EMULATED 1 4738 #define PF_COMPARE_EXCHANGE_DOUBLE 2 4739 #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 4740 #define PF_PPC_MOVEMEM_64BIT_OK 4 4741 #define PF_ALPHA_BYTE_INSTRUCTIONS 5 4742 #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 4743 #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 4744 #define PF_RDTSC_INSTRUCTION_AVAILABLE 8 4745 #define PF_PAE_ENABLED 9 4746 #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 4747 #define PF_SSE_DAZ_MODE_AVAILABLE 11 4748 #define PF_NX_ENABLED 12 4749 #define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 4750 #define PF_COMPARE_EXCHANGE128 14 4751 #define PF_COMPARE64_EXCHANGE128 15 4752 #define PF_CHANNELS_ENABLED 16 4753 #define PF_XSAVE_ENABLED 17 4754 #define PF_ARM_VFP_32_REGISTERS_AVAILABLE 18 4755 #define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 19 4756 #define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 20 4757 #define PF_VIRT_FIRMWARE_ENABLED 21 4758 #define PF_RDWRFSGSBASE_AVAILABLE 22 4759 #define PF_FASTFAIL_AVAILABLE 23 4760 #define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 24 4761 #define PF_ARM_64BIT_LOADSTORE_ATOMIC 25 4762 #define PF_ARM_EXTERNAL_CACHE_AVAILABLE 26 4763 #define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 27 4764 #define PF_RDRAND_INSTRUCTION_AVAILABLE 28 4765 #define PF_ARM_V8_INSTRUCTIONS_AVAILABLE 29 4766 #define PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE 30 4767 #define PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE 31 4768 #define PF_RDTSCP_INSTRUCTION_AVAILABLE 32 4769 #define PF_RDPID_INSTRUCTION_AVAILABLE 33 4770 4771 #define XSTATE_LEGACY_FLOATING_POINT (0) 4772 #define XSTATE_LEGACY_SSE (1) 4773 #define XSTATE_GSSE (2) 4774 #define XSTATE_AVX (XSTATE_GSSE) 4775 4776 #define XSTATE_MASK_LEGACY_FLOATING_POINT (1ULL << (XSTATE_LEGACY_FLOATING_POINT)) 4777 #define XSTATE_MASK_LEGACY_SSE (1ULL << (XSTATE_LEGACY_SSE)) 4778 #define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE) 4779 #define XSTATE_MASK_GSSE (1LLU << (XSTATE_GSSE)) 4780 #define XSTATE_MASK_AVX (XSTATE_MASK_GSSE) 4781 4782 #define MAXIMUM_XSTATE_FEATURES (64) 4783 4784 typedef struct _XSTATE_FEATURE { 4785 DWORD Offset; 4786 DWORD Size; 4787 } XSTATE_FEATURE,*PXSTATE_FEATURE; 4788 4789 typedef struct _XSTATE_CONFIGURATION { 4790 DWORD64 EnabledFeatures; 4791 DWORD64 EnabledVolatileFeatures; 4792 DWORD Size; 4793 DWORD OptimizedSave : 1; 4794 XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; 4795 } XSTATE_CONFIGURATION,*PXSTATE_CONFIGURATION; 4796 4797 typedef struct _MEMORY_BASIC_INFORMATION { 4798 PVOID BaseAddress; 4799 PVOID AllocationBase; 4800 DWORD AllocationProtect; 4801 SIZE_T RegionSize; 4802 DWORD State; 4803 DWORD Protect; 4804 DWORD Type; 4805 } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION; 4806 4807 typedef struct _MEMORY_BASIC_INFORMATION32 { 4808 DWORD BaseAddress; 4809 DWORD AllocationBase; 4810 DWORD AllocationProtect; 4811 DWORD RegionSize; 4812 DWORD State; 4813 DWORD Protect; 4814 DWORD Type; 4815 } MEMORY_BASIC_INFORMATION32,*PMEMORY_BASIC_INFORMATION32; 4816 4817 typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 { 4818 ULONGLONG BaseAddress; 4819 ULONGLONG AllocationBase; 4820 DWORD AllocationProtect; 4821 DWORD __alignment1; 4822 ULONGLONG RegionSize; 4823 DWORD State; 4824 DWORD Protect; 4825 DWORD Type; 4826 DWORD __alignment2; 4827 } MEMORY_BASIC_INFORMATION64,*PMEMORY_BASIC_INFORMATION64; 4828 4829 #define SECTION_QUERY 0x0001 4830 #define SECTION_MAP_WRITE 0x0002 4831 #define SECTION_MAP_READ 0x0004 4832 #define SECTION_MAP_EXECUTE 0x0008 4833 #define SECTION_EXTEND_SIZE 0x0010 4834 #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 4835 4836 #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE) 4837 4838 #define SESSION_QUERY_ACCESS 0x1 4839 #define SESSION_MODIFY_ACCESS 0x2 4840 4841 #define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SESSION_QUERY_ACCESS | SESSION_MODIFY_ACCESS) 4842 4843 #define PAGE_NOACCESS 0x01 4844 #define PAGE_READONLY 0x02 4845 #define PAGE_READWRITE 0x04 4846 #define PAGE_WRITECOPY 0x08 4847 #define PAGE_EXECUTE 0x10 4848 #define PAGE_EXECUTE_READ 0x20 4849 #define PAGE_EXECUTE_READWRITE 0x40 4850 #define PAGE_EXECUTE_WRITECOPY 0x80 4851 #define PAGE_GUARD 0x100 4852 #define PAGE_NOCACHE 0x200 4853 #define PAGE_WRITECOMBINE 0x400 4854 #define MEM_COMMIT 0x1000 4855 #define MEM_RESERVE 0x2000 4856 #define MEM_DECOMMIT 0x4000 4857 #define MEM_RELEASE 0x8000 4858 #define MEM_FREE 0x10000 4859 #define MEM_PRIVATE 0x20000 4860 #define MEM_MAPPED 0x40000 4861 #define MEM_RESET 0x80000 4862 #define MEM_TOP_DOWN 0x100000 4863 #define MEM_WRITE_WATCH 0x200000 4864 #define MEM_PHYSICAL 0x400000 4865 #define MEM_ROTATE 0x800000 4866 #define MEM_LARGE_PAGES 0x20000000 4867 #define MEM_4MB_PAGES 0x80000000 4868 #define SEC_FILE 0x800000 4869 #define SEC_IMAGE 0x1000000 4870 #define SEC_PROTECTED_IMAGE 0x2000000 4871 #define SEC_RESERVE 0x4000000 4872 #define SEC_COMMIT 0x8000000 4873 #define SEC_NOCACHE 0x10000000 4874 #define SEC_WRITECOMBINE 0x40000000 4875 #define SEC_LARGE_PAGES 0x80000000 4876 4877 #define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE) 4878 #define MEM_IMAGE SEC_IMAGE 4879 #define WRITE_WATCH_FLAG_RESET 0x01 4880 #define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x01 4881 4882 #define FILE_READ_DATA (0x0001) 4883 #define FILE_LIST_DIRECTORY (0x0001) 4884 4885 #define FILE_WRITE_DATA (0x0002) 4886 #define FILE_ADD_FILE (0x0002) 4887 4888 #define FILE_APPEND_DATA (0x0004) 4889 #define FILE_ADD_SUBDIRECTORY (0x0004) 4890 #define FILE_CREATE_PIPE_INSTANCE (0x0004) 4891 4892 #define FILE_READ_EA (0x0008) 4893 #define FILE_WRITE_EA (0x0010) 4894 #define FILE_EXECUTE (0x0020) 4895 #define FILE_TRAVERSE (0x0020) 4896 #define FILE_DELETE_CHILD (0x0040) 4897 #define FILE_READ_ATTRIBUTES (0x0080) 4898 #define FILE_WRITE_ATTRIBUTES (0x0100) 4899 4900 #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF) 4901 #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE) 4902 #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE) 4903 #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE) 4904 4905 #define FILE_SUPERSEDE 0x00000000 4906 #define FILE_OPEN 0x00000001 4907 #define FILE_CREATE 0x00000002 4908 #define FILE_OPEN_IF 0x00000003 4909 #define FILE_OVERWRITE 0x00000004 4910 #define FILE_OVERWRITE_IF 0x00000005 4911 #define FILE_MAXIMUM_DISPOSITION 0x00000005 4912 4913 #define FILE_DIRECTORY_FILE 0x00000001 4914 #define FILE_WRITE_THROUGH 0x00000002 4915 #define FILE_SEQUENTIAL_ONLY 0x00000004 4916 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 4917 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 4918 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 4919 #define FILE_NON_DIRECTORY_FILE 0x00000040 4920 #define FILE_CREATE_TREE_CONNECTION 0x00000080 4921 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100 4922 #define FILE_NO_EA_KNOWLEDGE 0x00000200 4923 #define FILE_OPEN_REMOTE_INSTANCE 0x00000400 4924 #define FILE_RANDOM_ACCESS 0x00000800 4925 #define FILE_DELETE_ON_CLOSE 0x00001000 4926 #define FILE_OPEN_BY_FILE_ID 0x00002000 4927 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 4928 #define FILE_NO_COMPRESSION 0x00008000 4929 #if (NTDDI_VERSION >= NTDDI_WIN7) 4930 #define FILE_OPEN_REQUIRING_OPLOCK 0x00010000 4931 #define FILE_DISALLOW_EXCLUSIVE 0x00020000 4932 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ 4933 #define FILE_RESERVE_OPFILTER 0x00100000 4934 #define FILE_OPEN_REPARSE_POINT 0x00200000 4935 #define FILE_OPEN_NO_RECALL 0x00400000 4936 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 4937 4938 #define FILE_SHARE_READ 0x00000001 4939 #define FILE_SHARE_WRITE 0x00000002 4940 #define FILE_SHARE_DELETE 0x00000004 4941 #define FILE_SHARE_VALID_FLAGS 0x00000007 4942 #define FILE_ATTRIBUTE_READONLY 0x00000001 4943 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 4944 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 4945 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 4946 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 4947 #define FILE_ATTRIBUTE_DEVICE 0x00000040 4948 #define FILE_ATTRIBUTE_NORMAL 0x00000080 4949 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 4950 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 4951 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 4952 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800 4953 #define FILE_ATTRIBUTE_OFFLINE 0x00001000 4954 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 4955 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 4956 #define FILE_ATTRIBUTE_VIRTUAL 0x00010000 4957 #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 4958 #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 4959 #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 4960 #define FILE_NOTIFY_CHANGE_SIZE 0x00000008 4961 #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 4962 #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 4963 #define FILE_NOTIFY_CHANGE_CREATION 0x00000040 4964 #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 4965 #define FILE_ACTION_ADDED 0x00000001 4966 #define FILE_ACTION_REMOVED 0x00000002 4967 #define FILE_ACTION_MODIFIED 0x00000003 4968 #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 4969 #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 4970 #define MAILSLOT_NO_MESSAGE ((DWORD)-1) 4971 #define MAILSLOT_WAIT_FOREVER ((DWORD)-1) 4972 #define FILE_CASE_SENSITIVE_SEARCH 0x00000001 4973 #define FILE_CASE_PRESERVED_NAMES 0x00000002 4974 #define FILE_UNICODE_ON_DISK 0x00000004 4975 #define FILE_PERSISTENT_ACLS 0x00000008 4976 #define FILE_FILE_COMPRESSION 0x00000010 4977 #define FILE_VOLUME_QUOTAS 0x00000020 4978 #define FILE_SUPPORTS_SPARSE_FILES 0x00000040 4979 #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 4980 #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 4981 #define FILE_VOLUME_IS_COMPRESSED 0x00008000 4982 #define FILE_SUPPORTS_OBJECT_IDS 0x00010000 4983 #define FILE_SUPPORTS_ENCRYPTION 0x00020000 4984 #define FILE_NAMED_STREAMS 0x00040000 4985 #define FILE_READ_ONLY_VOLUME 0x00080000 4986 #define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 4987 #define FILE_SUPPORTS_TRANSACTIONS 0x00200000 4988 #define FILE_SUPPORTS_HARD_LINKS 0x00400000 4989 #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 4990 #define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 4991 #define FILE_SUPPORTS_USN_JOURNAL 0x02000000 4992 #define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 4993 4994 typedef struct FILE_ID_128 { 4995 BYTE Identifier[16]; 4996 } FILE_ID_128, *PFILE_ID_128; 4997 4998 typedef struct _FILE_NOTIFY_INFORMATION { 4999 DWORD NextEntryOffset; 5000 DWORD Action; 5001 DWORD FileNameLength; 5002 WCHAR FileName[1]; 5003 } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION; 5004 5005 typedef union _FILE_SEGMENT_ELEMENT { 5006 PVOID64 Buffer; 5007 ULONGLONG Alignment; 5008 } FILE_SEGMENT_ELEMENT,*PFILE_SEGMENT_ELEMENT; 5009 5010 typedef struct _REPARSE_GUID_DATA_BUFFER { 5011 DWORD ReparseTag; 5012 WORD ReparseDataLength; 5013 WORD Reserved; 5014 GUID ReparseGuid; 5015 struct { 5016 BYTE DataBuffer[1]; 5017 } GenericReparseBuffer; 5018 } REPARSE_GUID_DATA_BUFFER,*PREPARSE_GUID_DATA_BUFFER; 5019 5020 #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER,GenericReparseBuffer) 5021 5022 #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 *1024) 5023 5024 #define SYMLINK_FLAG_RELATIVE 1 5025 5026 #define IO_REPARSE_TAG_RESERVED_ZERO (0) 5027 #define IO_REPARSE_TAG_RESERVED_ONE (1) 5028 5029 #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE 5030 5031 #define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000)) 5032 #define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000)) 5033 5034 #define IO_REPARSE_TAG_MOUNT_POINT (__MSABI_LONG(0xA0000003)) 5035 #define IO_REPARSE_TAG_HSM (__MSABI_LONG(0xC0000004)) 5036 #define IO_REPARSE_TAG_DRIVE_EXTENDER (__MSABI_LONG(0x80000005)) 5037 #define IO_REPARSE_TAG_HSM2 (__MSABI_LONG(0x80000006)) 5038 #define IO_REPARSE_TAG_SIS (__MSABI_LONG(0x80000007)) 5039 #define IO_REPARSE_TAG_WIM (__MSABI_LONG(0x80000008)) 5040 #define IO_REPARSE_TAG_CSV (__MSABI_LONG(0x80000009)) 5041 #define IO_REPARSE_TAG_DFS (__MSABI_LONG(0x8000000A)) 5042 #define IO_REPARSE_TAG_FILTER_MANAGER (__MSABI_LONG(0x8000000B)) 5043 #define IO_REPARSE_TAG_SYMLINK (__MSABI_LONG(0xA000000C)) 5044 #define IO_REPARSE_TAG_IIS_CACHE (__MSABI_LONG(0xA0000010)) 5045 #define IO_REPARSE_TAG_DFSR (__MSABI_LONG(0x80000012)) 5046 #define IO_REPARSE_TAG_DEDUP (__MSABI_LONG(0x80000013)) 5047 #define IO_REPARSE_TAG_NFS (__MSABI_LONG(0x80000014)) 5048 #define IO_REPARSE_TAG_FILE_PLACEHOLDER (__MSABI_LONG(0x80000015)) 5049 #define IO_REPARSE_TAG_WOF (__MSABI_LONG(0x80000017)) 5050 #define IO_REPARSE_TAG_WCI (__MSABI_LONG(0x80000018)) 5051 #define IO_REPARSE_TAG_WCI_1 (__MSABI_LONG(0x90001018)) 5052 #define IO_REPARSE_TAG_GLOBAL_REPARSE (__MSABI_LONG(0xA0000019)) 5053 #define IO_REPARSE_TAG_CLOUD (__MSABI_LONG(0x9000001A)) 5054 #define IO_REPARSE_TAG_CLOUD_1 (__MSABI_LONG(0x9000101A)) 5055 #define IO_REPARSE_TAG_CLOUD_2 (__MSABI_LONG(0x9000201A)) 5056 #define IO_REPARSE_TAG_CLOUD_3 (__MSABI_LONG(0x9000301A)) 5057 #define IO_REPARSE_TAG_CLOUD_4 (__MSABI_LONG(0x9000401A)) 5058 #define IO_REPARSE_TAG_CLOUD_5 (__MSABI_LONG(0x9000501A)) 5059 #define IO_REPARSE_TAG_CLOUD_6 (__MSABI_LONG(0x9000601A)) 5060 #define IO_REPARSE_TAG_CLOUD_7 (__MSABI_LONG(0x9000701A)) 5061 #define IO_REPARSE_TAG_CLOUD_8 (__MSABI_LONG(0x9000801A)) 5062 #define IO_REPARSE_TAG_CLOUD_9 (__MSABI_LONG(0x9000901A)) 5063 #define IO_REPARSE_TAG_CLOUD_A (__MSABI_LONG(0x9000A01A)) 5064 #define IO_REPARSE_TAG_CLOUD_B (__MSABI_LONG(0x9000B01A)) 5065 #define IO_REPARSE_TAG_CLOUD_C (__MSABI_LONG(0x9000C01A)) 5066 #define IO_REPARSE_TAG_CLOUD_D (__MSABI_LONG(0x9000D01A)) 5067 #define IO_REPARSE_TAG_CLOUD_E (__MSABI_LONG(0x9000E01A)) 5068 #define IO_REPARSE_TAG_CLOUD_F (__MSABI_LONG(0x9000F01A)) 5069 #define IO_REPARSE_TAG_CLOUD_MASK (__MSABI_LONG(0x0000F000)) 5070 #define IO_REPARSE_TAG_APPEXECLINK (__MSABI_LONG(0x8000001B)) 5071 #define IO_REPARSE_TAG_PROJFS (__MSABI_LONG(0x9000001C)) 5072 #define IO_REPARSE_TAG_STORAGE_SYNC (__MSABI_LONG(0x8000001E)) 5073 #define IO_REPARSE_TAG_WCI_TOMBSTONE (__MSABI_LONG(0xA000001F)) 5074 #define IO_REPARSE_TAG_UNHANDLED (__MSABI_LONG(0x80000020)) 5075 #define IO_REPARSE_TAG_ONEDRIVE (__MSABI_LONG(0x80000021)) 5076 #define IO_REPARSE_TAG_PROJFS_TOMBSTONE (__MSABI_LONG(0xA0000022)) 5077 #define IO_REPARSE_TAG_AF_UNIX (__MSABI_LONG(0x80000023)) 5078 5079 #if _WIN32_WINNT >= 0x0602 5080 #define SCRUB_DATA_INPUT_FLAG_RESUME 0x00000001 5081 #define SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC 0x00000002 5082 #define SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA 0x00000004 5083 5084 #define SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE 0x00000001 5085 #define SCRUB_DATA_OUTPUT_FLAG_NON_USER_DATA_RANGE 0x00010000 5086 5087 typedef struct _SCRUB_DATA_INPUT { 5088 DWORD Size; 5089 DWORD Flags; 5090 DWORD MaximumIos; 5091 DWORD Reserved[17]; 5092 BYTE ResumeContext[816]; 5093 } SCRUB_DATA_INPUT,*PSCRUB_DATA_INPUT; 5094 5095 typedef struct _SCRUB_DATA_OUTPUT { 5096 DWORD Size; 5097 DWORD Flags; 5098 DWORD Status; 5099 ULONGLONG ErrorFileOffset; 5100 ULONGLONG ErrorLength; 5101 ULONGLONG NumberOfBytesRepaired; 5102 ULONGLONG NumberOfBytesFailed; 5103 ULONGLONG InternalFileReference; 5104 DWORD Reserved[6]; 5105 BYTE ResumeContext[816]; 5106 } SCRUB_DATA_OUTPUT,*PSCRUB_DATA_OUTPUT; 5107 #endif 5108 5109 #define IO_COMPLETION_MODIFY_STATE 0x0002 5110 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 5111 #define DUPLICATE_CLOSE_SOURCE 0x00000001 5112 #define DUPLICATE_SAME_ACCESS 0x00000002 5113 5114 #define POWERBUTTON_ACTION_INDEX_NOTHING 0 5115 #define POWERBUTTON_ACTION_INDEX_SLEEP 1 5116 #define POWERBUTTON_ACTION_INDEX_HIBERNATE 2 5117 #define POWERBUTTON_ACTION_INDEX_SHUTDOWN 3 5118 5119 #define POWERBUTTON_ACTION_VALUE_NOTHING 0 5120 #define POWERBUTTON_ACTION_VALUE_SLEEP 2 5121 #define POWERBUTTON_ACTION_VALUE_HIBERNATE 3 5122 #define POWERBUTTON_ACTION_VALUE_SHUTDOWN 6 5123 5124 #define PERFSTATE_POLICY_CHANGE_IDEAL 0 5125 #define PERFSTATE_POLICY_CHANGE_SINGLE 1 5126 #define PERFSTATE_POLICY_CHANGE_ROCKET 2 5127 #define PERFSTATE_POLICY_CHANGE_MAX PERFSTATE_POLICY_CHANGE_ROCKET 5128 5129 #define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0 5130 #define PROCESSOR_PERF_BOOST_POLICY_MAX 100 5131 5132 #define PROCESSOR_PERF_BOOST_MODE_DISABLED 0 5133 #define PROCESSOR_PERF_BOOST_MODE_ENABLED 1 5134 #define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 2 5135 #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 3 5136 #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 4 5137 #define PROCESSOR_PERF_BOOST_MODE_MAX PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 5138 5139 #define CORE_PARKING_POLICY_CHANGE_IDEAL 0 5140 #define CORE_PARKING_POLICY_CHANGE_SINGLE 1 5141 #define CORE_PARKING_POLICY_CHANGE_ROCKET 2 5142 #define CORE_PARKING_POLICY_CHANGE_MULTISTEP 3 5143 #define CORE_PARKING_POLICY_CHANGE_MAX CORE_PARKING_POLICY_CHANGE_MULTISTEP 5144 5145 #define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0 5146 #define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1 5147 5148 DEFINE_GUID (GUID_MAX_POWER_SAVINGS, 0xa1841308, 0x3541, 0x4fab, 0xbc, 0x81, 0xf7, 0x15, 0x56, 0xf2, 0x0b, 0x4a); 5149 DEFINE_GUID (GUID_MIN_POWER_SAVINGS, 0x8c5e7fda, 0xe8bf, 0x4a96, 0x9a, 0x85, 0xa6, 0xe2, 0x3a, 0x8c, 0x63, 0x5c); 5150 DEFINE_GUID (GUID_TYPICAL_POWER_SAVINGS, 0x381b4222, 0xf694, 0x41f0, 0x96, 0x85, 0xff, 0x5b, 0xb2, 0x60, 0xdf, 0x2e); 5151 DEFINE_GUID (NO_SUBGROUP_GUID, 0xfea3413e, 0x7e05, 0x4911, 0x9a, 0x71, 0x70, 0x03, 0x31, 0xf1, 0xc2, 0x94); 5152 DEFINE_GUID (ALL_POWERSCHEMES_GUID, 0x68a1e95e, 0x13ea, 0x41e1, 0x80, 0x11, 0x0c, 0x49, 0x6c, 0xa4, 0x90, 0xb0); 5153 DEFINE_GUID (GUID_POWERSCHEME_PERSONALITY, 0x245d8541, 0x3943, 0x4422, 0xb0, 0x25, 0x13, 0xa7, 0x84, 0xf6, 0x79, 0xb7); 5154 DEFINE_GUID (GUID_ACTIVE_POWERSCHEME, 0x31f9f286, 0x5084, 0x42fe, 0xb7, 0x20, 0x2b, 0x02, 0x64, 0x99, 0x37, 0x63); 5155 DEFINE_GUID (GUID_IDLE_RESILIENCY_SUBGROUP, 0x2e601130, 0x5351, 0x4d9d, 0x8e, 0x4, 0x25, 0x29, 0x66, 0xba, 0xd0, 0x54); 5156 DEFINE_GUID (GUID_IDLE_RESILIENCY_PERIOD, 0xc42b79aa, 0xaa3a, 0x484b, 0xa9, 0x8f, 0x2c, 0xf3, 0x2a, 0xa9, 0xa, 0x28); 5157 DEFINE_GUID (GUID_DISK_COALESCING_POWERDOWN_TIMEOUT, 0xc36f0eb4, 0x2988, 0x4a70, 0x8e, 0xee, 0x8, 0x84, 0xfc, 0x2c, 0x24, 0x33); 5158 DEFINE_GUID (GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT, 0x3166bc41, 0x7e98, 0x4e03, 0xb3, 0x4e, 0xec, 0xf, 0x5f, 0x2b, 0x21, 0x8e); 5159 DEFINE_GUID (GUID_VIDEO_SUBGROUP, 0x7516b95f, 0xf776, 0x4464, 0x8c, 0x53, 0x06, 0x16, 0x7f, 0x40, 0xcc, 0x99); 5160 DEFINE_GUID (GUID_VIDEO_POWERDOWN_TIMEOUT, 0x3c0bc021, 0xc8a8, 0x4e07, 0xa9, 0x73, 0x6b, 0x14, 0xcb, 0xcb, 0x2b, 0x7e); 5161 DEFINE_GUID (GUID_VIDEO_ANNOYANCE_TIMEOUT, 0x82dbcf2d, 0xcd67, 0x40c5, 0xbf, 0xdc, 0x9f, 0x1a, 0x5c, 0xcd, 0x46, 0x63); 5162 DEFINE_GUID (GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE, 0xeed904df, 0xb142, 0x4183, 0xb1, 0x0b, 0x5a, 0x11, 0x97, 0xa3, 0x78, 0x64); 5163 DEFINE_GUID (GUID_VIDEO_DIM_TIMEOUT, 0x17aaa29b, 0x8b43, 0x4b94, 0xaa, 0xfe, 0x35, 0xf6, 0x4d, 0xaa, 0xf1, 0xee); 5164 DEFINE_GUID (GUID_VIDEO_ADAPTIVE_POWERDOWN, 0x90959d22, 0xd6a1, 0x49b9, 0xaf, 0x93, 0xbc, 0xe8, 0x85, 0xad, 0x33, 0x5b); 5165 DEFINE_GUID (GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xe6, 0xe5, 0xa1, 0x7e, 0xbd, 0x1a, 0xea); 5166 DEFINE_GUID (GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS, __MSABI_LONG(0xaded5e82), 0xb909, 0x4619, 0x99, 0x49, 0xf5, 0xd7, 0x1d, 0xac, 0x0b, 0xcb); 5167 DEFINE_GUID (GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS, 0xf1fbfde2, 0xa960, 0x4165, 0x9f, 0x88, 0x50, 0x66, 0x79, 0x11, 0xce, 0x96); 5168 DEFINE_GUID (GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS, 0x8ffee2c6, 0x2d01, 0x46be, 0xad, 0xb9, 0x39, 0x8a, 0xdd, 0xc5, 0xb4, 0xff); 5169 DEFINE_GUID (GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS, 0xfbd9aa66, 0x9553, 0x4097, 0xba, 0x44, 0xed, 0x6e, 0x9d, 0x65, 0xea, 0xb8); 5170 DEFINE_GUID (GUID_CONSOLE_DISPLAY_STATE, 0x6fe69556, 0x704a, 0x47a0, 0x8f, 0x24, 0xc2, 0x8d, 0x93, 0x6f, 0xda, 0x47); 5171 DEFINE_GUID (GUID_ALLOW_DISPLAY_REQUIRED, 0xa9ceb8da, 0xcd46, 0x44fb, 0xa9, 0x8b, 0x02, 0xaf, 0x69, 0xde, 0x46, 0x23); 5172 DEFINE_GUID (GUID_VIDEO_CONSOLE_LOCK_TIMEOUT, 0x8ec4b3a5, 0x6868, 0x48c2, 0xbe, 0x75, 0x4f, 0x30, 0x44, 0xbe, 0x88, 0xa7); 5173 DEFINE_GUID (GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP, 0x8619b916, 0xe004, 0x4dd8, 0x9b, 0x66, 0xda, 0xe8, 0x6f, 0x80, 0x66, 0x98); 5174 DEFINE_GUID (GUID_NON_ADAPTIVE_INPUT_TIMEOUT, 0x5adbbfbc, 0x74e, 0x4da1, 0xba, 0x38, 0xdb, 0x8b, 0x36, 0xb2, 0xc8, 0xf3); 5175 DEFINE_GUID (GUID_DISK_SUBGROUP, 0x0012ee47, 0x9041, 0x4b5d, 0x9b, 0x77, 0x53, 0x5f, 0xba, 0x8b, 0x14, 0x42); 5176 DEFINE_GUID (GUID_DISK_POWERDOWN_TIMEOUT, 0x6738e2c4, 0xe8a5, 0x4a42, 0xb1, 0x6a, 0xe0, 0x40, 0xe7, 0x69, 0x75, 0x6e); 5177 DEFINE_GUID (GUID_DISK_IDLE_TIMEOUT, 0x58e39ba8, 0xb8e6, 0x4ef6, 0x90, 0xd0, 0x89, 0xae, 0x32, 0xb2, 0x58, 0xd6); 5178 DEFINE_GUID (GUID_DISK_BURST_IGNORE_THRESHOLD, 0x80e3c60e, 0xbb94, 0x4ad8, 0xbb, 0xe0, 0x0d, 0x31, 0x95, 0xef, 0xc6, 0x63); 5179 DEFINE_GUID (GUID_DISK_ADAPTIVE_POWERDOWN, 0x396a32e1, 0x499a, 0x40b2, 0x91, 0x24, 0xa9, 0x6a, 0xfe, 0x70, 0x76, 0x67); 5180 DEFINE_GUID (GUID_SLEEP_SUBGROUP, 0x238c9fa8, 0x0aad, 0x41ed, 0x83, 0xf4, 0x97, 0xbe, 0x24, 0x2c, 0x8f, 0x20); 5181 DEFINE_GUID (GUID_SLEEP_IDLE_THRESHOLD, 0x81cd32e0, 0x7833, 0x44f3, 0x87, 0x37, 0x70, 0x81, 0xf3, 0x8d, 0x1f, 0x70); 5182 DEFINE_GUID (GUID_STANDBY_TIMEOUT, 0x29f6c1db, 0x86da, 0x48c5, 0x9f, 0xdb, 0xf2, 0xb6, 0x7b, 0x1f, 0x44, 0xda); 5183 DEFINE_GUID (GUID_UNATTEND_SLEEP_TIMEOUT, 0x7bc4a2f9, 0xd8fc, 0x4469, 0xb0, 0x7b, 0x33, 0xeb, 0x78, 0x5a, 0xac, 0xa0); 5184 DEFINE_GUID (GUID_HIBERNATE_TIMEOUT, 0x9d7815a6, 0x7ee4, 0x497e, 0x88, 0x88, 0x51, 0x5a, 0x05, 0xf0, 0x23, 0x64); 5185 DEFINE_GUID (GUID_HIBERNATE_FASTS4_POLICY, 0x94ac6d29, 0x73ce, 0x41a6, 0x80, 0x9f, 0x63, 0x63, 0xba, 0x21, 0xb4, 0x7e); 5186 DEFINE_GUID (GUID_CRITICAL_POWER_TRANSITION, 0xb7a27025, 0xe569, 0x46c2, 0xa5, 0x04, 0x2b, 0x96, 0xca, 0xd2, 0x25, 0xa1); 5187 DEFINE_GUID (GUID_SYSTEM_AWAYMODE, 0x98a7f580, 0x01f7, 0x48aa, 0x9c, 0x0f, 0x44, 0x35, 0x2c, 0x29, 0xe5, 0xc0); 5188 DEFINE_GUID (GUID_ALLOW_AWAYMODE, 0x25dfa149, 0x5dd1, 0x4736, 0xb5, 0xab, 0xe8, 0xa3, 0x7b, 0x5b, 0x81, 0x87); 5189 DEFINE_GUID (GUID_ALLOW_STANDBY_STATES, 0xabfc2519, 0x3608, 0x4c2a, 0x94, 0xea, 0x17, 0x1b, 0x0e, 0xd5, 0x46, 0xab); 5190 DEFINE_GUID (GUID_ALLOW_RTC_WAKE, 0xbd3b718a, 0x0680, 0x4d9d, 0x8a, 0xb2, 0xe1, 0xd2, 0xb4, 0xac, 0x80, 0x6d); 5191 DEFINE_GUID (GUID_ALLOW_SYSTEM_REQUIRED, 0xa4b195f5, 0x8225, 0x47d8, 0x80, 0x12, 0x9d, 0x41, 0x36, 0x97, 0x86, 0xe2); 5192 DEFINE_GUID (GUID_SYSTEM_BUTTON_SUBGROUP, 0x4f971e89, 0xeebd, 0x4455, 0xa8, 0xde, 0x9e, 0x59, 0x04, 0x0e, 0x73, 0x47); 5193 DEFINE_GUID (GUID_POWERBUTTON_ACTION, 0x7648efa3, 0xdd9c, 0x4e3e, 0xb5, 0x66, 0x50, 0xf9, 0x29, 0x38, 0x62, 0x80); 5194 DEFINE_GUID (GUID_SLEEPBUTTON_ACTION, 0x96996bc0, 0xad50, 0x47ec, 0x92, 0x3b, 0x6f, 0x41, 0x87, 0x4d, 0xd9, 0xeb); 5195 DEFINE_GUID (GUID_USERINTERFACEBUTTON_ACTION, 0xa7066653, 0x8d6c, 0x40a8, 0x91, 0x0e, 0xa1, 0xf5, 0x4b, 0x84, 0xc7, 0xe5); 5196 DEFINE_GUID (GUID_LIDCLOSE_ACTION, 0x5ca83367, 0x6e45, 0x459f, 0xa2, 0x7b, 0x47, 0x6b, 0x1d, 0x01, 0xc9, 0x36); 5197 DEFINE_GUID (GUID_LIDOPEN_POWERSTATE, 0x99ff10e7, 0x23b1, 0x4c07, 0xa9, 0xd1, 0x5c, 0x32, 0x06, 0xd7, 0x41, 0xb4); 5198 DEFINE_GUID (GUID_BATTERY_SUBGROUP, 0xe73a048d, 0xbf27, 0x4f12, 0x97, 0x31, 0x8b, 0x20, 0x76, 0xe8, 0x89, 0x1f); 5199 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_0, 0x637ea02f, 0xbbcb, 0x4015, 0x8e, 0x2c, 0xa1, 0xc7, 0xb9, 0xc0, 0xb5, 0x46); 5200 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_0, 0x9a66d8d7, 0x4ff7, 0x4ef9, 0xb5, 0xa2, 0x5a, 0x32, 0x6c, 0xa2, 0xa4, 0x69); 5201 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_0, 0x5dbb7c9f, 0x38e9, 0x40d2, 0x97, 0x49, 0x4f, 0x8a, 0x0e, 0x9f, 0x64, 0x0f); 5202 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_1, 0xd8742dcb, 0x3e6a, 0x4b3c, 0xb3, 0xfe, 0x37, 0x46, 0x23, 0xcd, 0xcf, 0x06); 5203 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_1, 0x8183ba9a, 0xe910, 0x48da, 0x87, 0x69, 0x14, 0xae, 0x6d, 0xc1, 0x17, 0x0a); 5204 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_1, 0xbcded951, 0x187b, 0x4d05, 0xbc, 0xcc, 0xf7, 0xe5, 0x19, 0x60, 0xc2, 0x58); 5205 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_2, 0x421cba38, 0x1a8e, 0x4881, 0xac, 0x89, 0xe3, 0x3a, 0x8b, 0x04, 0xec, 0xe4); 5206 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_2, 0x07a07ca2, 0xadaf, 0x40d7, 0xb0, 0x77, 0x53, 0x3a, 0xad, 0xed, 0x1b, 0xfa); 5207 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_2, 0x7fd2f0c4, 0xfeb7, 0x4da3, 0x81, 0x17, 0xe3, 0xfb, 0xed, 0xc4, 0x65, 0x82); 5208 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_3, 0x80472613, 0x9780, 0x455e, 0xb3, 0x08, 0x72, 0xd3, 0x00, 0x3c, 0xf2, 0xf8); 5209 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_3, 0x58afd5a6, 0xc2dd, 0x47d2, 0x9f, 0xbf, 0xef, 0x70, 0xcc, 0x5c, 0x59, 0x65); 5210 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_3, 0x73613ccf, 0xdbfa, 0x4279, 0x83, 0x56, 0x49, 0x35, 0xf6, 0xbf, 0x62, 0xf3); 5211 DEFINE_GUID (GUID_PROCESSOR_SETTINGS_SUBGROUP, 0x54533251, 0x82be, 0x4824, 0x96, 0xc1, 0x47, 0xb6, 0x0b, 0x74, 0x0d, 0x00); 5212 DEFINE_GUID (GUID_PROCESSOR_THROTTLE_POLICY, 0x57027304, 0x4af6, 0x4104, 0x92, 0x60, 0xe3, 0xd9, 0x52, 0x48, 0xfc, 0x36); 5213 DEFINE_GUID (GUID_PROCESSOR_THROTTLE_MAXIMUM, 0xbc5038f7, 0x23e0, 0x4960, 0x96, 0xda, 0x33, 0xab, 0xaf, 0x59, 0x35, 0xec); 5214 DEFINE_GUID (GUID_PROCESSOR_THROTTLE_MINIMUM, 0x893dee8e, 0x2bef, 0x41e0, 0x89, 0xc6, 0xb5, 0x5d, 0x09, 0x29, 0x96, 0x4c); 5215 DEFINE_GUID (GUID_PROCESSOR_ALLOW_THROTTLING, 0x3b04d4fd, 0x1cc7, 0x4f23, 0xab, 0x1c, 0xd1, 0x33, 0x78, 0x19, 0xc4, 0xbb); 5216 DEFINE_GUID (GUID_PROCESSOR_IDLESTATE_POLICY, 0x68f262a7, 0xf621, 0x4069, 0xb9, 0xa5, 0x48, 0x74, 0x16, 0x9b, 0xe2, 0x3c); 5217 DEFINE_GUID (GUID_PROCESSOR_PERFSTATE_POLICY, 0xbbdc3814, 0x18e9, 0x4463, 0x8a, 0x55, 0xd1, 0x97, 0x32, 0x7c, 0x45, 0xc0); 5218 DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_THRESHOLD, 0x06cadf0e, 0x64ed, 0x448a, 0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5d); 5219 DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_THRESHOLD, 0x12a0ab44, 0xfe28, 0x4fa9, 0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa6); 5220 DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_POLICY, 0x465e1f50, 0xb610, 0x473a, 0xab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x18); 5221 DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_POLICY, 0x40fbefc7, 0x2e9d, 0x4d25, 0xa1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc6); 5222 DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_TIME, 0x984cf492, 0x3bed, 0x4488, 0xa8, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xaa); 5223 DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_TIME, 0xd8edeb9b, 0x95cf, 0x4f95, 0xa7, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc8); 5224 DEFINE_GUID (GUID_PROCESSOR_PERF_TIME_CHECK, 0x4d2b0152, 0x7d5c, 0x498b, 0x88, 0xe2, 0x34, 0x34, 0x53, 0x92, 0xa2, 0xc5); 5225 DEFINE_GUID (GUID_PROCESSOR_PERF_BOOST_POLICY, 0x45bcc044, 0xd885, 0x43e2, 0x86, 0x5, 0xee, 0xe, 0xc6, 0xe9, 0x6b, 0x59); 5226 DEFINE_GUID (GUID_PROCESSOR_PERF_BOOST_MODE, 0xbe337238, 0xd82, 0x4146, 0xa9, 0x60, 0x4f, 0x37, 0x49, 0xd4, 0x70, 0xc7); 5227 DEFINE_GUID (GUID_PROCESSOR_IDLE_ALLOW_SCALING, 0x6c2993b0, 0x8f48, 0x481f, 0xbc, 0xc6, 0x0, 0xdd, 0x27, 0x42, 0xaa, 0x6); 5228 DEFINE_GUID (GUID_PROCESSOR_IDLE_DISABLE, 0x5d76a2ca, 0xe8c0, 0x402f, 0xa1, 0x33, 0x21, 0x58, 0x49, 0x2d, 0x58, 0xad); 5229 DEFINE_GUID (GUID_PROCESSOR_IDLE_STATE_MAXIMUM, 0x9943e905, 0x9a30, 0x4ec1, 0x9b, 0x99, 0x44, 0xdd, 0x3b, 0x76, 0xf7, 0xa2); 5230 DEFINE_GUID (GUID_PROCESSOR_IDLE_TIME_CHECK, 0xc4581c31, 0x89ab, 0x4597, 0x8e, 0x2b, 0x9c, 0x9c, 0xab, 0x44, 0xe, 0x6b); 5231 DEFINE_GUID (GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD, 0x4b92d758, 0x5a24, 0x4851, 0xa4, 0x70, 0x81, 0x5d, 0x78, 0xae, 0xe1, 0x19); 5232 DEFINE_GUID (GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD, 0x7b224883, 0xb3cc, 0x4d79, 0x81, 0x9f, 0x83, 0x74, 0x15, 0x2c, 0xbe, 0x7c); 5233 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD, 0xdf142941, 0x20f3, 0x4edf, 0x9a, 0x4a, 0x9c, 0x83, 0xd3, 0xd7, 0x17, 0xd1); 5234 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD, 0x68dd2f27, 0xa4ce, 0x4e11, 0x84, 0x87, 0x37, 0x94, 0xe4, 0x13, 0x5d, 0xfa); 5235 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY, 0xc7be0679, 0x2817, 0x4d69, 0x9d, 0x02, 0x51, 0x9a, 0x53, 0x7e, 0xd0, 0xc6); 5236 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY, 0x71021b41, 0xc749, 0x4d21, 0xbe, 0x74, 0xa0, 0x0f, 0x33, 0x5d, 0x58, 0x2b); 5237 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_MAX_CORES, 0xea062031, 0x0e34, 0x4ff1, 0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x28); 5238 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_MIN_CORES, 0x0cc5b647, 0xc1df, 0x4637, 0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x83); 5239 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME, 0x2ddd5a84, 0x5a71, 0x437e, 0x91, 0x2a, 0xdb, 0x0b, 0x8c, 0x78, 0x87, 0x32); 5240 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME, 0xdfd10d17, 0xd5eb, 0x45dd, 0x87, 0x7a, 0x9a, 0x34, 0xdd, 0xd1, 0x5c, 0x82); 5241 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR, 0x8f7b45e3, 0xc393, 0x480a, 0x87, 0x8c, 0xf6, 0x7a, 0xc3, 0xd0, 0x70, 0x82); 5242 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD, 0x5b33697b, 0xe89d, 0x4d38, 0xaa, 0x46, 0x9e, 0x7d, 0xfb, 0x7c, 0xd2, 0xf9); 5243 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING, 0xe70867f1, 0xfa2f, 0x4f4e, 0xae, 0xa1, 0x4d, 0x8a, 0x0b, 0xa2, 0x3b, 0x20); 5244 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR, 0x1299023c, 0xbc28, 0x4f0a, 0x81, 0xec, 0xd3, 0x29, 0x5a, 0x8d, 0x81, 0x5d); 5245 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD, 0x9ac18e92, 0xaa3c, 0x4e27, 0xb3, 0x07, 0x01, 0xae, 0x37, 0x30, 0x71, 0x29); 5246 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING, 0x8809c2d8, 0xb155, 0x42d4, 0xbc, 0xda, 0x0d, 0x34, 0x56, 0x51, 0xb1, 0xdb); 5247 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD, 0x943c8cb6, 0x6f93, 0x4227, 0xad, 0x87, 0xe9, 0xa3, 0xfe, 0xec, 0x08, 0xd1); 5248 DEFINE_GUID (GUID_PROCESSOR_PARKING_CORE_OVERRIDE, 0xa55612aa, 0xf624, 0x42c6, 0xa4, 0x43, 0x73, 0x97, 0xd0, 0x64, 0xc0, 0x4f); 5249 DEFINE_GUID (GUID_PROCESSOR_PARKING_PERF_STATE, 0x447235c7, 0x6a8d, 0x4cc0, 0x8e, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2b); 5250 DEFINE_GUID (GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD, 0x2430ab6f, 0xa520, 0x44a2, 0x96, 0x01, 0xf7, 0xf2, 0x3b, 0x51, 0x34, 0xb1); 5251 DEFINE_GUID (GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD, 0xf735a673, 0x2066, 0x4f80, 0xa0, 0xc5, 0xdd, 0xee, 0x0c, 0xf1, 0xbf, 0x5d); 5252 DEFINE_GUID (GUID_PROCESSOR_PERF_HISTORY, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x0c, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x5f); 5253 DEFINE_GUID (GUID_PROCESSOR_PERF_LATENCY_HINT, 0x0822df31, 0x9c83, 0x441c, 0xa0, 0x79, 0x0d, 0xe4, 0xcf, 0x00, 0x9c, 0x7b); 5254 DEFINE_GUID (GUID_PROCESSOR_DISTRIBUTE_UTILITY, 0xe0007330, 0xf589, 0x42ed, 0xa4, 0x01, 0x5d, 0xdb, 0x10, 0xe7, 0x85, 0xd3); 5255 DEFINE_GUID (GUID_SYSTEM_COOLING_POLICY, 0x94d3a615, 0xa899, 0x4ac5, 0xae, 0x2b, 0xe4, 0xd8, 0xf6, 0x34, 0x36, 0x7f); 5256 DEFINE_GUID (GUID_LOCK_CONSOLE_ON_WAKE, 0x0e796bdb, 0x100d, 0x47d6, 0xa2, 0xd5, 0xf7, 0xd2, 0xda, 0xa5, 0x1f, 0x51); 5257 DEFINE_GUID (GUID_DEVICE_IDLE_POLICY, 0x4faab71a, 0x92e5, 0x4726, 0xb5, 0x31, 0x22, 0x45, 0x59, 0x67, 0x2d, 0x19); 5258 DEFINE_GUID (GUID_ACDC_POWER_SOURCE, 0x5d3e9a59, 0xe9d5, 0x4b00, 0xa6, 0xbd, 0xff, 0x34, 0xff, 0x51, 0x65, 0x48); 5259 DEFINE_GUID (GUID_LIDSWITCH_STATE_CHANGE, 0xba3e0f4d, 0xb817, 0x4094, 0xa2, 0xd1, 0xd5, 0x63, 0x79, 0xe6, 0xa0, 0xf3); 5260 DEFINE_GUID (GUID_BATTERY_PERCENTAGE_REMAINING, 0xa7ad8041, 0xb45a, 0x4cae, 0x87, 0xa3, 0xee, 0xcb, 0xb4, 0x68, 0xa9, 0xe1); 5261 DEFINE_GUID (GUID_GLOBAL_USER_PRESENCE, 0x786e8a1d, 0xb427, 0x4344, 0x92, 0x7, 0x9, 0xe7, 0xb, 0xdc, 0xbe, 0xa9); 5262 DEFINE_GUID (GUID_SESSION_DISPLAY_STATUS, 0x2b84c20e, 0xad23, 0x4ddf, 0x93, 0xdb, 0x5, 0xff, 0xbd, 0x7e, 0xfc, 0xa5); 5263 DEFINE_GUID (GUID_SESSION_USER_PRESENCE, 0x3c0f4548, 0xc03f, 0x4c4d, 0xb9, 0xf2, 0x23, 0x7e, 0xde, 0x68, 0x63, 0x76); 5264 DEFINE_GUID (GUID_IDLE_BACKGROUND_TASK, 0x515c31d8, 0xf734, 0x163d, 0xa0, 0xfd, 0x11, 0xa0, 0x8c, 0x91, 0xe8, 0xf1); 5265 DEFINE_GUID (GUID_BACKGROUND_TASK_NOTIFICATION, 0xcf23f240, 0x2a54, 0x48d8, 0xb1, 0x14, 0xde, 0x15, 0x18, 0xff, 0x05, 0x2e); 5266 DEFINE_GUID (GUID_APPLAUNCH_BUTTON, 0x1a689231, 0x7399, 0x4e9a, 0x8f, 0x99, 0xb7, 0x1f, 0x99, 0x9d, 0xb3, 0xfa); 5267 DEFINE_GUID (GUID_PCIEXPRESS_SETTINGS_SUBGROUP, 0x501a4d13, 0x42af, 0x4429, 0x9f, 0xd1, 0xa8, 0x21, 0x8c, 0x26, 0x8e, 0x20); 5268 DEFINE_GUID (GUID_PCIEXPRESS_ASPM_POLICY, 0xee12f906, 0xd277, 0x404b, 0xb6, 0xda, 0xe5, 0xfa, 0x1a, 0x57, 0x6d, 0xf5); 5269 DEFINE_GUID (GUID_ENABLE_SWITCH_FORCED_SHUTDOWN, 0x833a6b62, 0xdfa4, 0x46d1, 0x82, 0xf8, 0xe0, 0x9e, 0x34, 0xd0, 0x29, 0xd6); 5270 5271 typedef enum _SYSTEM_POWER_STATE { 5272 PowerSystemUnspecified = 0,PowerSystemWorking = 1,PowerSystemSleeping1 = 2,PowerSystemSleeping2 = 3,PowerSystemSleeping3 = 4,PowerSystemHibernate = 5,PowerSystemShutdown = 6,PowerSystemMaximum = 7 5273 } SYSTEM_POWER_STATE,*PSYSTEM_POWER_STATE; 5274 5275 #define POWER_SYSTEM_MAXIMUM 7 5276 5277 typedef enum { 5278 PowerActionNone = 0, PowerActionReserved, PowerActionSleep, PowerActionHibernate, 5279 PowerActionShutdown, PowerActionShutdownReset, PowerActionShutdownOff, 5280 PowerActionWarmEject 5281 } POWER_ACTION,*PPOWER_ACTION; 5282 5283 typedef enum _DEVICE_POWER_STATE { 5284 PowerDeviceUnspecified = 0, PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3, 5285 PowerDeviceMaximum 5286 } DEVICE_POWER_STATE,*PDEVICE_POWER_STATE; 5287 5288 typedef enum _MONITOR_DISPLAY_STATE { 5289 PowerMonitorOff = 0, PowerMonitorOn, PowerMonitorDim 5290 } MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE; 5291 5292 typedef enum _USER_ACTIVITY_PRESENCE { 5293 PowerUserPresent = 0, 5294 PowerUserNotPresent, 5295 PowerUserInactive, 5296 PowerUserMaximum, 5297 PowerUserInvalid = PowerUserMaximum 5298 } USER_ACTIVITY_PRESENCE,*PUSER_ACTIVITY_PRESENCE; 5299 5300 #define ES_SYSTEM_REQUIRED ((DWORD)0x00000001) 5301 #define ES_DISPLAY_REQUIRED ((DWORD)0x00000002) 5302 #define ES_USER_PRESENT ((DWORD)0x00000004) 5303 #define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040) 5304 #define ES_CONTINUOUS ((DWORD)0x80000000) 5305 5306 typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE; 5307 5308 typedef enum { 5309 LT_DONT_CARE,LT_LOWEST_LATENCY 5310 } LATENCY_TIME; 5311 5312 #define DIAGNOSTIC_REASON_VERSION 0 5313 #define POWER_REQUEST_CONTEXT_VERSION 0 5314 5315 #define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001 5316 #define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002 5317 #define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 5318 #define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003) 5319 5320 #define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001 5321 #define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002 5322 5323 typedef enum _POWER_REQUEST_TYPE { 5324 PowerRequestDisplayRequired, 5325 PowerRequestSystemRequired, 5326 PowerRequestAwayModeRequired, 5327 PowerRequestExecutionRequired 5328 } POWER_REQUEST_TYPE,*PPOWER_REQUEST_TYPE; 5329 5330 #define PDCAP_D0_SUPPORTED 0x00000001 5331 #define PDCAP_D1_SUPPORTED 0x00000002 5332 #define PDCAP_D2_SUPPORTED 0x00000004 5333 #define PDCAP_D3_SUPPORTED 0x00000008 5334 #define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 5335 #define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 5336 #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 5337 #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 5338 #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 5339 5340 typedef struct CM_Power_Data_s { 5341 DWORD PD_Size; 5342 DEVICE_POWER_STATE PD_MostRecentPowerState; 5343 DWORD PD_Capabilities; 5344 DWORD PD_D1Latency; 5345 DWORD PD_D2Latency; 5346 DWORD PD_D3Latency; 5347 DEVICE_POWER_STATE PD_PowerStateMapping[POWER_SYSTEM_MAXIMUM]; 5348 SYSTEM_POWER_STATE PD_DeepestSystemWake; 5349 } CM_POWER_DATA,*PCM_POWER_DATA; 5350 5351 typedef enum { 5352 SystemPowerPolicyAc, 5353 SystemPowerPolicyDc, 5354 VerifySystemPolicyAc, 5355 VerifySystemPolicyDc, 5356 SystemPowerCapabilities, 5357 SystemBatteryState, 5358 SystemPowerStateHandler, 5359 ProcessorStateHandler, 5360 SystemPowerPolicyCurrent, 5361 AdministratorPowerPolicy, 5362 SystemReserveHiberFile, 5363 ProcessorInformation, 5364 SystemPowerInformation, 5365 ProcessorStateHandler2, 5366 LastWakeTime, 5367 LastSleepTime, 5368 SystemExecutionState, 5369 SystemPowerStateNotifyHandler, 5370 ProcessorPowerPolicyAc, 5371 ProcessorPowerPolicyDc, 5372 VerifyProcessorPowerPolicyAc, 5373 VerifyProcessorPowerPolicyDc, 5374 ProcessorPowerPolicyCurrent, 5375 SystemPowerStateLogging, 5376 SystemPowerLoggingEntry, 5377 SetPowerSettingValue, 5378 NotifyUserPowerSetting, 5379 PowerInformationLevelUnused0, 5380 SystemMonitorHiberBootPowerOff, 5381 SystemVideoState, 5382 TraceApplicationPowerMessage, 5383 TraceApplicationPowerMessageEnd, 5384 ProcessorPerfStates, 5385 ProcessorIdleStates, 5386 ProcessorCap, 5387 SystemWakeSource, 5388 SystemHiberFileInformation, 5389 TraceServicePowerMessage, 5390 ProcessorLoad, 5391 PowerShutdownNotification, 5392 MonitorCapabilities, 5393 SessionPowerInit, 5394 SessionDisplayState, 5395 PowerRequestCreate, 5396 PowerRequestAction, 5397 GetPowerRequestList, 5398 ProcessorInformationEx, 5399 NotifyUserModeLegacyPowerEvent, 5400 GroupPark, 5401 ProcessorIdleDomains, 5402 WakeTimerList, 5403 SystemHiberFileSize, 5404 ProcessorIdleStatesHv, 5405 ProcessorPerfStatesHv, 5406 ProcessorPerfCapHv, 5407 ProcessorSetIdle, 5408 LogicalProcessorIdling, 5409 UserPresence, 5410 PowerSettingNotificationName, 5411 GetPowerSettingValue, 5412 IdleResiliency, 5413 SessionRITState, 5414 SessionConnectNotification, 5415 SessionPowerCleanup, 5416 SessionLockState, 5417 SystemHiberbootState, 5418 PlatformInformation, 5419 PdcInvocation, 5420 MonitorInvocation, 5421 FirmwareTableInformationRegistered, 5422 SetShutdownSelectedTime, 5423 SuspendResumeInvocation, 5424 PlmPowerRequestCreate, 5425 ScreenOff, 5426 CsDeviceNotification, 5427 PlatformRole, 5428 LastResumePerformance, 5429 DisplayBurst, 5430 ExitLatencySamplingPercentage, 5431 ApplyLowPowerScenarioSettings, 5432 PowerInformationLevelMaximum 5433 } POWER_INFORMATION_LEVEL; 5434 5435 typedef enum { 5436 UserNotPresent = 0, 5437 UserPresent = 1, 5438 UserUnknown = 0xff 5439 } POWER_USER_PRESENCE_TYPE,*PPOWER_USER_PRESENCE_TYPE; 5440 5441 typedef struct _POWER_USER_PRESENCE { 5442 POWER_USER_PRESENCE_TYPE UserPresence; 5443 } POWER_USER_PRESENCE,*PPOWER_USER_PRESENCE; 5444 5445 typedef struct _POWER_SESSION_CONNECT { 5446 BOOLEAN Connected; 5447 BOOLEAN Console; 5448 } POWER_SESSION_CONNECT,*PPOWER_SESSION_CONNECT; 5449 5450 typedef struct _POWER_SESSION_TIMEOUTS { 5451 DWORD InputTimeout; 5452 DWORD DisplayTimeout; 5453 } POWER_SESSION_TIMEOUTS,*PPOWER_SESSION_TIMEOUTS; 5454 5455 typedef struct _POWER_SESSION_RIT_STATE { 5456 BOOLEAN Active; 5457 DWORD LastInputTime; 5458 } POWER_SESSION_RIT_STATE,*PPOWER_SESSION_RIT_STATE; 5459 5460 typedef struct _POWER_SESSION_WINLOGON { 5461 DWORD SessionId; 5462 BOOLEAN Console; 5463 BOOLEAN Locked; 5464 } POWER_SESSION_WINLOGON,*PPOWER_SESSION_WINLOGON; 5465 5466 typedef struct _POWER_IDLE_RESILIENCY { 5467 DWORD CoalescingTimeout; 5468 DWORD IdleResiliencyPeriod; 5469 } POWER_IDLE_RESILIENCY,*PPOWER_IDLE_RESILIENCY; 5470 5471 typedef enum { 5472 MonitorRequestReasonUnknown, 5473 MonitorRequestReasonPowerButton, 5474 MonitorRequestReasonRemoteConnection, 5475 MonitorRequestReasonScMonitorpower, 5476 MonitorRequestReasonUserInput, 5477 MonitorRequestReasonAcDcDisplayBurst, 5478 MonitorRequestReasonUserDisplayBurst, 5479 MonitorRequestReasonPoSetSystemState, 5480 MonitorRequestReasonSetThreadExecutionState, 5481 MonitorRequestReasonFullWake, 5482 MonitorRequestReasonSessionUnlock, 5483 MonitorRequestReasonScreenOffRequest, 5484 MonitorRequestReasonIdleTimeout, 5485 MonitorRequestReasonPolicyChange, 5486 MonitorRequestReasonMax 5487 } POWER_MONITOR_REQUEST_REASON; 5488 5489 typedef struct _POWER_MONITOR_INVOCATION { 5490 BOOLEAN On; 5491 BOOLEAN Console; 5492 POWER_MONITOR_REQUEST_REASON RequestReason; 5493 } POWER_MONITOR_INVOCATION,*PPOWER_MONITOR_INVOCATION; 5494 5495 typedef struct _RESUME_PERFORMANCE { 5496 DWORD PostTimeMs; 5497 ULONGLONG TotalResumeTimeMs; 5498 ULONGLONG ResumeCompleteTimestamp; 5499 } RESUME_PERFORMANCE,*PRESUME_PERFORMANCE; 5500 5501 typedef enum { 5502 PoAc, 5503 PoDc, 5504 PoHot, 5505 PoConditionMaximum 5506 } SYSTEM_POWER_CONDITION; 5507 5508 typedef struct { 5509 DWORD Version; 5510 GUID Guid; 5511 SYSTEM_POWER_CONDITION PowerCondition; 5512 DWORD DataLength; 5513 BYTE Data[ANYSIZE_ARRAY]; 5514 } SET_POWER_SETTING_VALUE,*PSET_POWER_SETTING_VALUE; 5515 5516 #define POWER_SETTING_VALUE_VERSION (0x1) 5517 5518 typedef struct { 5519 GUID Guid; 5520 } NOTIFY_USER_POWER_SETTING,*PNOTIFY_USER_POWER_SETTING; 5521 5522 typedef struct _APPLICATIONLAUNCH_SETTING_VALUE { 5523 LARGE_INTEGER ActivationTime; 5524 DWORD Flags; 5525 DWORD ButtonInstanceID; 5526 } APPLICATIONLAUNCH_SETTING_VALUE,*PAPPLICATIONLAUNCH_SETTING_VALUE; 5527 5528 typedef enum _POWER_PLATFORM_ROLE { 5529 PlatformRoleUnspecified = 0, 5530 PlatformRoleDesktop, 5531 PlatformRoleMobile, 5532 PlatformRoleWorkstation, 5533 PlatformRoleEnterpriseServer, 5534 PlatformRoleSOHOServer, 5535 PlatformRoleAppliancePC, 5536 PlatformRolePerformanceServer, 5537 PlatformRoleSlate, 5538 PlatformRoleMaximum 5539 } POWER_PLATFORM_ROLE,*PPOWER_PLATFORM_ROLE; 5540 5541 typedef struct _POWER_PLATFORM_INFORMATION { 5542 BOOLEAN AoAc; 5543 } POWER_PLATFORM_INFORMATION,*PPOWER_PLATFORM_INFORMATION; 5544 5545 #define POWER_PLATFORM_ROLE_V1 (0x00000001) 5546 #define POWER_PLATFORM_ROLE_V1_MAX (PlatformRolePerformanceServer + 1) 5547 5548 #define POWER_PLATFORM_ROLE_V2 (0x00000002) 5549 #define POWER_PLATFORM_ROLE_V2_MAX (PlatformRoleSlate + 1) 5550 5551 #if _WIN32_WINNT >= 0x0602 5552 #define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V2 5553 #define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V2_MAX 5554 #else 5555 #define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V1 5556 #define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V1_MAX 5557 #endif 5558 5559 typedef struct { 5560 DWORD Granularity; 5561 DWORD Capacity; 5562 } BATTERY_REPORTING_SCALE,*PBATTERY_REPORTING_SCALE; 5563 5564 typedef struct { 5565 DWORD Frequency; 5566 DWORD Flags; 5567 DWORD PercentFrequency; 5568 } PPM_WMI_LEGACY_PERFSTATE,*PPPM_WMI_LEGACY_PERFSTATE; 5569 5570 typedef struct { 5571 DWORD Latency; 5572 DWORD Power; 5573 DWORD TimeCheck; 5574 BYTE PromotePercent; 5575 BYTE DemotePercent; 5576 BYTE StateType; 5577 BYTE Reserved; 5578 DWORD StateFlags; 5579 DWORD Context; 5580 DWORD IdleHandler; 5581 DWORD Reserved1; 5582 } PPM_WMI_IDLE_STATE,*PPPM_WMI_IDLE_STATE; 5583 5584 typedef struct { 5585 DWORD Type; 5586 DWORD Count; 5587 DWORD TargetState; 5588 DWORD OldState; 5589 DWORD64 TargetProcessors; 5590 PPM_WMI_IDLE_STATE State[ANYSIZE_ARRAY]; 5591 } PPM_WMI_IDLE_STATES,*PPPM_WMI_IDLE_STATES; 5592 5593 typedef struct { 5594 DWORD Type; 5595 DWORD Count; 5596 DWORD TargetState; 5597 DWORD OldState; 5598 PVOID TargetProcessors; 5599 PPM_WMI_IDLE_STATE State[ANYSIZE_ARRAY]; 5600 } PPM_WMI_IDLE_STATES_EX,*PPPM_WMI_IDLE_STATES_EX; 5601 5602 typedef struct { 5603 DWORD Frequency; 5604 DWORD Power; 5605 BYTE PercentFrequency; 5606 BYTE IncreaseLevel; 5607 BYTE DecreaseLevel; 5608 BYTE Type; 5609 DWORD IncreaseTime; 5610 DWORD DecreaseTime; 5611 DWORD64 Control; 5612 DWORD64 Status; 5613 DWORD HitCount; 5614 DWORD Reserved1; 5615 DWORD64 Reserved2; 5616 DWORD64 Reserved3; 5617 } PPM_WMI_PERF_STATE,*PPPM_WMI_PERF_STATE; 5618 5619 typedef struct { 5620 DWORD Count; 5621 DWORD MaxFrequency; 5622 DWORD CurrentState; 5623 DWORD MaxPerfState; 5624 DWORD MinPerfState; 5625 DWORD LowestPerfState; 5626 DWORD ThermalConstraint; 5627 BYTE BusyAdjThreshold; 5628 BYTE PolicyType; 5629 BYTE Type; 5630 BYTE Reserved; 5631 DWORD TimerInterval; 5632 DWORD64 TargetProcessors; 5633 DWORD PStateHandler; 5634 DWORD PStateContext; 5635 DWORD TStateHandler; 5636 DWORD TStateContext; 5637 DWORD FeedbackHandler; 5638 DWORD Reserved1; 5639 DWORD64 Reserved2; 5640 PPM_WMI_PERF_STATE State[ANYSIZE_ARRAY]; 5641 } PPM_WMI_PERF_STATES,*PPPM_WMI_PERF_STATES; 5642 5643 typedef struct { 5644 DWORD Count; 5645 DWORD MaxFrequency; 5646 DWORD CurrentState; 5647 DWORD MaxPerfState; 5648 DWORD MinPerfState; 5649 DWORD LowestPerfState; 5650 DWORD ThermalConstraint; 5651 BYTE BusyAdjThreshold; 5652 BYTE PolicyType; 5653 BYTE Type; 5654 BYTE Reserved; 5655 DWORD TimerInterval; 5656 PVOID TargetProcessors; 5657 DWORD PStateHandler; 5658 DWORD PStateContext; 5659 DWORD TStateHandler; 5660 DWORD TStateContext; 5661 DWORD FeedbackHandler; 5662 DWORD Reserved1; 5663 DWORD64 Reserved2; 5664 PPM_WMI_PERF_STATE State[ANYSIZE_ARRAY]; 5665 } PPM_WMI_PERF_STATES_EX,*PPPM_WMI_PERF_STATES_EX; 5666 5667 #define PROC_IDLE_BUCKET_COUNT 6 5668 #define PROC_IDLE_BUCKET_COUNT_EX 16 5669 5670 typedef struct { 5671 DWORD IdleTransitions; 5672 DWORD FailedTransitions; 5673 DWORD InvalidBucketIndex; 5674 DWORD64 TotalTime; 5675 DWORD IdleTimeBuckets[PROC_IDLE_BUCKET_COUNT]; 5676 } PPM_IDLE_STATE_ACCOUNTING,*PPPM_IDLE_STATE_ACCOUNTING; 5677 5678 typedef struct { 5679 DWORD StateCount; 5680 DWORD TotalTransitions; 5681 DWORD ResetCount; 5682 DWORD64 StartTime; 5683 PPM_IDLE_STATE_ACCOUNTING State[ANYSIZE_ARRAY]; 5684 } PPM_IDLE_ACCOUNTING,*PPPM_IDLE_ACCOUNTING; 5685 5686 typedef struct { 5687 DWORD64 TotalTimeUs; 5688 DWORD MinTimeUs; 5689 DWORD MaxTimeUs; 5690 DWORD Count; 5691 } PPM_IDLE_STATE_BUCKET_EX,*PPPM_IDLE_STATE_BUCKET_EX; 5692 5693 typedef struct { 5694 DWORD64 TotalTime; 5695 DWORD IdleTransitions; 5696 DWORD FailedTransitions; 5697 DWORD InvalidBucketIndex; 5698 DWORD MinTimeUs; 5699 DWORD MaxTimeUs; 5700 DWORD CancelledTransitions; 5701 PPM_IDLE_STATE_BUCKET_EX IdleTimeBuckets[PROC_IDLE_BUCKET_COUNT_EX]; 5702 } PPM_IDLE_STATE_ACCOUNTING_EX,*PPPM_IDLE_STATE_ACCOUNTING_EX; 5703 5704 typedef struct { 5705 DWORD StateCount; 5706 DWORD TotalTransitions; 5707 DWORD ResetCount; 5708 DWORD AbortCount; 5709 DWORD64 StartTime; 5710 PPM_IDLE_STATE_ACCOUNTING_EX State[ANYSIZE_ARRAY]; 5711 } PPM_IDLE_ACCOUNTING_EX,*PPPM_IDLE_ACCOUNTING_EX; 5712 5713 #define ACPI_PPM_SOFTWARE_ALL 0xfc 5714 #define ACPI_PPM_SOFTWARE_ANY 0xfd 5715 #define ACPI_PPM_HARDWARE_ALL 0xfe 5716 5717 #define MS_PPM_SOFTWARE_ALL 0x1 5718 5719 #define PPM_FIRMWARE_ACPI1C2 0x1 5720 #define PPM_FIRMWARE_ACPI1C3 0x2 5721 #define PPM_FIRMWARE_ACPI1TSTATES 0x4 5722 #define PPM_FIRMWARE_CST 0x8 5723 #define PPM_FIRMWARE_CSD 0x10 5724 #define PPM_FIRMWARE_PCT 0x20 5725 #define PPM_FIRMWARE_PSS 0x40 5726 #define PPM_FIRMWARE_XPSS 0x80 5727 #define PPM_FIRMWARE_PPC 0x100 5728 #define PPM_FIRMWARE_PSD 0x200 5729 #define PPM_FIRMWARE_PTC 0x400 5730 #define PPM_FIRMWARE_TSS 0x800 5731 #define PPM_FIRMWARE_TPC 0x1000 5732 #define PPM_FIRMWARE_TSD 0x2000 5733 #define PPM_FIRMWARE_PCCH 0x4000 5734 #define PPM_FIRMWARE_PCCP 0x8000 5735 #define PPM_FIRMWARE_OSC 0x10000 5736 #define PPM_FIRMWARE_PDC 0x20000 5737 #define PPM_FIRMWARE_CPC 0x40000 5738 5739 #define PPM_PERFORMANCE_IMPLEMENTATION_NONE 0 5740 #define PPM_PERFORMANCE_IMPLEMENTATION_PSTATES 1 5741 #define PPM_PERFORMANCE_IMPLEMENTATION_PCCV1 2 5742 #define PPM_PERFORMANCE_IMPLEMENTATION_CPPC 3 5743 #define PPM_PERFORMANCE_IMPLEMENTATION_PEP 4 5744 5745 #define PPM_IDLE_IMPLEMENTATION_NONE 0x0 5746 #define PPM_IDLE_IMPLEMENTATION_CSTATES 0x1 5747 #define PPM_IDLE_IMPLEMENTATION_PEP 0x2 5748 5749 typedef struct { 5750 DWORD State; 5751 DWORD Status; 5752 DWORD Latency; 5753 DWORD Speed; 5754 DWORD Processor; 5755 } PPM_PERFSTATE_EVENT,*PPPM_PERFSTATE_EVENT; 5756 5757 typedef struct { 5758 DWORD State; 5759 DWORD Latency; 5760 DWORD Speed; 5761 DWORD64 Processors; 5762 } PPM_PERFSTATE_DOMAIN_EVENT,*PPPM_PERFSTATE_DOMAIN_EVENT; 5763 5764 typedef struct { 5765 DWORD NewState; 5766 DWORD OldState; 5767 DWORD64 Processors; 5768 } PPM_IDLESTATE_EVENT,*PPPM_IDLESTATE_EVENT; 5769 5770 typedef struct { 5771 DWORD ThermalConstraint; 5772 DWORD64 Processors; 5773 } PPM_THERMALCHANGE_EVENT,*PPPM_THERMALCHANGE_EVENT; 5774 typedef struct { 5775 BYTE Mode; 5776 DWORD64 Processors; 5777 } PPM_THERMAL_POLICY_EVENT,*PPPM_THERMAL_POLICY_EVENT; 5778 5779 DEFINE_GUID (PPM_PERFSTATE_CHANGE_GUID, 0xa5b32ddd, 0x7f39, 0x4abc, 0xb8, 0x92, 0x90, 0xe, 0x43, 0xb5, 0x9e, 0xbb); 5780 DEFINE_GUID (PPM_PERFSTATE_DOMAIN_CHANGE_GUID, 0x995e6b7f, 0xd653, 0x497a, 0xb9, 0x78, 0x36, 0xa3, 0xc, 0x29, 0xbf, 0x1); 5781 DEFINE_GUID (PPM_IDLESTATE_CHANGE_GUID, 0x4838fe4f, 0xf71c, 0x4e51, 0x9e, 0xcc, 0x84, 0x30, 0xa7, 0xac, 0x4c, 0x6c); 5782 DEFINE_GUID (PPM_PERFSTATES_DATA_GUID, 0x5708cc20, 0x7d40, 0x4bf4, 0xb4, 0xaa, 0x2b, 0x01, 0x33, 0x8d, 0x01, 0x26); 5783 DEFINE_GUID (PPM_IDLESTATES_DATA_GUID, 0xba138e10, 0xe250, 0x4ad7, 0x86, 0x16, 0xcf, 0x1a, 0x7a, 0xd4, 0x10, 0xe7); 5784 DEFINE_GUID (PPM_IDLE_ACCOUNTING_GUID, 0xe2a26f78, 0xae07, 0x4ee0, 0xa3, 0x0f, 0xce, 0x54, 0xf5, 0x5a, 0x94, 0xcd); 5785 DEFINE_GUID (PPM_IDLE_ACCOUNTING_EX_GUID, 0xd67abd39, 0x81f8, 0x4a5e, 0x81, 0x52, 0x72, 0xe3, 0x1e, 0xc9, 0x12, 0xee); 5786 DEFINE_GUID (PPM_THERMALCONSTRAINT_GUID, 0xa852c2c8, 0x1a4c, 0x423b, 0x8c, 0x2c, 0xf3, 0x0d, 0x82, 0x93, 0x1a, 0x88); 5787 DEFINE_GUID (PPM_PERFMON_PERFSTATE_GUID, 0x7fd18652, 0xcfe, 0x40d2, 0xb0, 0xa1, 0xb, 0x6, 0x6a, 0x87, 0x75, 0x9e); 5788 DEFINE_GUID (PPM_THERMAL_POLICY_CHANGE_GUID, 0x48f377b8, 0x6880, 0x4c7b, 0x8b, 0xdc, 0x38, 0x1, 0x76, 0xc6, 0x65, 0x4d); 5789 5790 typedef struct { 5791 POWER_ACTION Action; 5792 DWORD Flags; 5793 DWORD EventCode; 5794 } POWER_ACTION_POLICY,*PPOWER_ACTION_POLICY; 5795 5796 #define POWER_ACTION_QUERY_ALLOWED 0x00000001 5797 #define POWER_ACTION_UI_ALLOWED 0x00000002 5798 #define POWER_ACTION_OVERRIDE_APPS 0x00000004 5799 #define POWER_ACTION_HIBERBOOT 0x00000008 5800 #define POWER_ACTION_PSEUDO_TRANSITION 0x08000000 5801 #define POWER_ACTION_LIGHTEST_FIRST 0x10000000 5802 #define POWER_ACTION_LOCK_CONSOLE 0x20000000 5803 #define POWER_ACTION_DISABLE_WAKES 0x40000000 5804 #define POWER_ACTION_CRITICAL 0x80000000 5805 5806 #define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001 5807 #define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002 5808 #define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004 5809 #define POWER_USER_NOTIFY_BUTTON 0x00000008 5810 #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 5811 #define POWER_USER_NOTIFY_FORCED_SHUTDOWN 0x00000020 5812 #define POWER_FORCE_TRIGGER_RESET 0x80000000 5813 5814 #define BATTERY_DISCHARGE_FLAGS_EVENTCODE_MASK 0x00000007 5815 #define BATTERY_DISCHARGE_FLAGS_ENABLE 0x80000000 5816 5817 #define DISCHARGE_POLICY_CRITICAL 0 5818 #define DISCHARGE_POLICY_LOW 1 5819 5820 #define NUM_DISCHARGE_POLICIES 4 5821 5822 #define PROCESSOR_IDLESTATE_POLICY_COUNT 0x3 5823 5824 typedef struct { 5825 DWORD TimeCheck; 5826 BYTE DemotePercent; 5827 BYTE PromotePercent; 5828 BYTE Spare[2]; 5829 } PROCESSOR_IDLESTATE_INFO,*PPROCESSOR_IDLESTATE_INFO; 5830 5831 typedef struct { 5832 BOOLEAN Enable; 5833 BYTE Spare[3]; 5834 DWORD BatteryLevel; 5835 POWER_ACTION_POLICY PowerPolicy; 5836 SYSTEM_POWER_STATE MinSystemState; 5837 } SYSTEM_POWER_LEVEL,*PSYSTEM_POWER_LEVEL; 5838 5839 typedef struct _SYSTEM_POWER_POLICY { 5840 DWORD Revision; 5841 POWER_ACTION_POLICY PowerButton; 5842 POWER_ACTION_POLICY SleepButton; 5843 POWER_ACTION_POLICY LidClose; 5844 SYSTEM_POWER_STATE LidOpenWake; 5845 DWORD Reserved; 5846 POWER_ACTION_POLICY Idle; 5847 DWORD IdleTimeout; 5848 BYTE IdleSensitivity; 5849 BYTE DynamicThrottle; 5850 BYTE Spare2[2]; 5851 SYSTEM_POWER_STATE MinSleep; 5852 SYSTEM_POWER_STATE MaxSleep; 5853 SYSTEM_POWER_STATE ReducedLatencySleep; 5854 DWORD WinLogonFlags; 5855 DWORD Spare3; 5856 DWORD DozeS4Timeout; 5857 DWORD BroadcastCapacityResolution; 5858 SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES]; 5859 DWORD VideoTimeout; 5860 BOOLEAN VideoDimDisplay; 5861 DWORD VideoReserved[3]; 5862 DWORD SpindownTimeout; 5863 BOOLEAN OptimizeForPower; 5864 BYTE FanThrottleTolerance; 5865 BYTE ForcedThrottle; 5866 BYTE MinThrottle; 5867 POWER_ACTION_POLICY OverThrottled; 5868 } SYSTEM_POWER_POLICY,*PSYSTEM_POWER_POLICY; 5869 5870 #define PO_THROTTLE_NONE 0 5871 #define PO_THROTTLE_CONSTANT 1 5872 #define PO_THROTTLE_DEGRADE 2 5873 #define PO_THROTTLE_ADAPTIVE 3 5874 #define PO_THROTTLE_MAXIMUM 4 5875 5876 typedef struct { 5877 WORD Revision; 5878 union { 5879 WORD AsWORD; 5880 __C89_NAMELESS struct { 5881 WORD AllowScaling : 1; 5882 WORD Disabled : 1; 5883 WORD Reserved : 14; 5884 } DUMMYSTRUCTNAME; 5885 } Flags; 5886 DWORD PolicyCount; 5887 PROCESSOR_IDLESTATE_INFO Policy[PROCESSOR_IDLESTATE_POLICY_COUNT]; 5888 } PROCESSOR_IDLESTATE_POLICY,*PPROCESSOR_IDLESTATE_POLICY; 5889 5890 typedef struct _PROCESSOR_POWER_POLICY_INFO { 5891 DWORD TimeCheck; 5892 DWORD DemoteLimit; 5893 DWORD PromoteLimit; 5894 BYTE DemotePercent; 5895 BYTE PromotePercent; 5896 BYTE Spare[2]; 5897 DWORD AllowDemotion:1; 5898 DWORD AllowPromotion:1; 5899 DWORD Reserved:30; 5900 } PROCESSOR_POWER_POLICY_INFO,*PPROCESSOR_POWER_POLICY_INFO; 5901 5902 typedef struct _PROCESSOR_POWER_POLICY { 5903 DWORD Revision; 5904 BYTE DynamicThrottle; 5905 BYTE Spare[3]; 5906 DWORD DisableCStates:1; 5907 DWORD Reserved:31; 5908 DWORD PolicyCount; 5909 PROCESSOR_POWER_POLICY_INFO Policy[3]; 5910 } PROCESSOR_POWER_POLICY,*PPROCESSOR_POWER_POLICY; 5911 5912 typedef struct { 5913 DWORD Revision; 5914 BYTE MaxThrottle; 5915 BYTE MinThrottle; 5916 BYTE BusyAdjThreshold; 5917 __C89_NAMELESS union { 5918 BYTE Spare; 5919 union { 5920 BYTE AsBYTE; 5921 __C89_NAMELESS struct { 5922 BYTE NoDomainAccounting : 1; 5923 BYTE IncreasePolicy: 2; 5924 BYTE DecreasePolicy: 2; 5925 BYTE Reserved : 3; 5926 } DUMMYSTRUCTNAME; 5927 } Flags; 5928 } DUMMYUNIONNAME; 5929 DWORD TimeCheck; 5930 DWORD IncreaseTime; 5931 DWORD DecreaseTime; 5932 DWORD IncreasePercent; 5933 DWORD DecreasePercent; 5934 } PROCESSOR_PERFSTATE_POLICY,*PPROCESSOR_PERFSTATE_POLICY; 5935 5936 typedef struct _ADMINISTRATOR_POWER_POLICY { 5937 SYSTEM_POWER_STATE MinSleep; 5938 SYSTEM_POWER_STATE MaxSleep; 5939 DWORD MinVideoTimeout; 5940 DWORD MaxVideoTimeout; 5941 DWORD MinSpindownTimeout; 5942 DWORD MaxSpindownTimeout; 5943 } ADMINISTRATOR_POWER_POLICY,*PADMINISTRATOR_POWER_POLICY; 5944 5945 typedef struct { 5946 BOOLEAN PowerButtonPresent; 5947 BOOLEAN SleepButtonPresent; 5948 BOOLEAN LidPresent; 5949 BOOLEAN SystemS1; 5950 BOOLEAN SystemS2; 5951 BOOLEAN SystemS3; 5952 BOOLEAN SystemS4; 5953 BOOLEAN SystemS5; 5954 BOOLEAN HiberFilePresent; 5955 BOOLEAN FullWake; 5956 BOOLEAN VideoDimPresent; 5957 BOOLEAN ApmPresent; 5958 BOOLEAN UpsPresent; 5959 BOOLEAN ThermalControl; 5960 BOOLEAN ProcessorThrottle; 5961 BYTE ProcessorMinThrottle; 5962 BYTE ProcessorMaxThrottle; 5963 BOOLEAN FastSystemS4; 5964 BYTE spare2[3]; 5965 BOOLEAN DiskSpinDown; 5966 BYTE spare3[8]; 5967 BOOLEAN SystemBatteriesPresent; 5968 BOOLEAN BatteriesAreShortTerm; 5969 BATTERY_REPORTING_SCALE BatteryScale[3]; 5970 SYSTEM_POWER_STATE AcOnLineWake; 5971 SYSTEM_POWER_STATE SoftLidWake; 5972 SYSTEM_POWER_STATE RtcWake; 5973 SYSTEM_POWER_STATE MinDeviceWakeState; 5974 SYSTEM_POWER_STATE DefaultLowLatencyWake; 5975 } SYSTEM_POWER_CAPABILITIES,*PSYSTEM_POWER_CAPABILITIES; 5976 5977 typedef struct { 5978 BOOLEAN AcOnLine; 5979 BOOLEAN BatteryPresent; 5980 BOOLEAN Charging; 5981 BOOLEAN Discharging; 5982 BOOLEAN Spare1[4]; 5983 DWORD MaxCapacity; 5984 DWORD RemainingCapacity; 5985 DWORD Rate; 5986 DWORD EstimatedTime; 5987 DWORD DefaultAlert1; 5988 DWORD DefaultAlert2; 5989 } SYSTEM_BATTERY_STATE,*PSYSTEM_BATTERY_STATE; 5990 5991 #include "pshpack4.h" 5992 5993 #define IMAGE_DOS_SIGNATURE 0x5A4D 5994 #define IMAGE_OS2_SIGNATURE 0x454E 5995 #define IMAGE_OS2_SIGNATURE_LE 0x454C 5996 #define IMAGE_VXD_SIGNATURE 0x454C 5997 #define IMAGE_NT_SIGNATURE 0x00004550 5998 5999 #include "pshpack2.h" 6000 6001 typedef struct _IMAGE_DOS_HEADER { 6002 WORD e_magic; 6003 WORD e_cblp; 6004 WORD e_cp; 6005 WORD e_crlc; 6006 WORD e_cparhdr; 6007 WORD e_minalloc; 6008 WORD e_maxalloc; 6009 WORD e_ss; 6010 WORD e_sp; 6011 WORD e_csum; 6012 WORD e_ip; 6013 WORD e_cs; 6014 WORD e_lfarlc; 6015 WORD e_ovno; 6016 WORD e_res[4]; 6017 WORD e_oemid; 6018 WORD e_oeminfo; 6019 WORD e_res2[10]; 6020 LONG e_lfanew; 6021 } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER; 6022 6023 typedef struct _IMAGE_OS2_HEADER { 6024 WORD ne_magic; 6025 CHAR ne_ver; 6026 CHAR ne_rev; 6027 WORD ne_enttab; 6028 WORD ne_cbenttab; 6029 LONG ne_crc; 6030 WORD ne_flags; 6031 WORD ne_autodata; 6032 WORD ne_heap; 6033 WORD ne_stack; 6034 LONG ne_csip; 6035 LONG ne_sssp; 6036 WORD ne_cseg; 6037 WORD ne_cmod; 6038 WORD ne_cbnrestab; 6039 WORD ne_segtab; 6040 WORD ne_rsrctab; 6041 WORD ne_restab; 6042 WORD ne_modtab; 6043 WORD ne_imptab; 6044 LONG ne_nrestab; 6045 WORD ne_cmovent; 6046 WORD ne_align; 6047 WORD ne_cres; 6048 BYTE ne_exetyp; 6049 BYTE ne_flagsothers; 6050 WORD ne_pretthunks; 6051 WORD ne_psegrefbytes; 6052 WORD ne_swaparea; 6053 WORD ne_expver; 6054 } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER; 6055 6056 typedef struct _IMAGE_VXD_HEADER { 6057 WORD e32_magic; 6058 BYTE e32_border; 6059 BYTE e32_worder; 6060 DWORD e32_level; 6061 WORD e32_cpu; 6062 WORD e32_os; 6063 DWORD e32_ver; 6064 DWORD e32_mflags; 6065 DWORD e32_mpages; 6066 DWORD e32_startobj; 6067 DWORD e32_eip; 6068 DWORD e32_stackobj; 6069 DWORD e32_esp; 6070 DWORD e32_pagesize; 6071 DWORD e32_lastpagesize; 6072 DWORD e32_fixupsize; 6073 DWORD e32_fixupsum; 6074 DWORD e32_ldrsize; 6075 DWORD e32_ldrsum; 6076 DWORD e32_objtab; 6077 DWORD e32_objcnt; 6078 DWORD e32_objmap; 6079 DWORD e32_itermap; 6080 DWORD e32_rsrctab; 6081 DWORD e32_rsrccnt; 6082 DWORD e32_restab; 6083 DWORD e32_enttab; 6084 DWORD e32_dirtab; 6085 DWORD e32_dircnt; 6086 DWORD e32_fpagetab; 6087 DWORD e32_frectab; 6088 DWORD e32_impmod; 6089 DWORD e32_impmodcnt; 6090 DWORD e32_impproc; 6091 DWORD e32_pagesum; 6092 DWORD e32_datapage; 6093 DWORD e32_preload; 6094 DWORD e32_nrestab; 6095 DWORD e32_cbnrestab; 6096 DWORD e32_nressum; 6097 DWORD e32_autodata; 6098 DWORD e32_debuginfo; 6099 DWORD e32_debuglen; 6100 DWORD e32_instpreload; 6101 DWORD e32_instdemand; 6102 DWORD e32_heapsize; 6103 BYTE e32_res3[12]; 6104 DWORD e32_winresoff; 6105 DWORD e32_winreslen; 6106 WORD e32_devid; 6107 WORD e32_ddkver; 6108 } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER; 6109 6110 #include "poppack.h" 6111 6112 typedef struct _IMAGE_FILE_HEADER { 6113 WORD Machine; 6114 WORD NumberOfSections; 6115 DWORD TimeDateStamp; 6116 DWORD PointerToSymbolTable; 6117 DWORD NumberOfSymbols; 6118 WORD SizeOfOptionalHeader; 6119 WORD Characteristics; 6120 } IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER; 6121 6122 #define IMAGE_SIZEOF_FILE_HEADER 20 6123 6124 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001 6125 #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 6126 #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 6127 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 6128 #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 6129 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 6130 #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 6131 #define IMAGE_FILE_32BIT_MACHINE 0x0100 6132 #define IMAGE_FILE_DEBUG_STRIPPED 0x0200 6133 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 6134 #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 6135 #define IMAGE_FILE_SYSTEM 0x1000 6136 #define IMAGE_FILE_DLL 0x2000 6137 #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 6138 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 6139 6140 #define IMAGE_FILE_MACHINE_UNKNOWN 0 6141 #define IMAGE_FILE_MACHINE_I386 0x014c 6142 #define IMAGE_FILE_MACHINE_R3000 0x0162 6143 #define IMAGE_FILE_MACHINE_R4000 0x0166 6144 #define IMAGE_FILE_MACHINE_R10000 0x0168 6145 #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 6146 #define IMAGE_FILE_MACHINE_ALPHA 0x0184 6147 #define IMAGE_FILE_MACHINE_SH3 0x01a2 6148 #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 6149 #define IMAGE_FILE_MACHINE_SH3E 0x01a4 6150 #define IMAGE_FILE_MACHINE_SH4 0x01a6 6151 #define IMAGE_FILE_MACHINE_SH5 0x01a8 6152 #define IMAGE_FILE_MACHINE_ARM 0x01c0 6153 #define IMAGE_FILE_MACHINE_ARMV7 0x01c4 6154 #define IMAGE_FILE_MACHINE_ARMNT 0x01c4 6155 #define IMAGE_FILE_MACHINE_ARM64 0xaa64 6156 #define IMAGE_FILE_MACHINE_THUMB 0x01c2 6157 #define IMAGE_FILE_MACHINE_AM33 0x01d3 6158 #define IMAGE_FILE_MACHINE_POWERPC 0x01F0 6159 #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 6160 #define IMAGE_FILE_MACHINE_IA64 0x0200 6161 #define IMAGE_FILE_MACHINE_MIPS16 0x0266 6162 #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 6163 #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 6164 #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 6165 #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 6166 #define IMAGE_FILE_MACHINE_TRICORE 0x0520 6167 #define IMAGE_FILE_MACHINE_CEF 0x0CEF 6168 #define IMAGE_FILE_MACHINE_EBC 0x0EBC 6169 #define IMAGE_FILE_MACHINE_AMD64 0x8664 6170 #define IMAGE_FILE_MACHINE_M32R 0x9041 6171 #define IMAGE_FILE_MACHINE_CEE 0xc0ee 6172 6173 typedef struct _IMAGE_DATA_DIRECTORY { 6174 DWORD VirtualAddress; 6175 DWORD Size; 6176 } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; 6177 6178 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 6179 6180 typedef struct _IMAGE_OPTIONAL_HEADER { 6181 6182 WORD Magic; 6183 BYTE MajorLinkerVersion; 6184 BYTE MinorLinkerVersion; 6185 DWORD SizeOfCode; 6186 DWORD SizeOfInitializedData; 6187 DWORD SizeOfUninitializedData; 6188 DWORD AddressOfEntryPoint; 6189 DWORD BaseOfCode; 6190 DWORD BaseOfData; 6191 DWORD ImageBase; 6192 DWORD SectionAlignment; 6193 DWORD FileAlignment; 6194 WORD MajorOperatingSystemVersion; 6195 WORD MinorOperatingSystemVersion; 6196 WORD MajorImageVersion; 6197 WORD MinorImageVersion; 6198 WORD MajorSubsystemVersion; 6199 WORD MinorSubsystemVersion; 6200 DWORD Win32VersionValue; 6201 DWORD SizeOfImage; 6202 DWORD SizeOfHeaders; 6203 DWORD CheckSum; 6204 WORD Subsystem; 6205 WORD DllCharacteristics; 6206 DWORD SizeOfStackReserve; 6207 DWORD SizeOfStackCommit; 6208 DWORD SizeOfHeapReserve; 6209 DWORD SizeOfHeapCommit; 6210 DWORD LoaderFlags; 6211 DWORD NumberOfRvaAndSizes; 6212 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 6213 } IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32; 6214 6215 typedef struct _IMAGE_ROM_OPTIONAL_HEADER { 6216 WORD Magic; 6217 BYTE MajorLinkerVersion; 6218 BYTE MinorLinkerVersion; 6219 DWORD SizeOfCode; 6220 DWORD SizeOfInitializedData; 6221 DWORD SizeOfUninitializedData; 6222 DWORD AddressOfEntryPoint; 6223 DWORD BaseOfCode; 6224 DWORD BaseOfData; 6225 DWORD BaseOfBss; 6226 DWORD GprMask; 6227 DWORD CprMask[4]; 6228 DWORD GpValue; 6229 } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER; 6230 6231 typedef struct _IMAGE_OPTIONAL_HEADER64 { 6232 WORD Magic; 6233 BYTE MajorLinkerVersion; 6234 BYTE MinorLinkerVersion; 6235 DWORD SizeOfCode; 6236 DWORD SizeOfInitializedData; 6237 DWORD SizeOfUninitializedData; 6238 DWORD AddressOfEntryPoint; 6239 DWORD BaseOfCode; 6240 ULONGLONG ImageBase; 6241 DWORD SectionAlignment; 6242 DWORD FileAlignment; 6243 WORD MajorOperatingSystemVersion; 6244 WORD MinorOperatingSystemVersion; 6245 WORD MajorImageVersion; 6246 WORD MinorImageVersion; 6247 WORD MajorSubsystemVersion; 6248 WORD MinorSubsystemVersion; 6249 DWORD Win32VersionValue; 6250 DWORD SizeOfImage; 6251 DWORD SizeOfHeaders; 6252 DWORD CheckSum; 6253 WORD Subsystem; 6254 WORD DllCharacteristics; 6255 ULONGLONG SizeOfStackReserve; 6256 ULONGLONG SizeOfStackCommit; 6257 ULONGLONG SizeOfHeapReserve; 6258 ULONGLONG SizeOfHeapCommit; 6259 DWORD LoaderFlags; 6260 DWORD NumberOfRvaAndSizes; 6261 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 6262 } IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64; 6263 6264 #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 6265 #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 6266 #define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224 6267 #define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240 6268 6269 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b 6270 #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b 6271 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 6272 6273 #ifdef _WIN64 6274 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; 6275 typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; 6276 #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 6277 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC 6278 #else /* _WIN64 */ 6279 typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; 6280 typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; 6281 #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 6282 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC 6283 #endif /* _WIN64 */ 6284 6285 typedef struct _IMAGE_NT_HEADERS64 { 6286 DWORD Signature; 6287 IMAGE_FILE_HEADER FileHeader; 6288 IMAGE_OPTIONAL_HEADER64 OptionalHeader; 6289 } IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64; 6290 6291 typedef struct _IMAGE_NT_HEADERS { 6292 DWORD Signature; 6293 IMAGE_FILE_HEADER FileHeader; 6294 IMAGE_OPTIONAL_HEADER32 OptionalHeader; 6295 } IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32; 6296 6297 typedef struct _IMAGE_ROM_HEADERS { 6298 IMAGE_FILE_HEADER FileHeader; 6299 IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; 6300 } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS; 6301 6302 #ifdef _WIN64 6303 typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; 6304 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; 6305 #else /* _WIN64 */ 6306 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; 6307 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; 6308 #endif /* _WIN64 */ 6309 6310 #define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader)) 6311 6312 #define IMAGE_SUBSYSTEM_UNKNOWN 0 6313 #define IMAGE_SUBSYSTEM_NATIVE 1 6314 #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 6315 #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 6316 #define IMAGE_SUBSYSTEM_OS2_CUI 5 6317 #define IMAGE_SUBSYSTEM_POSIX_CUI 7 6318 #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 6319 #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 6320 #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 6321 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 6322 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 6323 #define IMAGE_SUBSYSTEM_EFI_ROM 13 6324 #define IMAGE_SUBSYSTEM_XBOX 14 6325 #define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16 6326 6327 #define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020 6328 #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 6329 #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 6330 #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 6331 #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 6332 #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 6333 #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 6334 #define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000 6335 #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 6336 #define IMAGE_DLLCHARACTERISTICS_GUARD_CF 0x4000 6337 #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 6338 6339 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 6340 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 6341 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 6342 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 6343 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 6344 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 6345 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6 6346 #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 6347 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 6348 #define IMAGE_DIRECTORY_ENTRY_TLS 9 6349 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 6350 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 6351 #define IMAGE_DIRECTORY_ENTRY_IAT 12 6352 #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 6353 #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 6354 6355 typedef struct ANON_OBJECT_HEADER { 6356 WORD Sig1; 6357 WORD Sig2; 6358 WORD Version; 6359 WORD Machine; 6360 DWORD TimeDateStamp; 6361 CLSID ClassID; 6362 DWORD SizeOfData; 6363 } ANON_OBJECT_HEADER; 6364 6365 typedef struct ANON_OBJECT_HEADER_V2 { 6366 WORD Sig1; 6367 WORD Sig2; 6368 WORD Version; 6369 WORD Machine; 6370 DWORD TimeDateStamp; 6371 CLSID ClassID; 6372 DWORD SizeOfData; 6373 DWORD Flags; 6374 DWORD MetaDataSize; 6375 DWORD MetaDataOffset; 6376 } ANON_OBJECT_HEADER_V2; 6377 6378 typedef struct ANON_OBJECT_HEADER_BIGOBJ { 6379 WORD Sig1; 6380 WORD Sig2; 6381 WORD Version; 6382 WORD Machine; 6383 DWORD TimeDateStamp; 6384 CLSID ClassID; 6385 DWORD SizeOfData; 6386 DWORD Flags; 6387 DWORD MetaDataSize; 6388 DWORD MetaDataOffset; 6389 DWORD NumberOfSections; 6390 DWORD PointerToSymbolTable; 6391 DWORD NumberOfSymbols; 6392 } ANON_OBJECT_HEADER_BIGOBJ; 6393 6394 #define IMAGE_SIZEOF_SHORT_NAME 8 6395 6396 typedef struct _IMAGE_SECTION_HEADER { 6397 BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; 6398 union { 6399 DWORD PhysicalAddress; 6400 DWORD VirtualSize; 6401 } Misc; 6402 DWORD VirtualAddress; 6403 DWORD SizeOfRawData; 6404 DWORD PointerToRawData; 6405 DWORD PointerToRelocations; 6406 DWORD PointerToLinenumbers; 6407 WORD NumberOfRelocations; 6408 WORD NumberOfLinenumbers; 6409 DWORD Characteristics; 6410 } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; 6411 6412 #define IMAGE_SIZEOF_SECTION_HEADER 40 6413 6414 #define IMAGE_SCN_TYPE_NO_PAD 0x00000008 6415 6416 #define IMAGE_SCN_CNT_CODE 0x00000020 6417 #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 6418 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 6419 #define IMAGE_SCN_LNK_OTHER 0x00000100 6420 #define IMAGE_SCN_LNK_INFO 0x00000200 6421 #define IMAGE_SCN_LNK_REMOVE 0x00000800 6422 #define IMAGE_SCN_LNK_COMDAT 0x00001000 6423 #define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000 6424 #define IMAGE_SCN_GPREL 0x00008000 6425 #define IMAGE_SCN_MEM_FARDATA 0x00008000 6426 #define IMAGE_SCN_MEM_PURGEABLE 0x00020000 6427 #define IMAGE_SCN_MEM_16BIT 0x00020000 6428 #define IMAGE_SCN_MEM_LOCKED 0x00040000 6429 #define IMAGE_SCN_MEM_PRELOAD 0x00080000 6430 6431 #define IMAGE_SCN_ALIGN_1BYTES 0x00100000 6432 #define IMAGE_SCN_ALIGN_2BYTES 0x00200000 6433 #define IMAGE_SCN_ALIGN_4BYTES 0x00300000 6434 #define IMAGE_SCN_ALIGN_8BYTES 0x00400000 6435 #define IMAGE_SCN_ALIGN_16BYTES 0x00500000 6436 #define IMAGE_SCN_ALIGN_32BYTES 0x00600000 6437 #define IMAGE_SCN_ALIGN_64BYTES 0x00700000 6438 #define IMAGE_SCN_ALIGN_128BYTES 0x00800000 6439 #define IMAGE_SCN_ALIGN_256BYTES 0x00900000 6440 #define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 6441 #define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 6442 #define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 6443 #define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 6444 #define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 6445 6446 #define IMAGE_SCN_ALIGN_MASK 0x00F00000 6447 6448 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 6449 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 6450 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 6451 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 6452 #define IMAGE_SCN_MEM_SHARED 0x10000000 6453 #define IMAGE_SCN_MEM_EXECUTE 0x20000000 6454 #define IMAGE_SCN_MEM_READ 0x40000000 6455 #define IMAGE_SCN_MEM_WRITE 0x80000000 6456 6457 #define IMAGE_SCN_SCALE_INDEX 0x00000001 6458 6459 #include "pshpack2.h" 6460 typedef struct _IMAGE_SYMBOL { 6461 union { 6462 BYTE ShortName[8]; 6463 struct { 6464 DWORD Short; 6465 DWORD Long; 6466 } Name; 6467 DWORD LongName[2]; 6468 } N; 6469 DWORD Value; 6470 SHORT SectionNumber; 6471 WORD Type; 6472 BYTE StorageClass; 6473 BYTE NumberOfAuxSymbols; 6474 } IMAGE_SYMBOL; 6475 typedef IMAGE_SYMBOL UNALIGNED *PIMAGE_SYMBOL; 6476 6477 #define IMAGE_SIZEOF_SYMBOL 18 6478 6479 typedef struct _IMAGE_SYMBOL_EX { 6480 union { 6481 BYTE ShortName[8]; 6482 struct { 6483 DWORD Short; 6484 DWORD Long; 6485 } Name; 6486 DWORD LongName[2]; 6487 } N; 6488 DWORD Value; 6489 LONG SectionNumber; 6490 WORD Type; 6491 BYTE StorageClass; 6492 BYTE NumberOfAuxSymbols; 6493 } IMAGE_SYMBOL_EX,UNALIGNED *PIMAGE_SYMBOL_EX; 6494 6495 #define IMAGE_SYM_UNDEFINED (SHORT)0 6496 #define IMAGE_SYM_ABSOLUTE (SHORT)-1 6497 #define IMAGE_SYM_DEBUG (SHORT)-2 6498 #define IMAGE_SYM_SECTION_MAX 0xFEFF 6499 #define IMAGE_SYM_SECTION_MAX_EX MAXLONG 6500 6501 #define IMAGE_SYM_TYPE_NULL 0x0000 6502 #define IMAGE_SYM_TYPE_VOID 0x0001 6503 #define IMAGE_SYM_TYPE_CHAR 0x0002 6504 #define IMAGE_SYM_TYPE_SHORT 0x0003 6505 #define IMAGE_SYM_TYPE_INT 0x0004 6506 #define IMAGE_SYM_TYPE_LONG 0x0005 6507 #define IMAGE_SYM_TYPE_FLOAT 0x0006 6508 #define IMAGE_SYM_TYPE_DOUBLE 0x0007 6509 #define IMAGE_SYM_TYPE_STRUCT 0x0008 6510 #define IMAGE_SYM_TYPE_UNION 0x0009 6511 #define IMAGE_SYM_TYPE_ENUM 0x000A 6512 #define IMAGE_SYM_TYPE_MOE 0x000B 6513 #define IMAGE_SYM_TYPE_BYTE 0x000C 6514 #define IMAGE_SYM_TYPE_WORD 0x000D 6515 #define IMAGE_SYM_TYPE_UINT 0x000E 6516 #define IMAGE_SYM_TYPE_DWORD 0x000F 6517 #define IMAGE_SYM_TYPE_PCODE 0x8000 6518 6519 #define IMAGE_SYM_DTYPE_NULL 0 6520 #define IMAGE_SYM_DTYPE_POINTER 1 6521 #define IMAGE_SYM_DTYPE_FUNCTION 2 6522 #define IMAGE_SYM_DTYPE_ARRAY 3 6523 6524 #define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE)-1 6525 #define IMAGE_SYM_CLASS_NULL 0x0000 6526 #define IMAGE_SYM_CLASS_AUTOMATIC 0x0001 6527 #define IMAGE_SYM_CLASS_EXTERNAL 0x0002 6528 #define IMAGE_SYM_CLASS_STATIC 0x0003 6529 #define IMAGE_SYM_CLASS_REGISTER 0x0004 6530 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005 6531 #define IMAGE_SYM_CLASS_LABEL 0x0006 6532 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007 6533 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008 6534 #define IMAGE_SYM_CLASS_ARGUMENT 0x0009 6535 #define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A 6536 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B 6537 #define IMAGE_SYM_CLASS_UNION_TAG 0x000C 6538 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D 6539 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E 6540 #define IMAGE_SYM_CLASS_ENUM_TAG 0x000F 6541 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010 6542 #define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011 6543 #define IMAGE_SYM_CLASS_BIT_FIELD 0x0012 6544 #define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044 6545 #define IMAGE_SYM_CLASS_BLOCK 0x0064 6546 #define IMAGE_SYM_CLASS_FUNCTION 0x0065 6547 #define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066 6548 #define IMAGE_SYM_CLASS_FILE 0x0067 6549 #define IMAGE_SYM_CLASS_SECTION 0x0068 6550 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069 6551 #define IMAGE_SYM_CLASS_CLR_TOKEN 0x006B 6552 6553 #define N_BTMASK 0x000F 6554 #define N_TMASK 0x0030 6555 #define N_TMASK1 0x00C0 6556 #define N_TMASK2 0x00F0 6557 #define N_BTSHFT 4 6558 #define N_TSHIFT 2 6559 6560 #define BTYPE(x) ((x) & N_BTMASK) 6561 6562 #ifndef ISPTR 6563 #define ISPTR(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_POINTER << N_BTSHFT)) 6564 #endif 6565 6566 #ifndef ISFCN 6567 #define ISFCN(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT)) 6568 #endif 6569 6570 #ifndef ISARY 6571 #define ISARY(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT)) 6572 #endif 6573 6574 #ifndef ISTAG 6575 #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG) 6576 #endif 6577 6578 #ifndef INCREF 6579 #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK)) 6580 #endif 6581 #ifndef DECREF 6582 #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK)) 6583 #endif 6584 6585 #include <pshpack2.h> 6586 typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF { 6587 BYTE bAuxType; 6588 BYTE bReserved; 6589 DWORD SymbolTableIndex; 6590 BYTE rgbReserved[12]; 6591 } IMAGE_AUX_SYMBOL_TOKEN_DEF,UNALIGNED *PIMAGE_AUX_SYMBOL_TOKEN_DEF; 6592 #include <poppack.h> 6593 6594 typedef union _IMAGE_AUX_SYMBOL { 6595 struct { 6596 DWORD TagIndex; 6597 union { 6598 struct { 6599 WORD Linenumber; 6600 WORD Size; 6601 } LnSz; 6602 DWORD TotalSize; 6603 } Misc; 6604 union { 6605 struct { 6606 DWORD PointerToLinenumber; 6607 DWORD PointerToNextFunction; 6608 } Function; 6609 struct { 6610 WORD Dimension[4]; 6611 } Array; 6612 } FcnAry; 6613 WORD TvIndex; 6614 } Sym; 6615 struct { 6616 BYTE Name[IMAGE_SIZEOF_SYMBOL]; 6617 } File; 6618 struct { 6619 DWORD Length; 6620 WORD NumberOfRelocations; 6621 WORD NumberOfLinenumbers; 6622 DWORD CheckSum; 6623 SHORT Number; 6624 BYTE Selection; 6625 } Section; 6626 IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; 6627 struct { 6628 DWORD crc; 6629 BYTE rgbReserved[14]; 6630 } CRC; 6631 } IMAGE_AUX_SYMBOL,UNALIGNED *PIMAGE_AUX_SYMBOL; 6632 6633 typedef union _IMAGE_AUX_SYMBOL_EX { 6634 struct { 6635 DWORD WeakDefaultSymIndex; 6636 DWORD WeakSearchType; 6637 BYTE rgbReserved[12]; 6638 } Sym; 6639 struct { 6640 BYTE Name[sizeof (IMAGE_SYMBOL_EX)]; 6641 } File; 6642 struct { 6643 DWORD Length; 6644 WORD NumberOfRelocations; 6645 WORD NumberOfLinenumbers; 6646 DWORD CheckSum; 6647 SHORT Number; 6648 BYTE Selection; 6649 BYTE bReserved; 6650 SHORT HighNumber; 6651 BYTE rgbReserved[2]; 6652 } Section; 6653 __C89_NAMELESS struct { 6654 IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; 6655 BYTE rgbReserved[2]; 6656 }; 6657 struct { 6658 DWORD crc; 6659 BYTE rgbReserved[16]; 6660 } CRC; 6661 } IMAGE_AUX_SYMBOL_EX,UNALIGNED *PIMAGE_AUX_SYMBOL_EX; 6662 6663 #define IMAGE_SIZEOF_AUX_SYMBOL 18 6664 6665 typedef enum IMAGE_AUX_SYMBOL_TYPE { 6666 IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1 6667 } IMAGE_AUX_SYMBOL_TYPE; 6668 6669 #define IMAGE_COMDAT_SELECT_NODUPLICATES 1 6670 #define IMAGE_COMDAT_SELECT_ANY 2 6671 #define IMAGE_COMDAT_SELECT_SAME_SIZE 3 6672 #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 6673 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 6674 #define IMAGE_COMDAT_SELECT_LARGEST 6 6675 #define IMAGE_COMDAT_SELECT_NEWEST 7 6676 6677 #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 6678 #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 6679 #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 6680 6681 typedef struct _IMAGE_RELOCATION { 6682 __C89_NAMELESS union { 6683 DWORD VirtualAddress; 6684 DWORD RelocCount; 6685 } DUMMYUNIONNAME; 6686 DWORD SymbolTableIndex; 6687 WORD Type; 6688 } IMAGE_RELOCATION; 6689 typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION; 6690 6691 #define IMAGE_SIZEOF_RELOCATION 10 6692 6693 #define IMAGE_REL_I386_ABSOLUTE 0x0000 6694 #define IMAGE_REL_I386_DIR16 0x0001 6695 #define IMAGE_REL_I386_REL16 0x0002 6696 #define IMAGE_REL_I386_DIR32 0x0006 6697 #define IMAGE_REL_I386_DIR32NB 0x0007 6698 #define IMAGE_REL_I386_SEG12 0x0009 6699 #define IMAGE_REL_I386_SECTION 0x000A 6700 #define IMAGE_REL_I386_SECREL 0x000B 6701 #define IMAGE_REL_I386_TOKEN 0x000C 6702 #define IMAGE_REL_I386_SECREL7 0x000D 6703 #define IMAGE_REL_I386_REL32 0x0014 6704 6705 #define IMAGE_REL_MIPS_ABSOLUTE 0x0000 6706 #define IMAGE_REL_MIPS_REFHALF 0x0001 6707 #define IMAGE_REL_MIPS_REFWORD 0x0002 6708 #define IMAGE_REL_MIPS_JMPADDR 0x0003 6709 #define IMAGE_REL_MIPS_REFHI 0x0004 6710 #define IMAGE_REL_MIPS_REFLO 0x0005 6711 #define IMAGE_REL_MIPS_GPREL 0x0006 6712 #define IMAGE_REL_MIPS_LITERAL 0x0007 6713 #define IMAGE_REL_MIPS_SECTION 0x000A 6714 #define IMAGE_REL_MIPS_SECREL 0x000B 6715 #define IMAGE_REL_MIPS_SECRELLO 0x000C 6716 #define IMAGE_REL_MIPS_SECRELHI 0x000D 6717 #define IMAGE_REL_MIPS_TOKEN 0x000E 6718 #define IMAGE_REL_MIPS_JMPADDR16 0x0010 6719 #define IMAGE_REL_MIPS_REFWORDNB 0x0022 6720 #define IMAGE_REL_MIPS_PAIR 0x0025 6721 6722 #define IMAGE_REL_ALPHA_ABSOLUTE 0x0000 6723 #define IMAGE_REL_ALPHA_REFLONG 0x0001 6724 #define IMAGE_REL_ALPHA_REFQUAD 0x0002 6725 #define IMAGE_REL_ALPHA_GPREL32 0x0003 6726 #define IMAGE_REL_ALPHA_LITERAL 0x0004 6727 #define IMAGE_REL_ALPHA_LITUSE 0x0005 6728 #define IMAGE_REL_ALPHA_GPDISP 0x0006 6729 #define IMAGE_REL_ALPHA_BRADDR 0x0007 6730 #define IMAGE_REL_ALPHA_HINT 0x0008 6731 #define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009 6732 #define IMAGE_REL_ALPHA_REFHI 0x000A 6733 #define IMAGE_REL_ALPHA_REFLO 0x000B 6734 #define IMAGE_REL_ALPHA_PAIR 0x000C 6735 #define IMAGE_REL_ALPHA_MATCH 0x000D 6736 #define IMAGE_REL_ALPHA_SECTION 0x000E 6737 #define IMAGE_REL_ALPHA_SECREL 0x000F 6738 #define IMAGE_REL_ALPHA_REFLONGNB 0x0010 6739 #define IMAGE_REL_ALPHA_SECRELLO 0x0011 6740 #define IMAGE_REL_ALPHA_SECRELHI 0x0012 6741 #define IMAGE_REL_ALPHA_REFQ3 0x0013 6742 #define IMAGE_REL_ALPHA_REFQ2 0x0014 6743 #define IMAGE_REL_ALPHA_REFQ1 0x0015 6744 #define IMAGE_REL_ALPHA_GPRELLO 0x0016 6745 #define IMAGE_REL_ALPHA_GPRELHI 0x0017 6746 6747 #define IMAGE_REL_PPC_ABSOLUTE 0x0000 6748 #define IMAGE_REL_PPC_ADDR64 0x0001 6749 #define IMAGE_REL_PPC_ADDR32 0x0002 6750 #define IMAGE_REL_PPC_ADDR24 0x0003 6751 #define IMAGE_REL_PPC_ADDR16 0x0004 6752 #define IMAGE_REL_PPC_ADDR14 0x0005 6753 #define IMAGE_REL_PPC_REL24 0x0006 6754 #define IMAGE_REL_PPC_REL14 0x0007 6755 #define IMAGE_REL_PPC_TOCREL16 0x0008 6756 #define IMAGE_REL_PPC_TOCREL14 0x0009 6757 #define IMAGE_REL_PPC_ADDR32NB 0x000A 6758 #define IMAGE_REL_PPC_SECREL 0x000B 6759 #define IMAGE_REL_PPC_SECTION 0x000C 6760 #define IMAGE_REL_PPC_IFGLUE 0x000D 6761 #define IMAGE_REL_PPC_IMGLUE 0x000E 6762 #define IMAGE_REL_PPC_SECREL16 0x000F 6763 #define IMAGE_REL_PPC_REFHI 0x0010 6764 #define IMAGE_REL_PPC_REFLO 0x0011 6765 #define IMAGE_REL_PPC_PAIR 0x0012 6766 #define IMAGE_REL_PPC_SECRELLO 0x0013 6767 #define IMAGE_REL_PPC_SECRELHI 0x0014 6768 #define IMAGE_REL_PPC_GPREL 0x0015 6769 #define IMAGE_REL_PPC_TOKEN 0x0016 6770 #define IMAGE_REL_PPC_TYPEMASK 0x00FF 6771 #define IMAGE_REL_PPC_NEG 0x0100 6772 #define IMAGE_REL_PPC_BRTAKEN 0x0200 6773 #define IMAGE_REL_PPC_BRNTAKEN 0x0400 6774 #define IMAGE_REL_PPC_TOCDEFN 0x0800 6775 6776 #define IMAGE_REL_SH3_ABSOLUTE 0x0000 6777 #define IMAGE_REL_SH3_DIRECT16 0x0001 6778 #define IMAGE_REL_SH3_DIRECT32 0x0002 6779 #define IMAGE_REL_SH3_DIRECT8 0x0003 6780 #define IMAGE_REL_SH3_DIRECT8_WORD 0x0004 6781 #define IMAGE_REL_SH3_DIRECT8_LONG 0x0005 6782 #define IMAGE_REL_SH3_DIRECT4 0x0006 6783 #define IMAGE_REL_SH3_DIRECT4_WORD 0x0007 6784 #define IMAGE_REL_SH3_DIRECT4_LONG 0x0008 6785 #define IMAGE_REL_SH3_PCREL8_WORD 0x0009 6786 #define IMAGE_REL_SH3_PCREL8_LONG 0x000A 6787 #define IMAGE_REL_SH3_PCREL12_WORD 0x000B 6788 #define IMAGE_REL_SH3_STARTOF_SECTION 0x000C 6789 #define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D 6790 #define IMAGE_REL_SH3_SECTION 0x000E 6791 #define IMAGE_REL_SH3_SECREL 0x000F 6792 #define IMAGE_REL_SH3_DIRECT32_NB 0x0010 6793 #define IMAGE_REL_SH3_GPREL4_LONG 0x0011 6794 #define IMAGE_REL_SH3_TOKEN 0x0012 6795 6796 #define IMAGE_REL_SHM_PCRELPT 0x0013 6797 #define IMAGE_REL_SHM_REFLO 0x0014 6798 #define IMAGE_REL_SHM_REFHALF 0x0015 6799 #define IMAGE_REL_SHM_RELLO 0x0016 6800 #define IMAGE_REL_SHM_RELHALF 0x0017 6801 #define IMAGE_REL_SHM_PAIR 0x0018 6802 6803 #define IMAGE_REL_SH_NOMODE 0x8000 6804 6805 #define IMAGE_REL_ARM_ABSOLUTE 0x0000 6806 #define IMAGE_REL_ARM_ADDR32 0x0001 6807 #define IMAGE_REL_ARM_ADDR32NB 0x0002 6808 #define IMAGE_REL_ARM_BRANCH24 0x0003 6809 #define IMAGE_REL_ARM_BRANCH11 0x0004 6810 #define IMAGE_REL_ARM_TOKEN 0x0005 6811 #define IMAGE_REL_ARM_GPREL12 0x0006 6812 #define IMAGE_REL_ARM_GPREL7 0x0007 6813 #define IMAGE_REL_ARM_BLX24 0x0008 6814 #define IMAGE_REL_ARM_BLX11 0x0009 6815 #define IMAGE_REL_ARM_SECTION 0x000E 6816 #define IMAGE_REL_ARM_SECREL 0x000F 6817 #define IMAGE_REL_ARM_MOV32A 0x0010 6818 #define IMAGE_REL_ARM_MOV32 0x0010 6819 #define IMAGE_REL_ARM_MOV32T 0x0011 6820 #define IMAGE_REL_THUMB_MOV32 0x0011 6821 #define IMAGE_REL_ARM_BRANCH20T 0x0012 6822 #define IMAGE_REL_THUMB_BRANCH20 0x0012 6823 #define IMAGE_REL_ARM_BRANCH24T 0x0014 6824 #define IMAGE_REL_THUMB_BRANCH24 0x0014 6825 #define IMAGE_REL_ARM_BLX23T 0x0015 6826 #define IMAGE_REL_THUMB_BLX23 0x0015 6827 6828 #define IMAGE_REL_AM_ABSOLUTE 0x0000 6829 #define IMAGE_REL_AM_ADDR32 0x0001 6830 #define IMAGE_REL_AM_ADDR32NB 0x0002 6831 #define IMAGE_REL_AM_CALL32 0x0003 6832 #define IMAGE_REL_AM_FUNCINFO 0x0004 6833 #define IMAGE_REL_AM_REL32_1 0x0005 6834 #define IMAGE_REL_AM_REL32_2 0x0006 6835 #define IMAGE_REL_AM_SECREL 0x0007 6836 #define IMAGE_REL_AM_SECTION 0x0008 6837 #define IMAGE_REL_AM_TOKEN 0x0009 6838 6839 #define IMAGE_REL_AMD64_ABSOLUTE 0x0000 6840 #define IMAGE_REL_AMD64_ADDR64 0x0001 6841 #define IMAGE_REL_AMD64_ADDR32 0x0002 6842 #define IMAGE_REL_AMD64_ADDR32NB 0x0003 6843 #define IMAGE_REL_AMD64_REL32 0x0004 6844 #define IMAGE_REL_AMD64_REL32_1 0x0005 6845 #define IMAGE_REL_AMD64_REL32_2 0x0006 6846 #define IMAGE_REL_AMD64_REL32_3 0x0007 6847 #define IMAGE_REL_AMD64_REL32_4 0x0008 6848 #define IMAGE_REL_AMD64_REL32_5 0x0009 6849 #define IMAGE_REL_AMD64_SECTION 0x000A 6850 #define IMAGE_REL_AMD64_SECREL 0x000B 6851 #define IMAGE_REL_AMD64_SECREL7 0x000C 6852 #define IMAGE_REL_AMD64_TOKEN 0x000D 6853 #define IMAGE_REL_AMD64_SREL32 0x000E 6854 #define IMAGE_REL_AMD64_PAIR 0x000F 6855 #define IMAGE_REL_AMD64_SSPAN32 0x0010 6856 6857 #define IMAGE_REL_IA64_ABSOLUTE 0x0000 6858 #define IMAGE_REL_IA64_IMM14 0x0001 6859 #define IMAGE_REL_IA64_IMM22 0x0002 6860 #define IMAGE_REL_IA64_IMM64 0x0003 6861 #define IMAGE_REL_IA64_DIR32 0x0004 6862 #define IMAGE_REL_IA64_DIR64 0x0005 6863 #define IMAGE_REL_IA64_PCREL21B 0x0006 6864 #define IMAGE_REL_IA64_PCREL21M 0x0007 6865 #define IMAGE_REL_IA64_PCREL21F 0x0008 6866 #define IMAGE_REL_IA64_GPREL22 0x0009 6867 #define IMAGE_REL_IA64_LTOFF22 0x000A 6868 #define IMAGE_REL_IA64_SECTION 0x000B 6869 #define IMAGE_REL_IA64_SECREL22 0x000C 6870 #define IMAGE_REL_IA64_SECREL64I 0x000D 6871 #define IMAGE_REL_IA64_SECREL32 0x000E 6872 6873 #define IMAGE_REL_IA64_DIR32NB 0x0010 6874 #define IMAGE_REL_IA64_SREL14 0x0011 6875 #define IMAGE_REL_IA64_SREL22 0x0012 6876 #define IMAGE_REL_IA64_SREL32 0x0013 6877 #define IMAGE_REL_IA64_UREL32 0x0014 6878 #define IMAGE_REL_IA64_PCREL60X 0x0015 6879 #define IMAGE_REL_IA64_PCREL60B 0x0016 6880 #define IMAGE_REL_IA64_PCREL60F 0x0017 6881 #define IMAGE_REL_IA64_PCREL60I 0x0018 6882 #define IMAGE_REL_IA64_PCREL60M 0x0019 6883 #define IMAGE_REL_IA64_IMMGPREL64 0x001A 6884 #define IMAGE_REL_IA64_TOKEN 0x001B 6885 #define IMAGE_REL_IA64_GPREL32 0x001C 6886 #define IMAGE_REL_IA64_ADDEND 0x001F 6887 6888 #define IMAGE_REL_CEF_ABSOLUTE 0x0000 6889 #define IMAGE_REL_CEF_ADDR32 0x0001 6890 #define IMAGE_REL_CEF_ADDR64 0x0002 6891 #define IMAGE_REL_CEF_ADDR32NB 0x0003 6892 #define IMAGE_REL_CEF_SECTION 0x0004 6893 #define IMAGE_REL_CEF_SECREL 0x0005 6894 #define IMAGE_REL_CEF_TOKEN 0x0006 6895 6896 #define IMAGE_REL_CEE_ABSOLUTE 0x0000 6897 #define IMAGE_REL_CEE_ADDR32 0x0001 6898 #define IMAGE_REL_CEE_ADDR64 0x0002 6899 #define IMAGE_REL_CEE_ADDR32NB 0x0003 6900 #define IMAGE_REL_CEE_SECTION 0x0004 6901 #define IMAGE_REL_CEE_SECREL 0x0005 6902 #define IMAGE_REL_CEE_TOKEN 0x0006 6903 6904 #define IMAGE_REL_M32R_ABSOLUTE 0x0000 6905 #define IMAGE_REL_M32R_ADDR32 0x0001 6906 #define IMAGE_REL_M32R_ADDR32NB 0x0002 6907 #define IMAGE_REL_M32R_ADDR24 0x0003 6908 #define IMAGE_REL_M32R_GPREL16 0x0004 6909 #define IMAGE_REL_M32R_PCREL24 0x0005 6910 #define IMAGE_REL_M32R_PCREL16 0x0006 6911 #define IMAGE_REL_M32R_PCREL8 0x0007 6912 #define IMAGE_REL_M32R_REFHALF 0x0008 6913 #define IMAGE_REL_M32R_REFHI 0x0009 6914 #define IMAGE_REL_M32R_REFLO 0x000A 6915 #define IMAGE_REL_M32R_PAIR 0x000B 6916 #define IMAGE_REL_M32R_SECTION 0x000C 6917 #define IMAGE_REL_M32R_SECREL32 0x000D 6918 #define IMAGE_REL_M32R_TOKEN 0x000E 6919 6920 #define IMAGE_REL_EBC_ABSOLUTE 0x0000 6921 #define IMAGE_REL_EBC_ADDR32NB 0x0001 6922 #define IMAGE_REL_EBC_REL32 0x0002 6923 #define IMAGE_REL_EBC_SECTION 0x0003 6924 #define IMAGE_REL_EBC_SECREL 0x0004 6925 6926 #define EXT_IMM64(Value,Address,Size,InstPos,ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) 6927 #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) 6928 6929 #define EMARCH_ENC_I17_IMM7B_INST_WORD_X 3 6930 #define EMARCH_ENC_I17_IMM7B_SIZE_X 7 6931 #define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 4 6932 #define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0 6933 6934 #define EMARCH_ENC_I17_IMM9D_INST_WORD_X 3 6935 #define EMARCH_ENC_I17_IMM9D_SIZE_X 9 6936 #define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 18 6937 #define EMARCH_ENC_I17_IMM9D_VAL_POS_X 7 6938 6939 #define EMARCH_ENC_I17_IMM5C_INST_WORD_X 3 6940 #define EMARCH_ENC_I17_IMM5C_SIZE_X 5 6941 #define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 13 6942 #define EMARCH_ENC_I17_IMM5C_VAL_POS_X 16 6943 6944 #define EMARCH_ENC_I17_IC_INST_WORD_X 3 6945 #define EMARCH_ENC_I17_IC_SIZE_X 1 6946 #define EMARCH_ENC_I17_IC_INST_WORD_POS_X 12 6947 #define EMARCH_ENC_I17_IC_VAL_POS_X 21 6948 6949 #define EMARCH_ENC_I17_IMM41a_INST_WORD_X 1 6950 #define EMARCH_ENC_I17_IMM41a_SIZE_X 10 6951 #define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 14 6952 #define EMARCH_ENC_I17_IMM41a_VAL_POS_X 22 6953 6954 #define EMARCH_ENC_I17_IMM41b_INST_WORD_X 1 6955 #define EMARCH_ENC_I17_IMM41b_SIZE_X 8 6956 #define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 24 6957 #define EMARCH_ENC_I17_IMM41b_VAL_POS_X 32 6958 6959 #define EMARCH_ENC_I17_IMM41c_INST_WORD_X 2 6960 #define EMARCH_ENC_I17_IMM41c_SIZE_X 23 6961 #define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0 6962 #define EMARCH_ENC_I17_IMM41c_VAL_POS_X 40 6963 6964 #define EMARCH_ENC_I17_SIGN_INST_WORD_X 3 6965 #define EMARCH_ENC_I17_SIGN_SIZE_X 1 6966 #define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 27 6967 #define EMARCH_ENC_I17_SIGN_VAL_POS_X 63 6968 6969 #define X3_OPCODE_INST_WORD_X 3 6970 #define X3_OPCODE_SIZE_X 4 6971 #define X3_OPCODE_INST_WORD_POS_X 28 6972 #define X3_OPCODE_SIGN_VAL_POS_X 0 6973 6974 #define X3_I_INST_WORD_X 3 6975 #define X3_I_SIZE_X 1 6976 #define X3_I_INST_WORD_POS_X 27 6977 #define X3_I_SIGN_VAL_POS_X 59 6978 6979 #define X3_D_WH_INST_WORD_X 3 6980 #define X3_D_WH_SIZE_X 3 6981 #define X3_D_WH_INST_WORD_POS_X 24 6982 #define X3_D_WH_SIGN_VAL_POS_X 0 6983 6984 #define X3_IMM20_INST_WORD_X 3 6985 #define X3_IMM20_SIZE_X 20 6986 #define X3_IMM20_INST_WORD_POS_X 4 6987 #define X3_IMM20_SIGN_VAL_POS_X 0 6988 6989 #define X3_IMM39_1_INST_WORD_X 2 6990 #define X3_IMM39_1_SIZE_X 23 6991 #define X3_IMM39_1_INST_WORD_POS_X 0 6992 #define X3_IMM39_1_SIGN_VAL_POS_X 36 6993 6994 #define X3_IMM39_2_INST_WORD_X 1 6995 #define X3_IMM39_2_SIZE_X 16 6996 #define X3_IMM39_2_INST_WORD_POS_X 16 6997 #define X3_IMM39_2_SIGN_VAL_POS_X 20 6998 6999 #define X3_P_INST_WORD_X 3 7000 #define X3_P_SIZE_X 4 7001 #define X3_P_INST_WORD_POS_X 0 7002 #define X3_P_SIGN_VAL_POS_X 0 7003 7004 #define X3_TMPLT_INST_WORD_X 0 7005 #define X3_TMPLT_SIZE_X 4 7006 #define X3_TMPLT_INST_WORD_POS_X 0 7007 #define X3_TMPLT_SIGN_VAL_POS_X 0 7008 7009 #define X3_BTYPE_QP_INST_WORD_X 2 7010 #define X3_BTYPE_QP_SIZE_X 9 7011 #define X3_BTYPE_QP_INST_WORD_POS_X 23 7012 #define X3_BTYPE_QP_INST_VAL_POS_X 0 7013 7014 #define X3_EMPTY_INST_WORD_X 1 7015 #define X3_EMPTY_SIZE_X 2 7016 #define X3_EMPTY_INST_WORD_POS_X 14 7017 #define X3_EMPTY_INST_VAL_POS_X 0 7018 7019 typedef struct _IMAGE_LINENUMBER { 7020 union { 7021 DWORD SymbolTableIndex; 7022 DWORD VirtualAddress; 7023 } Type; 7024 WORD Linenumber; 7025 } IMAGE_LINENUMBER; 7026 typedef IMAGE_LINENUMBER UNALIGNED *PIMAGE_LINENUMBER; 7027 7028 #define IMAGE_SIZEOF_LINENUMBER 6 7029 7030 #include "poppack.h" 7031 7032 typedef struct _IMAGE_BASE_RELOCATION { 7033 DWORD VirtualAddress; 7034 DWORD SizeOfBlock; 7035 } IMAGE_BASE_RELOCATION; 7036 typedef IMAGE_BASE_RELOCATION UNALIGNED *PIMAGE_BASE_RELOCATION; 7037 7038 #define IMAGE_SIZEOF_BASE_RELOCATION 8 7039 7040 #define IMAGE_REL_BASED_ABSOLUTE 0 7041 #define IMAGE_REL_BASED_HIGH 1 7042 #define IMAGE_REL_BASED_LOW 2 7043 #define IMAGE_REL_BASED_HIGHLOW 3 7044 #define IMAGE_REL_BASED_HIGHADJ 4 7045 #define IMAGE_REL_BASED_MIPS_JMPADDR 5 7046 #define IMAGE_REL_BASED_ARM_MOV32 5 7047 #define IMAGE_REL_BASED_THUMB_MOV32 7 7048 #define IMAGE_REL_BASED_MIPS_JMPADDR16 9 7049 #define IMAGE_REL_BASED_IA64_IMM64 9 7050 #define IMAGE_REL_BASED_DIR64 10 7051 7052 #define IMAGE_ARCHIVE_START_SIZE 8 7053 #define IMAGE_ARCHIVE_START "!<arch>\n" 7054 #define IMAGE_ARCHIVE_END "`\n" 7055 #define IMAGE_ARCHIVE_PAD "\n" 7056 #define IMAGE_ARCHIVE_LINKER_MEMBER "/ " 7057 #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " 7058 7059 typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { 7060 BYTE Name[16]; 7061 BYTE Date[12]; 7062 BYTE UserID[6]; 7063 BYTE GroupID[6]; 7064 BYTE Mode[8]; 7065 BYTE Size[10]; 7066 BYTE EndHeader[2]; 7067 } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER; 7068 7069 #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 7070 7071 typedef struct _IMAGE_EXPORT_DIRECTORY { 7072 DWORD Characteristics; 7073 DWORD TimeDateStamp; 7074 WORD MajorVersion; 7075 WORD MinorVersion; 7076 DWORD Name; 7077 DWORD Base; 7078 DWORD NumberOfFunctions; 7079 DWORD NumberOfNames; 7080 DWORD AddressOfFunctions; 7081 DWORD AddressOfNames; 7082 DWORD AddressOfNameOrdinals; 7083 } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY; 7084 7085 typedef struct _IMAGE_IMPORT_BY_NAME { 7086 WORD Hint; 7087 CHAR Name[1]; 7088 } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME; 7089 7090 #include "pshpack8.h" 7091 7092 typedef struct _IMAGE_THUNK_DATA64 { 7093 union { 7094 ULONGLONG ForwarderString; 7095 ULONGLONG Function; 7096 ULONGLONG Ordinal; 7097 ULONGLONG AddressOfData; 7098 } u1; 7099 } IMAGE_THUNK_DATA64; 7100 typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64; 7101 7102 #include "poppack.h" 7103 7104 typedef struct _IMAGE_THUNK_DATA32 { 7105 union { 7106 DWORD ForwarderString; 7107 DWORD Function; 7108 DWORD Ordinal; 7109 DWORD AddressOfData; 7110 } u1; 7111 } IMAGE_THUNK_DATA32; 7112 typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32; 7113 7114 #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ull 7115 #define IMAGE_ORDINAL_FLAG32 0x80000000 7116 #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffffull) 7117 #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) 7118 #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64)!=0) 7119 #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32)!=0) 7120 7121 typedef VOID (NTAPI *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved); 7122 7123 typedef struct _IMAGE_TLS_DIRECTORY64 { 7124 ULONGLONG StartAddressOfRawData; 7125 ULONGLONG EndAddressOfRawData; 7126 ULONGLONG AddressOfIndex; 7127 ULONGLONG AddressOfCallBacks; 7128 DWORD SizeOfZeroFill; 7129 DWORD Characteristics; 7130 } IMAGE_TLS_DIRECTORY64; 7131 typedef IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64; 7132 7133 typedef struct _IMAGE_TLS_DIRECTORY32 { 7134 DWORD StartAddressOfRawData; 7135 DWORD EndAddressOfRawData; 7136 DWORD AddressOfIndex; 7137 DWORD AddressOfCallBacks; 7138 DWORD SizeOfZeroFill; 7139 DWORD Characteristics; 7140 } IMAGE_TLS_DIRECTORY32; 7141 typedef IMAGE_TLS_DIRECTORY32 *PIMAGE_TLS_DIRECTORY32; 7142 7143 #ifdef _WIN64 7144 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64 7145 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal) 7146 typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; 7147 typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; 7148 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal) 7149 typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; 7150 typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY; 7151 #else /* _WIN64 */ 7152 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32 7153 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal) 7154 typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; 7155 typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; 7156 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal) 7157 typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; 7158 typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; 7159 #endif /* _WIN64 */ 7160 7161 typedef struct _IMAGE_IMPORT_DESCRIPTOR { 7162 __C89_NAMELESS union { 7163 DWORD Characteristics; 7164 DWORD OriginalFirstThunk; 7165 } DUMMYUNIONNAME; 7166 DWORD TimeDateStamp; 7167 7168 DWORD ForwarderChain; 7169 DWORD Name; 7170 DWORD FirstThunk; 7171 } IMAGE_IMPORT_DESCRIPTOR; 7172 typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR; 7173 7174 typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { 7175 DWORD TimeDateStamp; 7176 WORD OffsetModuleName; 7177 WORD NumberOfModuleForwarderRefs; 7178 } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR; 7179 7180 typedef struct _IMAGE_BOUND_FORWARDER_REF { 7181 DWORD TimeDateStamp; 7182 WORD OffsetModuleName; 7183 WORD Reserved; 7184 } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF; 7185 7186 typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR { 7187 union { 7188 DWORD AllAttributes; 7189 __C89_NAMELESS struct { 7190 DWORD RvaBased : 1; 7191 DWORD ReservedAttributes : 31; 7192 }; 7193 } Attributes; 7194 DWORD DllNameRVA; 7195 DWORD ModuleHandleRVA; 7196 DWORD ImportAddressTableRVA; 7197 DWORD ImportNameTableRVA; 7198 DWORD BoundImportAddressTableRVA; 7199 DWORD UnloadInformationTableRVA; 7200 DWORD TimeDateStamp; 7201 } IMAGE_DELAYLOAD_DESCRIPTOR,*PIMAGE_DELAYLOAD_DESCRIPTOR; 7202 typedef const IMAGE_DELAYLOAD_DESCRIPTOR *PCIMAGE_DELAYLOAD_DESCRIPTOR; 7203 7204 typedef struct _IMAGE_RESOURCE_DIRECTORY { 7205 DWORD Characteristics; 7206 DWORD TimeDateStamp; 7207 WORD MajorVersion; 7208 WORD MinorVersion; 7209 WORD NumberOfNamedEntries; 7210 WORD NumberOfIdEntries; 7211 } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY; 7212 7213 #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 7214 #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 7215 7216 typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { 7217 __C89_NAMELESS union { 7218 __C89_NAMELESS struct { 7219 DWORD NameOffset:31; 7220 DWORD NameIsString:1; 7221 } DUMMYSTRUCTNAME; 7222 DWORD Name; 7223 WORD Id; 7224 } DUMMYUNIONNAME; 7225 __C89_NAMELESS union { 7226 DWORD OffsetToData; 7227 __C89_NAMELESS struct { 7228 DWORD OffsetToDirectory:31; 7229 DWORD DataIsDirectory:1; 7230 } DUMMYSTRUCTNAME2; 7231 } DUMMYUNIONNAME2; 7232 } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY; 7233 7234 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { 7235 WORD Length; 7236 CHAR NameString[1]; 7237 } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING; 7238 7239 typedef struct _IMAGE_RESOURCE_DIR_STRING_U { 7240 WORD Length; 7241 WCHAR NameString[1]; 7242 } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U; 7243 7244 typedef struct _IMAGE_RESOURCE_DATA_ENTRY { 7245 DWORD OffsetToData; 7246 DWORD Size; 7247 DWORD CodePage; 7248 DWORD Reserved; 7249 } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY; 7250 7251 typedef struct { 7252 DWORD Size; 7253 DWORD TimeDateStamp; 7254 WORD MajorVersion; 7255 WORD MinorVersion; 7256 DWORD GlobalFlagsClear; 7257 DWORD GlobalFlagsSet; 7258 DWORD CriticalSectionDefaultTimeout; 7259 DWORD DeCommitFreeBlockThreshold; 7260 DWORD DeCommitTotalFreeThreshold; 7261 DWORD LockPrefixTable; 7262 DWORD MaximumAllocationSize; 7263 DWORD VirtualMemoryThreshold; 7264 DWORD ProcessHeapFlags; 7265 DWORD ProcessAffinityMask; 7266 WORD CSDVersion; 7267 WORD Reserved1; 7268 DWORD EditList; 7269 DWORD SecurityCookie; 7270 DWORD SEHandlerTable; 7271 DWORD SEHandlerCount; 7272 } IMAGE_LOAD_CONFIG_DIRECTORY32,*PIMAGE_LOAD_CONFIG_DIRECTORY32; 7273 7274 typedef struct { 7275 DWORD Size; 7276 DWORD TimeDateStamp; 7277 WORD MajorVersion; 7278 WORD MinorVersion; 7279 DWORD GlobalFlagsClear; 7280 DWORD GlobalFlagsSet; 7281 DWORD CriticalSectionDefaultTimeout; 7282 ULONGLONG DeCommitFreeBlockThreshold; 7283 ULONGLONG DeCommitTotalFreeThreshold; 7284 ULONGLONG LockPrefixTable; 7285 ULONGLONG MaximumAllocationSize; 7286 ULONGLONG VirtualMemoryThreshold; 7287 ULONGLONG ProcessAffinityMask; 7288 DWORD ProcessHeapFlags; 7289 WORD CSDVersion; 7290 WORD Reserved1; 7291 ULONGLONG EditList; 7292 ULONGLONG SecurityCookie; 7293 ULONGLONG SEHandlerTable; 7294 ULONGLONG SEHandlerCount; 7295 } IMAGE_LOAD_CONFIG_DIRECTORY64,*PIMAGE_LOAD_CONFIG_DIRECTORY64; 7296 7297 #ifdef _WIN64 7298 typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; 7299 typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; 7300 #else /* _WIN64 */ 7301 typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; 7302 typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; 7303 #endif /* _WIN64 */ 7304 7305 typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { 7306 DWORD FuncStart; 7307 DWORD PrologLen : 8; 7308 DWORD FuncLen : 22; 7309 DWORD ThirtyTwoBit : 1; 7310 DWORD ExceptionFlag : 1; 7311 } IMAGE_CE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; 7312 7313 typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { 7314 ULONGLONG BeginAddress; 7315 ULONGLONG EndAddress; 7316 ULONGLONG ExceptionHandler; 7317 ULONGLONG HandlerData; 7318 ULONGLONG PrologEndAddress; 7319 } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; 7320 7321 typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { 7322 DWORD BeginAddress; 7323 DWORD EndAddress; 7324 DWORD ExceptionHandler; 7325 DWORD HandlerData; 7326 DWORD PrologEndAddress; 7327 } IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; 7328 7329 typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY { 7330 DWORD BeginAddress; 7331 __C89_NAMELESS union { 7332 DWORD UnwindData; 7333 __C89_NAMELESS struct { 7334 DWORD Flag : 2; 7335 DWORD FunctionLength : 11; 7336 DWORD Ret : 2; 7337 DWORD H : 1; 7338 DWORD Reg : 3; 7339 DWORD R : 1; 7340 DWORD L : 1; 7341 DWORD C : 1; 7342 DWORD StackAdjust : 10; 7343 } DUMMYSTRUCTNAME; 7344 } DUMMYUNIONNAME; 7345 } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY; 7346 7347 typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY { 7348 DWORD BeginAddress; 7349 __C89_NAMELESS union { 7350 DWORD UnwindData; 7351 __C89_NAMELESS struct { 7352 DWORD Flag : 2; 7353 DWORD FunctionLength : 11; 7354 DWORD RegF : 3; 7355 DWORD RegI : 4; 7356 DWORD H : 1; 7357 DWORD CR : 2; 7358 DWORD FrameSize : 9; 7359 } DUMMYSTRUCTNAME; 7360 } DUMMYUNIONNAME; 7361 } IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY; 7362 7363 typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { 7364 DWORD BeginAddress; 7365 DWORD EndAddress; 7366 __C89_NAMELESS union { 7367 DWORD UnwindInfoAddress; 7368 DWORD UnwindData; 7369 } DUMMYUNIONNAME; 7370 } _IMAGE_RUNTIME_FUNCTION_ENTRY,*_PIMAGE_RUNTIME_FUNCTION_ENTRY; 7371 7372 typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY; 7373 typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY; 7374 7375 #if defined (_AXP64_) 7376 typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_AXP64_RUNTIME_FUNCTION_ENTRY; 7377 typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_AXP64_RUNTIME_FUNCTION_ENTRY; 7378 typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7379 typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7380 #elif defined (_ALPHA_) 7381 typedef IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7382 typedef PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7383 #elif defined (__arm__) 7384 typedef IMAGE_ARM_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7385 typedef PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7386 #else 7387 typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7388 typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7389 #endif 7390 7391 typedef struct _IMAGE_DEBUG_DIRECTORY { 7392 DWORD Characteristics; 7393 DWORD TimeDateStamp; 7394 WORD MajorVersion; 7395 WORD MinorVersion; 7396 DWORD Type; 7397 DWORD SizeOfData; 7398 DWORD AddressOfRawData; 7399 DWORD PointerToRawData; 7400 } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY; 7401 7402 #define IMAGE_DEBUG_TYPE_UNKNOWN 0 7403 #define IMAGE_DEBUG_TYPE_COFF 1 7404 #define IMAGE_DEBUG_TYPE_CODEVIEW 2 7405 #define IMAGE_DEBUG_TYPE_FPO 3 7406 #define IMAGE_DEBUG_TYPE_MISC 4 7407 #define IMAGE_DEBUG_TYPE_EXCEPTION 5 7408 #define IMAGE_DEBUG_TYPE_FIXUP 6 7409 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 7410 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 7411 #define IMAGE_DEBUG_TYPE_BORLAND 9 7412 #define IMAGE_DEBUG_TYPE_RESERVED10 10 7413 #define IMAGE_DEBUG_TYPE_CLSID 11 7414 7415 typedef struct _IMAGE_COFF_SYMBOLS_HEADER { 7416 DWORD NumberOfSymbols; 7417 DWORD LvaToFirstSymbol; 7418 DWORD NumberOfLinenumbers; 7419 DWORD LvaToFirstLinenumber; 7420 DWORD RvaToFirstByteOfCode; 7421 DWORD RvaToLastByteOfCode; 7422 DWORD RvaToFirstByteOfData; 7423 DWORD RvaToLastByteOfData; 7424 } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER; 7425 7426 #define FRAME_FPO 0 7427 #define FRAME_TRAP 1 7428 #define FRAME_TSS 2 7429 #define FRAME_NONFPO 3 7430 7431 typedef struct _FPO_DATA { 7432 DWORD ulOffStart; 7433 DWORD cbProcSize; 7434 DWORD cdwLocals; 7435 WORD cdwParams; 7436 WORD cbProlog : 8; 7437 WORD cbRegs : 3; 7438 WORD fHasSEH : 1; 7439 WORD fUseBP : 1; 7440 WORD reserved : 1; 7441 WORD cbFrame : 2; 7442 } FPO_DATA,*PFPO_DATA; 7443 #define SIZEOF_RFPO_DATA 16 7444 7445 #define IMAGE_DEBUG_MISC_EXENAME 1 7446 7447 typedef struct _IMAGE_DEBUG_MISC { 7448 DWORD DataType; 7449 DWORD Length; 7450 BOOLEAN Unicode; 7451 BYTE Reserved[3]; 7452 BYTE Data[1]; 7453 } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC; 7454 7455 typedef struct _IMAGE_FUNCTION_ENTRY { 7456 DWORD StartingAddress; 7457 DWORD EndingAddress; 7458 DWORD EndOfPrologue; 7459 } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY; 7460 7461 typedef struct _IMAGE_FUNCTION_ENTRY64 { 7462 ULONGLONG StartingAddress; 7463 ULONGLONG EndingAddress; 7464 __C89_NAMELESS union { 7465 ULONGLONG EndOfPrologue; 7466 ULONGLONG UnwindInfoAddress; 7467 } DUMMYUNIONNAME; 7468 } IMAGE_FUNCTION_ENTRY64,*PIMAGE_FUNCTION_ENTRY64; 7469 7470 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { 7471 WORD Signature; 7472 WORD Flags; 7473 WORD Machine; 7474 WORD Characteristics; 7475 DWORD TimeDateStamp; 7476 DWORD CheckSum; 7477 DWORD ImageBase; 7478 DWORD SizeOfImage; 7479 DWORD NumberOfSections; 7480 DWORD ExportedNamesSize; 7481 DWORD DebugDirectorySize; 7482 DWORD SectionAlignment; 7483 DWORD Reserved[2]; 7484 } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER; 7485 7486 typedef struct _NON_PAGED_DEBUG_INFO { 7487 WORD Signature; 7488 WORD Flags; 7489 DWORD Size; 7490 WORD Machine; 7491 WORD Characteristics; 7492 DWORD TimeDateStamp; 7493 DWORD CheckSum; 7494 DWORD SizeOfImage; 7495 ULONGLONG ImageBase; 7496 } NON_PAGED_DEBUG_INFO,*PNON_PAGED_DEBUG_INFO; 7497 7498 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 7499 #define NON_PAGED_DEBUG_SIGNATURE 0x494E 7500 7501 #define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 7502 #define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 7503 7504 typedef struct _ImageArchitectureHeader { 7505 unsigned int AmaskValue: 1; 7506 int Adummy1 : 7; 7507 unsigned int AmaskShift : 8; 7508 int Adummy2 : 16; 7509 DWORD FirstEntryRVA; 7510 } IMAGE_ARCHITECTURE_HEADER,*PIMAGE_ARCHITECTURE_HEADER; 7511 7512 typedef struct _ImageArchitectureEntry { 7513 DWORD FixupInstRVA; 7514 DWORD NewInst; 7515 } IMAGE_ARCHITECTURE_ENTRY,*PIMAGE_ARCHITECTURE_ENTRY; 7516 #include "poppack.h" 7517 7518 #define IMPORT_OBJECT_HDR_SIG2 0xffff 7519 7520 typedef struct IMPORT_OBJECT_HEADER { 7521 WORD Sig1; 7522 WORD Sig2; 7523 WORD Version; 7524 WORD Machine; 7525 DWORD TimeDateStamp; 7526 DWORD SizeOfData; 7527 __C89_NAMELESS union { 7528 WORD Ordinal; 7529 WORD Hint; 7530 }; 7531 WORD Type : 2; 7532 WORD NameType : 3; 7533 WORD Reserved : 11; 7534 } IMPORT_OBJECT_HEADER; 7535 7536 typedef enum IMPORT_OBJECT_TYPE { 7537 IMPORT_OBJECT_CODE = 0,IMPORT_OBJECT_DATA = 1,IMPORT_OBJECT_CONST = 2 7538 } IMPORT_OBJECT_TYPE; 7539 7540 typedef enum IMPORT_OBJECT_NAME_TYPE { 7541 IMPORT_OBJECT_ORDINAL = 0,IMPORT_OBJECT_NAME = 1,IMPORT_OBJECT_NAME_NO_PREFIX = 2,IMPORT_OBJECT_NAME_UNDECORATE = 3 7542 } IMPORT_OBJECT_NAME_TYPE; 7543 7544 #ifndef __IMAGE_COR20_HEADER_DEFINED__ 7545 #define __IMAGE_COR20_HEADER_DEFINED__ 7546 typedef enum ReplacesCorHdrNumericDefines { 7547 COMIMAGE_FLAGS_ILONLY = 0x00000001,COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004, 7548 COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,COR_VERSION_MAJOR_V2 = 2, 7549 COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,COR_VERSION_MINOR = 0,COR_DELETED_NAME_LENGTH = 8,COR_VTABLEGAP_NAME_LENGTH = 8, 7550 NATIVE_TYPE_MAX_CB = 1,COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE= 0xFF,IMAGE_COR_MIH_METHODRVA = 0x01,IMAGE_COR_MIH_EHRVA = 0x02, 7551 IMAGE_COR_MIH_BASICBLOCK = 0x08,COR_VTABLE_32BIT =0x01,COR_VTABLE_64BIT =0x02,COR_VTABLE_FROM_UNMANAGED = 0x04, 7552 COR_VTABLE_CALL_MOST_DERIVED = 0x10,IMAGE_COR_EATJ_THUNK_SIZE = 32,MAX_CLASS_NAME =1024,MAX_PACKAGE_NAME = 1024 7553 } ReplacesCorHdrNumericDefines; 7554 7555 typedef struct IMAGE_COR20_HEADER { 7556 DWORD cb; 7557 WORD MajorRuntimeVersion; 7558 WORD MinorRuntimeVersion; 7559 IMAGE_DATA_DIRECTORY MetaData; 7560 DWORD Flags; 7561 __C89_NAMELESS union { 7562 DWORD EntryPointToken; 7563 DWORD EntryPointRVA; 7564 } DUMMYUNIONNAME; 7565 IMAGE_DATA_DIRECTORY Resources; 7566 IMAGE_DATA_DIRECTORY StrongNameSignature; 7567 IMAGE_DATA_DIRECTORY CodeManagerTable; 7568 IMAGE_DATA_DIRECTORY VTableFixups; 7569 IMAGE_DATA_DIRECTORY ExportAddressTableJumps; 7570 IMAGE_DATA_DIRECTORY ManagedNativeHeader; 7571 } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER; 7572 #endif 7573 7574 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7575 NTSYSAPI WORD NTAPI RtlCaptureStackBackTrace (DWORD FramesToSkip, DWORD FramesToCapture, PVOID *BackTrace, PDWORD BackTraceHash); 7576 NTSYSAPI VOID NTAPI RtlCaptureContext (PCONTEXT ContextRecord); 7577 NTSYSAPI SIZE_T NTAPI RtlCompareMemory (const VOID *Source1, const VOID *Source2, SIZE_T Length); 7578 #if defined (__x86_64__) 7579 #if _WIN32_WINNT >= 0x0602 7580 NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd); 7581 NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount); 7582 NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable); 7583 #endif 7584 NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD64 BaseAddress); 7585 NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7586 NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (DWORD64 TableIdentifier, DWORD64 BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7587 NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7588 NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, DWORD64 ImageBase, DWORD64 ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PDWORD64 EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 7589 #endif 7590 #if defined (__arm__) 7591 #if _WIN32_WINNT >= 0x0602 7592 NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd); 7593 NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount); 7594 NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable); 7595 #endif 7596 NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD BaseAddress); 7597 NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7598 NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (DWORD TableIdentifier, DWORD BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7599 NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7600 NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, DWORD ImageBase, DWORD ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PDWORD EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 7601 #endif 7602 #if defined (__aarch64__) 7603 NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd); 7604 NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount); 7605 NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable); 7606 NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, ULONG_PTR BaseAddress); 7607 NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7608 NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (ULONG_PTR TableIdentifier, ULONG_PTR BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7609 NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7610 NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, ULONG_PTR ImageBase, ULONG_PTR ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PULONG_PTR EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 7611 #endif 7612 #if defined (__ia64__) 7613 NTSYSAPI BOOLEAN NTAPI RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, ULONGLONG BaseAddress, ULONGLONG TargetGp); 7614 NTSYSAPI BOOLEAN NTAPI RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7615 NTSYSAPI BOOLEAN NTAPI RtlInstallFunctionTableCallback (DWORD64 TableIdentifier, DWORD64 BaseAddress, DWORD Length, DWORD64 TargetGp, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7616 NTSYSAPI VOID NTAPI RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7617 NTSYSAPI ULONGLONG NTAPI RtlVirtualUnwind (ULONGLONG ImageBase, ULONGLONG ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PBOOLEAN InFunction, PFRAME_POINTERS EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 7618 #endif 7619 7620 #endif 7621 7622 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) 7623 NTSYSAPI VOID NTAPI RtlUnwind (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue); 7624 NTSYSAPI PVOID NTAPI RtlPcToFileHeader (PVOID PcValue, PVOID *BaseOfImage); 7625 #if defined (__x86_64__) 7626 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); 7627 NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7628 #endif 7629 #if defined (__arm__) 7630 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONG_PTR ControlPc, PDWORD ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); 7631 NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7632 #endif 7633 #if defined (__aarch64__) 7634 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONG_PTR ControlPc, PULONG_PTR ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); 7635 NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7636 #endif 7637 #if defined (__ia64__) 7638 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONGLONG ControlPc, PULONGLONG ImageBase, PULONGLONG TargetGp); 7639 NTSYSAPI VOID NTAPI RtlUnwindEx (FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7640 #endif 7641 #endif 7642 7643 #include <string.h> 7644 7645 #ifndef _SLIST_HEADER_ 7646 #define _SLIST_HEADER_ 7647 7648 #if defined (_WIN64) 7649 typedef struct DECLSPEC_ALIGN (16) _SLIST_ENTRY { 7650 struct _SLIST_ENTRY *Next; 7651 } SLIST_ENTRY,*PSLIST_ENTRY; 7652 7653 typedef union DECLSPEC_ALIGN (16) _SLIST_HEADER { 7654 __C89_NAMELESS struct { 7655 ULONGLONG Alignment; 7656 ULONGLONG Region; 7657 } DUMMYSTRUCTNAME; 7658 struct { 7659 ULONGLONG Depth:16; 7660 ULONGLONG Sequence:9; 7661 ULONGLONG NextEntry:39; 7662 ULONGLONG HeaderType:1; 7663 ULONGLONG Init:1; 7664 ULONGLONG Reserved:59; 7665 ULONGLONG Region:3; 7666 } Header8; 7667 struct { 7668 ULONGLONG Depth:16; 7669 ULONGLONG Sequence:48; 7670 ULONGLONG HeaderType:1; 7671 ULONGLONG Reserved:3; 7672 ULONGLONG NextEntry:60; 7673 } HeaderX64; 7674 } SLIST_HEADER,*PSLIST_HEADER; 7675 #else /* _WIN64 */ 7676 typedef struct _SINGLE_LIST_ENTRY SLIST_ENTRY,*PSLIST_ENTRY; 7677 7678 typedef union _SLIST_HEADER { 7679 ULONGLONG Alignment; 7680 __C89_NAMELESS struct { 7681 SLIST_ENTRY Next; 7682 WORD Depth; 7683 WORD Sequence; 7684 } DUMMYSTRUCTNAME; 7685 } SLIST_HEADER,*PSLIST_HEADER; 7686 #endif /* _WIN64 */ 7687 7688 #endif /* _SLIST_HEADER_ */ 7689 7690 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7691 NTSYSAPI VOID NTAPI RtlInitializeSListHead (PSLIST_HEADER ListHead); 7692 NTSYSAPI PSLIST_ENTRY NTAPI RtlFirstEntrySList (const SLIST_HEADER *ListHead); 7693 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPopEntrySList (PSLIST_HEADER ListHead); 7694 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry); 7695 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushListSListEx (PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, DWORD Count); 7696 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedFlushSList (PSLIST_HEADER ListHead); 7697 NTSYSAPI WORD NTAPI RtlQueryDepthSList (PSLIST_HEADER ListHead); 7698 #endif 7699 7700 #ifndef _RTL_RUN_ONCE_DEF 7701 #define _RTL_RUN_ONCE_DEF 1 7702 7703 typedef struct _RTL_RUN_ONCE { PVOID Ptr; } RTL_RUN_ONCE, *PRTL_RUN_ONCE; 7704 typedef DWORD (WINAPI *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *); 7705 7706 #define RTL_RUN_ONCE_INIT {0} 7707 #define RTL_RUN_ONCE_CHECK_ONLY __MSABI_LONG(1U) 7708 #define RTL_RUN_ONCE_ASYNC __MSABI_LONG(2U) 7709 #define RTL_RUN_ONCE_INIT_FAILED __MSABI_LONG(4U) 7710 #define RTL_RUN_ONCE_CTX_RESERVED_BITS 2 7711 #endif 7712 7713 typedef struct _RTL_BARRIER { 7714 DWORD Reserved1; 7715 DWORD Reserved2; 7716 ULONG_PTR Reserved3[2]; 7717 DWORD Reserved4; 7718 DWORD Reserved5; 7719 } RTL_BARRIER,*PRTL_BARRIER; 7720 7721 #define FAST_FAIL_LEGACY_GS_VIOLATION 0 7722 #define FAST_FAIL_VTGUARD_CHECK_FAILURE 1 7723 #define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 7724 #define FAST_FAIL_CORRUPT_LIST_ENTRY 3 7725 #define FAST_FAIL_INCORRECT_STACK 4 7726 #define FAST_FAIL_INVALID_ARG 5 7727 #define FAST_FAIL_GS_COOKIE_INIT 6 7728 #define FAST_FAIL_FATAL_APP_EXIT 7 7729 #define FAST_FAIL_RANGE_CHECK_FAILURE 8 7730 #define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 7731 #define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xffffffff 7732 7733 /* TODO: Check implementation of 7734 DECLSPEC_NORETURN VOID __fastfail (unsigned int); */ 7735 7736 #define HEAP_NO_SERIALIZE 0x00000001 7737 #define HEAP_GROWABLE 0x00000002 7738 #define HEAP_GENERATE_EXCEPTIONS 0x00000004 7739 #define HEAP_ZERO_MEMORY 0x00000008 7740 #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010 7741 #define HEAP_TAIL_CHECKING_ENABLED 0x00000020 7742 #define HEAP_FREE_CHECKING_ENABLED 0x00000040 7743 #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080 7744 #define HEAP_CREATE_ALIGN_16 0x00010000 7745 #define HEAP_CREATE_ENABLE_TRACING 0x00020000 7746 #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000 7747 #define HEAP_MAXIMUM_TAG 0x0FFF 7748 #define HEAP_PSEUDO_TAG_FLAG 0x8000 7749 #define HEAP_TAG_SHIFT 18 7750 /* Let this macro fail for non-desktop mode. AFAIU this should be better an inline-function ... */ 7751 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7752 #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b) + ((o) << 18))) 7753 #endif 7754 7755 #define IS_TEXT_UNICODE_ASCII16 0x0001 7756 #define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010 7757 7758 #define IS_TEXT_UNICODE_STATISTICS 0x0002 7759 #define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020 7760 7761 #define IS_TEXT_UNICODE_CONTROLS 0x0004 7762 #define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040 7763 7764 #define IS_TEXT_UNICODE_SIGNATURE 0x0008 7765 #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080 7766 7767 #define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100 7768 #define IS_TEXT_UNICODE_ODD_LENGTH 0x0200 7769 #define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400 7770 #define IS_TEXT_UNICODE_NULL_BYTES 0x1000 7771 7772 #define IS_TEXT_UNICODE_UNICODE_MASK 0x000F 7773 #define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0 7774 #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00 7775 #define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000 7776 7777 #define COMPRESSION_FORMAT_NONE (0x0000) 7778 #define COMPRESSION_FORMAT_DEFAULT (0x0001) 7779 #define COMPRESSION_FORMAT_LZNT1 (0x0002) 7780 #define COMPRESSION_FORMAT_XPRESS (0x0003) 7781 #define COMPRESSION_FORMAT_XPRESS_HUFF (0x0004) 7782 #define COMPRESSION_ENGINE_STANDARD (0x0000) 7783 #define COMPRESSION_ENGINE_MAXIMUM (0x0100) 7784 #define COMPRESSION_ENGINE_HIBER (0x0200) 7785 7786 #ifndef __CRT__NO_INLINE 7787 #if _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD) 7788 #define _MEMCPY_INLINE_ memcpy_inline(void * dst,const void * src,size_t size)7789 __CRT_INLINE PVOID __cdecl memcpy_inline(void *dst,const void *src,size_t size) { 7790 if(((char *)dst > (char *)src) && ((char *)dst < ((char *)src + size))) { 7791 __debugbreak(); 7792 } 7793 return memcpy(dst,src,size); 7794 } 7795 #define memcpy memcpy_inline 7796 #endif /* _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD) */ 7797 #endif /* !__CRT__NO_INLINE */ 7798 7799 #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) 7800 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) 7801 #define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length)) 7802 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) 7803 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) 7804 7805 PVOID WINAPI RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt); 7806 7807 #if !defined (__CRT__NO_INLINE) && !defined (__WIDL__) RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt)7808 __CRT_INLINE PVOID WINAPI RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt) { 7809 volatile char *vptr =(volatile char *)ptr; 7810 #ifdef __x86_64 7811 __stosb((PBYTE)((DWORD64)vptr),0,cnt); 7812 #else 7813 while(cnt) { 7814 *vptr++ = 0; 7815 cnt--; 7816 } 7817 #endif /* __x86_64 */ 7818 return ptr; 7819 } 7820 #endif /* !__CRT__NO_INLINE // !__WIDL__ */ 7821 7822 typedef struct _MESSAGE_RESOURCE_ENTRY { 7823 WORD Length; 7824 WORD Flags; 7825 BYTE Text[1]; 7826 } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY; 7827 7828 #define SEF_DACL_AUTO_INHERIT 0x01 7829 #define SEF_SACL_AUTO_INHERIT 0x02 7830 #define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04 7831 #define SEF_AVOID_PRIVILEGE_CHECK 0x08 7832 #define SEF_AVOID_OWNER_CHECK 0x10 7833 #define SEF_DEFAULT_OWNER_FROM_PARENT 0x20 7834 #define SEF_DEFAULT_GROUP_FROM_PARENT 0x40 7835 #define SEF_MACL_NO_WRITE_UP 0x100 7836 #define SEF_MACL_NO_READ_UP 0x200 7837 #define SEF_MACL_NO_EXECUTE_UP 0x400 7838 #define SEF_AVOID_OWNER_RESTRICTION 0x1000 7839 7840 #define SEF_MACL_VALID_FLAGS (SEF_MACL_NO_WRITE_UP | SEF_MACL_NO_READ_UP | SEF_MACL_NO_EXECUTE_UP) 7841 7842 #define MESSAGE_RESOURCE_UNICODE 0x0001 7843 7844 typedef struct _MESSAGE_RESOURCE_BLOCK { 7845 DWORD LowId; 7846 DWORD HighId; 7847 DWORD OffsetToEntries; 7848 } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK; 7849 7850 typedef struct _MESSAGE_RESOURCE_DATA { 7851 DWORD NumberOfBlocks; 7852 MESSAGE_RESOURCE_BLOCK Blocks[1]; 7853 } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA; 7854 7855 typedef struct _OSVERSIONINFOA { 7856 DWORD dwOSVersionInfoSize; 7857 DWORD dwMajorVersion; 7858 DWORD dwMinorVersion; 7859 DWORD dwBuildNumber; 7860 DWORD dwPlatformId; 7861 CHAR szCSDVersion[128]; 7862 } OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA; 7863 7864 typedef struct _OSVERSIONINFOW { 7865 DWORD dwOSVersionInfoSize; 7866 DWORD dwMajorVersion; 7867 DWORD dwMinorVersion; 7868 DWORD dwBuildNumber; 7869 DWORD dwPlatformId; 7870 WCHAR szCSDVersion[128]; 7871 } OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW,RTL_OSVERSIONINFOW,*PRTL_OSVERSIONINFOW; 7872 7873 __MINGW_TYPEDEF_AW(OSVERSIONINFO) 7874 __MINGW_TYPEDEF_AW(POSVERSIONINFO) 7875 __MINGW_TYPEDEF_AW(LPOSVERSIONINFO) 7876 7877 typedef struct _OSVERSIONINFOEXA { 7878 DWORD dwOSVersionInfoSize; 7879 DWORD dwMajorVersion; 7880 DWORD dwMinorVersion; 7881 DWORD dwBuildNumber; 7882 DWORD dwPlatformId; 7883 CHAR szCSDVersion[128]; 7884 WORD wServicePackMajor; 7885 WORD wServicePackMinor; 7886 WORD wSuiteMask; 7887 BYTE wProductType; 7888 BYTE wReserved; 7889 } OSVERSIONINFOEXA,*POSVERSIONINFOEXA,*LPOSVERSIONINFOEXA; 7890 7891 typedef struct _OSVERSIONINFOEXW { 7892 DWORD dwOSVersionInfoSize; 7893 DWORD dwMajorVersion; 7894 DWORD dwMinorVersion; 7895 DWORD dwBuildNumber; 7896 DWORD dwPlatformId; 7897 WCHAR szCSDVersion[128]; 7898 WORD wServicePackMajor; 7899 WORD wServicePackMinor; 7900 WORD wSuiteMask; 7901 BYTE wProductType; 7902 BYTE wReserved; 7903 } OSVERSIONINFOEXW,*POSVERSIONINFOEXW,*LPOSVERSIONINFOEXW,RTL_OSVERSIONINFOEXW,*PRTL_OSVERSIONINFOEXW; 7904 7905 __MINGW_TYPEDEF_AW(OSVERSIONINFOEX) 7906 __MINGW_TYPEDEF_AW(POSVERSIONINFOEX) 7907 __MINGW_TYPEDEF_AW(LPOSVERSIONINFOEX) 7908 7909 #define VER_EQUAL 1 7910 #define VER_GREATER 2 7911 #define VER_GREATER_EQUAL 3 7912 #define VER_LESS 4 7913 #define VER_LESS_EQUAL 5 7914 #define VER_AND 6 7915 #define VER_OR 7 7916 7917 #define VER_CONDITION_MASK 7 7918 #define VER_NUM_BITS_PER_CONDITION_MASK 3 7919 7920 #define VER_MINORVERSION 0x0000001 7921 #define VER_MAJORVERSION 0x0000002 7922 #define VER_BUILDNUMBER 0x0000004 7923 #define VER_PLATFORMID 0x0000008 7924 #define VER_SERVICEPACKMINOR 0x0000010 7925 #define VER_SERVICEPACKMAJOR 0x0000020 7926 #define VER_SUITENAME 0x0000040 7927 #define VER_PRODUCT_TYPE 0x0000080 7928 7929 #define VER_NT_WORKSTATION 0x0000001 7930 #define VER_NT_DOMAIN_CONTROLLER 0x0000002 7931 #define VER_NT_SERVER 0x0000003 7932 7933 #define VER_PLATFORM_WIN32s 0 7934 #define VER_PLATFORM_WIN32_WINDOWS 1 7935 #define VER_PLATFORM_WIN32_NT 2 7936 7937 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7938 #if !defined (_WINBASE_) && !defined (__WIDL__) 7939 NTSYSAPI ULONGLONG NTAPI VerSetConditionMask (ULONGLONG ConditionMask, DWORD TypeMask, BYTE Condition); 7940 #endif 7941 7942 #define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_) = VerSetConditionMask((_m_),(_t_),(_c_))) 7943 7944 #if _WIN32_WINNT >= 0x0600 && !defined (__WIDL__) 7945 NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo (DWORD OSMajorVersion, DWORD OSMinorVersion, DWORD SpMajorVersion, DWORD SpMinorVersion, PDWORD ReturnedProductType); 7946 #endif 7947 #endif 7948 7949 #define RTL_UMS_VERSION (0x0100) 7950 7951 typedef enum _RTL_UMS_THREAD_INFO_CLASS { 7952 UmsThreadInvalidInfoClass = 0, 7953 UmsThreadUserContext, 7954 UmsThreadPriority, 7955 UmsThreadAffinity, 7956 UmsThreadTeb, 7957 UmsThreadIsSuspended, 7958 UmsThreadIsTerminated, 7959 UmsThreadMaxInfoClass 7960 } RTL_UMS_THREAD_INFO_CLASS,*PRTL_UMS_THREAD_INFO_CLASS; 7961 7962 typedef enum _RTL_UMS_SCHEDULER_REASON { 7963 UmsSchedulerStartup = 0, 7964 UmsSchedulerThreadBlocked, 7965 UmsSchedulerThreadYield, 7966 } RTL_UMS_SCHEDULER_REASON,*PRTL_UMS_SCHEDULER_REASON; 7967 7968 typedef VOID NTAPI RTL_UMS_SCHEDULER_ENTRY_POINT (RTL_UMS_SCHEDULER_REASON Reason, ULONG_PTR ActivationPayload, PVOID SchedulerParam); 7969 typedef RTL_UMS_SCHEDULER_ENTRY_POINT *PRTL_UMS_SCHEDULER_ENTRY_POINT; 7970 7971 #if _WIN32_WINNT >= 0x0602 7972 #ifndef IS_VALIDATION_ENABLED 7973 #define IS_VALIDATION_ENABLED(C, L) ((L) & (C)) 7974 #define VRL_PREDEFINED_CLASS_BEGIN (1) 7975 #define VRL_CUSTOM_CLASS_BEGIN (1 << 8) 7976 #define VRL_CLASS_CONSISTENCY (VRL_PREDEFINED_CLASS_BEGIN) 7977 #define VRL_ENABLE_KERNEL_BREAKS (1 << 31) 7978 #endif 7979 7980 #define CTMF_INCLUDE_APPCONTAINER __MSABI_LONG(0x1U) 7981 #define CTMF_VALID_FLAGS (CTMF_INCLUDE_APPCONTAINER) 7982 7983 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7984 NTSYSAPI DWORD NTAPI RtlCrc32 (const void *Buffer, size_t Size, DWORD InitialCrc); 7985 NTSYSAPI ULONGLONG NTAPI RtlCrc64 (const void *Buffer, size_t Size, ULONGLONG InitialCrc); 7986 #endif 7987 #endif 7988 7989 typedef struct _RTL_CRITICAL_SECTION_DEBUG { 7990 WORD Type; 7991 WORD CreatorBackTraceIndex; 7992 struct _RTL_CRITICAL_SECTION *CriticalSection; 7993 LIST_ENTRY ProcessLocksList; 7994 DWORD EntryCount; 7995 DWORD ContentionCount; 7996 DWORD Flags; 7997 WORD CreatorBackTraceIndexHigh; 7998 WORD SpareWORD; 7999 } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG,RTL_RESOURCE_DEBUG,*PRTL_RESOURCE_DEBUG; 8000 8001 #define RTL_CRITSECT_TYPE 0 8002 #define RTL_RESOURCE_TYPE 1 8003 8004 #define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x01000000 8005 #define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x02000000 8006 #define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x04000000 8007 #define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x08000000 8008 #define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000 8009 #define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xff000000 8010 8011 #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 | RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE | RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO))) 8012 8013 #define RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT 0x00000001 8014 8015 #include <pshpack8.h> 8016 typedef struct _RTL_CRITICAL_SECTION { 8017 PRTL_CRITICAL_SECTION_DEBUG DebugInfo; 8018 LONG LockCount; 8019 LONG RecursionCount; 8020 HANDLE OwningThread; 8021 HANDLE LockSemaphore; 8022 ULONG_PTR SpinCount; 8023 } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION; 8024 #include <poppack.h> 8025 8026 typedef struct _RTL_SRWLOCK { PVOID Ptr; } RTL_SRWLOCK,*PRTL_SRWLOCK; 8027 typedef struct _RTL_CONDITION_VARIABLE { PVOID Ptr; } RTL_CONDITION_VARIABLE,*PRTL_CONDITION_VARIABLE; 8028 8029 #define RTL_SRWLOCK_INIT {0} 8030 #define RTL_CONDITION_VARIABLE_INIT {0} 8031 8032 #define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 0x1 8033 8034 typedef VOID (NTAPI *PAPCFUNC) (ULONG_PTR Parameter); 8035 typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER) (struct _EXCEPTION_POINTERS *ExceptionInfo); 8036 8037 typedef enum _HEAP_INFORMATION_CLASS { 8038 HeapCompatibilityInformation, 8039 HeapEnableTerminationOnCorruption 8040 } HEAP_INFORMATION_CLASS; 8041 8042 typedef VOID (NTAPI *WORKERCALLBACKFUNC) (PVOID); 8043 typedef VOID (NTAPI *APC_CALLBACK_FUNCTION) (DWORD, PVOID, PVOID); 8044 typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN); 8045 typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK; 8046 typedef VOID (NTAPI *PFLS_CALLBACK_FUNCTION) (PVOID lpFlsData); 8047 typedef BOOLEAN (NTAPI *PSECURE_MEMORY_CACHE_CALLBACK) (PVOID Addr, SIZE_T Range); 8048 8049 #define WT_EXECUTEDEFAULT 0x00000000 8050 #define WT_EXECUTEINIOTHREAD 0x00000001 8051 #define WT_EXECUTEINUITHREAD 0x00000002 8052 #define WT_EXECUTEINWAITTHREAD 0x00000004 8053 #define WT_EXECUTEONLYONCE 0x00000008 8054 #define WT_EXECUTEINTIMERTHREAD 0x00000020 8055 #define WT_EXECUTELONGFUNCTION 0x00000010 8056 #define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040 8057 #define WT_EXECUTEINPERSISTENTTHREAD 0x00000080 8058 #define WT_TRANSFER_IMPERSONATION 0x00000100 8059 8060 #define WT_SET_MAX_THREADPOOL_THREADS(Flags, Limit) ((Flags) |= (Limit) << 16) 8061 8062 #define WT_EXECUTEDELETEWAIT 0x00000008 8063 #define WT_EXECUTEINLONGTHREAD 0x00000010 8064 8065 typedef enum _ACTIVATION_CONTEXT_INFO_CLASS { 8066 ActivationContextBasicInformation = 1, 8067 ActivationContextDetailedInformation = 2, 8068 AssemblyDetailedInformationInActivationContext = 3, 8069 FileInformationInAssemblyOfAssemblyInActivationContext = 4, 8070 RunlevelInformationInActivationContext = 5, 8071 CompatibilityInformationInActivationContext = 6, 8072 ActivationContextManifestResourceName = 7, 8073 MaxActivationContextInfoClass, 8074 AssemblyDetailedInformationInActivationContxt = 3, 8075 FileInformationInAssemblyOfAssemblyInActivationContxt = 4 8076 } ACTIVATION_CONTEXT_INFO_CLASS; 8077 8078 typedef enum { 8079 ACTCTX_RUN_LEVEL_UNSPECIFIED = 0, 8080 ACTCTX_RUN_LEVEL_AS_INVOKER, 8081 ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE, 8082 ACTCTX_RUN_LEVEL_REQUIRE_ADMIN, 8083 ACTCTX_RUN_LEVEL_NUMBERS 8084 } ACTCTX_REQUESTED_RUN_LEVEL; 8085 8086 typedef enum { 8087 ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0, 8088 ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS, 8089 ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION 8090 } ACTCTX_COMPATIBILITY_ELEMENT_TYPE; 8091 8092 typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX { 8093 DWORD ulAssemblyIndex; 8094 DWORD ulFileIndexInAssembly; 8095 } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX; 8096 8097 typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION { 8098 DWORD ulFlags; 8099 DWORD ulFilenameLength; 8100 DWORD ulPathLength; 8101 PCWSTR lpFileName; 8102 PCWSTR lpFilePath; 8103 } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION; 8104 8105 typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { 8106 DWORD ulFlags; 8107 DWORD ulEncodedAssemblyIdentityLength; 8108 DWORD ulManifestPathType; 8109 DWORD ulManifestPathLength; 8110 LARGE_INTEGER liManifestLastWriteTime; 8111 DWORD ulPolicyPathType; 8112 DWORD ulPolicyPathLength; 8113 LARGE_INTEGER liPolicyLastWriteTime; 8114 DWORD ulMetadataSatelliteRosterIndex; 8115 DWORD ulManifestVersionMajor; 8116 DWORD ulManifestVersionMinor; 8117 DWORD ulPolicyVersionMajor; 8118 DWORD ulPolicyVersionMinor; 8119 DWORD ulAssemblyDirectoryNameLength; 8120 PCWSTR lpAssemblyEncodedAssemblyIdentity; 8121 PCWSTR lpAssemblyManifestPath; 8122 PCWSTR lpAssemblyPolicyPath; 8123 PCWSTR lpAssemblyDirectoryName; 8124 DWORD ulFileCount; 8125 } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 8126 8127 typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION { 8128 DWORD ulFlags; 8129 ACTCTX_REQUESTED_RUN_LEVEL RunLevel; 8130 DWORD UiAccess; 8131 } ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION,*PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; 8132 8133 typedef struct _COMPATIBILITY_CONTEXT_ELEMENT { 8134 GUID Id; 8135 ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type; 8136 } COMPATIBILITY_CONTEXT_ELEMENT,*PCOMPATIBILITY_CONTEXT_ELEMENT; 8137 8138 /*Vista: {e2011457-1546-43c5-a5fe-008deee3d3f0}*/ 8139 /*Seven: {35138b9a-5d96-4fbd-8e2d-a2440225f93a}*/ 8140 typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION { 8141 DWORD ElementCount; 8142 COMPATIBILITY_CONTEXT_ELEMENT Elements[]; 8143 } ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION,*PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION; 8144 8145 #define MAX_SUPPORTED_OS_NUM (4) 8146 8147 typedef struct _SUPPORTED_OS_INFO { 8148 WORD OsCount; 8149 WORD MitigationExist; 8150 WORD OsList[MAX_SUPPORTED_OS_NUM]; 8151 } SUPPORTED_OS_INFO,*PSUPPORTED_OS_INFO; 8152 8153 typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION { 8154 DWORD dwFlags; 8155 DWORD ulFormatVersion; 8156 DWORD ulAssemblyCount; 8157 DWORD ulRootManifestPathType; 8158 DWORD ulRootManifestPathChars; 8159 DWORD ulRootConfigurationPathType; 8160 DWORD ulRootConfigurationPathChars; 8161 DWORD ulAppDirPathType; 8162 DWORD ulAppDirPathChars; 8163 PCWSTR lpRootManifestPath; 8164 PCWSTR lpRootConfigurationPath; 8165 PCWSTR lpAppDirPath; 8166 } ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION; 8167 8168 typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX; 8169 typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION; 8170 typedef const struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 8171 typedef const struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; 8172 typedef const struct _COMPATIBILITY_CONTEXT_ELEMENT *PCCOMPATIBILITY_CONTEXT_ELEMENT; 8173 typedef const struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION *PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION; 8174 typedef const struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION; 8175 8176 #define ACTIVATIONCONTEXTINFOCLASS ACTIVATION_CONTEXT_INFO_CLASS 8177 8178 #define ACTIVATION_CONTEXT_PATH_TYPE_NONE (1) 8179 #define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE (2) 8180 #define ACTIVATION_CONTEXT_PATH_TYPE_URL (3) 8181 #define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF (4) 8182 8183 #define _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION _ASSEMBLY_FILE_DETAILED_INFORMATION 8184 #define ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION 8185 #define PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PASSEMBLY_FILE_DETAILED_INFORMATION 8186 #define PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PCASSEMBLY_FILE_DETAILED_INFORMATION 8187 #define INVALID_OS_COUNT (0xffff) 8188 8189 #define CREATE_BOUNDARY_DESCRIPTOR_ADD_APPCONTAINER_SID 0x1 8190 8191 typedef VOID (NTAPI *RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); 8192 typedef VOID (NTAPI *RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); 8193 typedef VOID (NTAPI *RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK)(PVOID AllocationBase,SIZE_T AllocationSize); 8194 8195 typedef struct _RTL_VERIFIER_THUNK_DESCRIPTOR { 8196 PCHAR ThunkName; 8197 PVOID ThunkOldAddress; 8198 PVOID ThunkNewAddress; 8199 } RTL_VERIFIER_THUNK_DESCRIPTOR,*PRTL_VERIFIER_THUNK_DESCRIPTOR; 8200 8201 typedef struct _RTL_VERIFIER_DLL_DESCRIPTOR { 8202 PWCHAR DllName; 8203 DWORD DllFlags; 8204 PVOID DllAddress; 8205 PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks; 8206 } RTL_VERIFIER_DLL_DESCRIPTOR,*PRTL_VERIFIER_DLL_DESCRIPTOR; 8207 8208 typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR { 8209 DWORD Length; 8210 PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls; 8211 RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback; 8212 RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback; 8213 PWSTR VerifierImage; 8214 DWORD VerifierFlags; 8215 DWORD VerifierDebug; 8216 PVOID RtlpGetStackTraceAddress; 8217 PVOID RtlpDebugPageHeapCreate; 8218 PVOID RtlpDebugPageHeapDestroy; 8219 RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback; 8220 } RTL_VERIFIER_PROVIDER_DESCRIPTOR,*PRTL_VERIFIER_PROVIDER_DESCRIPTOR; 8221 8222 #define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001 8223 #define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002 8224 #define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004 8225 #define RTL_VRF_FLG_STACK_CHECKS 0x00000008 8226 #define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010 8227 #define RTL_VRF_FLG_TLS_CHECKS 0x00000020 8228 #define RTL_VRF_FLG_DIRTY_STACKS 0x00000040 8229 #define RTL_VRF_FLG_RPC_CHECKS 0x00000080 8230 #define RTL_VRF_FLG_COM_CHECKS 0x00000100 8231 #define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200 8232 #define RTL_VRF_FLG_RACE_CHECKS 0x00000400 8233 #define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800 8234 #define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000 8235 #define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000 8236 #define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000 8237 #define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000 8238 #define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000 8239 #define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000 8240 #define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000 8241 #define RTL_VRF_FLG_LOCK_CHECKS 0x00040000 8242 8243 #define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000 8244 #define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000 8245 #define APPLICATION_VERIFIER_NO_BREAK 0x20000000 8246 #define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000 8247 8248 #define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001 8249 #define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002 8250 #define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003 8251 #define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004 8252 #define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005 8253 #define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006 8254 #define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007 8255 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008 8256 #define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009 8257 #define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A 8258 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B 8259 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C 8260 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D 8261 #define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E 8262 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F 8263 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010 8264 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011 8265 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012 8266 #define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013 8267 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014 8268 8269 #define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100 8270 #define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101 8271 #define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102 8272 8273 #define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200 8274 #define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201 8275 #define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202 8276 #define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203 8277 #define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204 8278 #define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205 8279 #define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206 8280 #define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207 8281 #define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208 8282 #define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209 8283 #define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210 8284 #define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211 8285 #define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212 8286 #define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213 8287 #define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214 8288 8289 #define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300 8290 #define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301 8291 #define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302 8292 #define APPLICATION_VERIFIER_NULL_HANDLE 0x0303 8293 #define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304 8294 8295 #define APPLICATION_VERIFIER_COM_ERROR 0x0400 8296 #define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401 8297 #define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402 8298 #define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403 8299 #define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404 8300 #define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405 8301 #define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406 8302 #define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407 8303 #define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408 8304 #define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409 8305 #define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A 8306 #define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B 8307 #define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C 8308 #define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D 8309 #define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E 8310 #define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F 8311 #define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410 8312 8313 #define APPLICATION_VERIFIER_RPC_ERROR 0x0500 8314 8315 #define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600 8316 #define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601 8317 #define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602 8318 #define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603 8319 #define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604 8320 #define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605 8321 #define APPLICATION_VERIFIER_PROBE_NULL 0x0606 8322 #define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607 8323 #define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618 8324 8325 #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)); } 8326 8327 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); 8328 NTSYSAPI DWORD NTAPI RtlSetHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength); 8329 NTSYSAPI DWORD NTAPI RtlQueryHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength,PSIZE_T ReturnLength); 8330 DWORD NTAPI RtlMultipleAllocateHeap(PVOID HeapHandle,DWORD Flags,SIZE_T Size,DWORD Count,PVOID *Array); 8331 DWORD NTAPI RtlMultipleFreeHeap(PVOID HeapHandle,DWORD Flags,DWORD Count,PVOID *Array); 8332 8333 typedef struct _HARDWARE_COUNTER_DATA { 8334 HARDWARE_COUNTER_TYPE Type; 8335 DWORD Reserved; 8336 DWORD64 Value; 8337 } HARDWARE_COUNTER_DATA,*PHARDWARE_COUNTER_DATA; 8338 8339 typedef struct _PERFORMANCE_DATA { 8340 WORD Size; 8341 BYTE Version; 8342 BYTE HwCountersCount; 8343 DWORD ContextSwitchCount; 8344 DWORD64 WaitReasonBitMap; 8345 DWORD64 CycleTime; 8346 DWORD RetryCount; 8347 DWORD Reserved; 8348 HARDWARE_COUNTER_DATA HwCounters[MAX_HW_COUNTERS]; 8349 } PERFORMANCE_DATA,*PPERFORMANCE_DATA; 8350 8351 #define PERFORMANCE_DATA_VERSION 1 8352 8353 #define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x00000001 8354 #define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x00000002 8355 8356 #define DLL_PROCESS_ATTACH 1 8357 #define DLL_THREAD_ATTACH 2 8358 #define DLL_THREAD_DETACH 3 8359 #define DLL_PROCESS_DETACH 0 8360 #define DLL_PROCESS_VERIFIER 4 8361 8362 #define EVENTLOG_SEQUENTIAL_READ 0x0001 8363 #define EVENTLOG_SEEK_READ 0x0002 8364 #define EVENTLOG_FORWARDS_READ 0x0004 8365 #define EVENTLOG_BACKWARDS_READ 0x0008 8366 8367 #define EVENTLOG_SUCCESS 0x0000 8368 #define EVENTLOG_ERROR_TYPE 0x0001 8369 #define EVENTLOG_WARNING_TYPE 0x0002 8370 #define EVENTLOG_INFORMATION_TYPE 0x0004 8371 #define EVENTLOG_AUDIT_SUCCESS 0x0008 8372 #define EVENTLOG_AUDIT_FAILURE 0x0010 8373 8374 #define EVENTLOG_START_PAIRED_EVENT 0x0001 8375 #define EVENTLOG_END_PAIRED_EVENT 0x0002 8376 #define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004 8377 #define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008 8378 #define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010 8379 8380 typedef struct _EVENTLOGRECORD { 8381 DWORD Length; 8382 DWORD Reserved; 8383 DWORD RecordNumber; 8384 DWORD TimeGenerated; 8385 DWORD TimeWritten; 8386 DWORD EventID; 8387 WORD EventType; 8388 WORD NumStrings; 8389 WORD EventCategory; 8390 WORD ReservedFlags; 8391 DWORD ClosingRecordNumber; 8392 DWORD StringOffset; 8393 DWORD UserSidLength; 8394 DWORD UserSidOffset; 8395 DWORD DataLength; 8396 DWORD DataOffset; 8397 } EVENTLOGRECORD,*PEVENTLOGRECORD; 8398 8399 #define MAXLOGICALLOGNAMESIZE 256 8400 8401 typedef struct _EVENTSFORLOGFILE { 8402 DWORD ulSize; 8403 WCHAR szLogicalLogFile[MAXLOGICALLOGNAMESIZE]; 8404 DWORD ulNumRecords; 8405 EVENTLOGRECORD pEventLogRecords[]; 8406 } EVENTSFORLOGFILE,*PEVENTSFORLOGFILE; 8407 8408 typedef struct _PACKEDEVENTINFO { 8409 DWORD ulSize; 8410 DWORD ulNumEventsForLogFile; 8411 DWORD ulOffsets[]; 8412 } PACKEDEVENTINFO,*PPACKEDEVENTINFO; 8413 8414 #define KEY_QUERY_VALUE (0x0001) 8415 #define KEY_SET_VALUE (0x0002) 8416 #define KEY_CREATE_SUB_KEY (0x0004) 8417 #define KEY_ENUMERATE_SUB_KEYS (0x0008) 8418 #define KEY_NOTIFY (0x0010) 8419 #define KEY_CREATE_LINK (0x0020) 8420 #define KEY_WOW64_64KEY (0x0100) 8421 #define KEY_WOW64_32KEY (0x0200) 8422 #define KEY_WOW64_RES (0x0300) 8423 8424 #define KEY_READ ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE)) 8425 #define KEY_WRITE ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)) 8426 #define KEY_EXECUTE ((KEY_READ) & (~SYNCHRONIZE)) 8427 #define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE)) 8428 #define REG_OPTION_RESERVED (__MSABI_LONG(0x00000000)) 8429 8430 #define REG_OPTION_NON_VOLATILE (__MSABI_LONG(0x00000000)) 8431 #define REG_OPTION_VOLATILE (__MSABI_LONG(0x00000001)) 8432 #define REG_OPTION_CREATE_LINK (__MSABI_LONG(0x00000002)) 8433 #define REG_OPTION_BACKUP_RESTORE (__MSABI_LONG(0x00000004)) 8434 #define REG_OPTION_OPEN_LINK (__MSABI_LONG(0x00000008)) 8435 #define REG_LEGAL_OPTION (REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK) 8436 8437 #define REG_CREATED_NEW_KEY (__MSABI_LONG(0x00000001)) 8438 #define REG_OPENED_EXISTING_KEY (__MSABI_LONG(0x00000002)) 8439 8440 #define REG_STANDARD_FORMAT 1 8441 #define REG_LATEST_FORMAT 2 8442 #define REG_NO_COMPRESSION 4 8443 8444 #define REG_WHOLE_HIVE_VOLATILE (__MSABI_LONG(0x00000001)) 8445 #define REG_REFRESH_HIVE (__MSABI_LONG(0x00000002)) 8446 #define REG_NO_LAZY_FLUSH (__MSABI_LONG(0x00000004)) 8447 #define REG_FORCE_RESTORE (__MSABI_LONG(0x00000008)) 8448 #define REG_APP_HIVE (__MSABI_LONG(0x00000010)) 8449 #define REG_PROCESS_PRIVATE (__MSABI_LONG(0x00000020)) 8450 #define REG_START_JOURNAL (__MSABI_LONG(0x00000040)) 8451 #define REG_HIVE_EXACT_FILE_GROWTH (__MSABI_LONG(0x00000080)) 8452 #define REG_HIVE_NO_RM (__MSABI_LONG(0x00000100)) 8453 #define REG_HIVE_SINGLE_LOG (__MSABI_LONG(0x00000200)) 8454 #define REG_BOOT_HIVE (__MSABI_LONG(0x00000400)) 8455 8456 #define REG_FORCE_UNLOAD 1 8457 8458 #define REG_NOTIFY_CHANGE_NAME (__MSABI_LONG(0x00000001)) 8459 #define REG_NOTIFY_CHANGE_ATTRIBUTES (__MSABI_LONG(0x00000002)) 8460 #define REG_NOTIFY_CHANGE_LAST_SET (__MSABI_LONG(0x00000004)) 8461 #define REG_NOTIFY_CHANGE_SECURITY (__MSABI_LONG(0x00000008)) 8462 #define REG_NOTIFY_THREAD_AGNOSTIC (__MSABI_LONG(0x10000000)) 8463 8464 #define REG_LEGAL_CHANGE_FILTER (REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY | REG_NOTIFY_THREAD_AGNOSTIC) 8465 8466 #define REG_NONE (0) 8467 #define REG_SZ (1) 8468 #define REG_EXPAND_SZ (2) 8469 #define REG_BINARY (3) 8470 #define REG_DWORD (4) 8471 #define REG_DWORD_LITTLE_ENDIAN (4) 8472 #define REG_DWORD_BIG_ENDIAN (5) 8473 #define REG_LINK (6) 8474 #define REG_MULTI_SZ (7) 8475 #define REG_RESOURCE_LIST (8) 8476 #define REG_FULL_RESOURCE_DESCRIPTOR (9) 8477 #define REG_RESOURCE_REQUIREMENTS_LIST (10) 8478 #define REG_QWORD (11) 8479 #define REG_QWORD_LITTLE_ENDIAN (11) 8480 8481 #define SERVICE_KERNEL_DRIVER 0x00000001 8482 #define SERVICE_FILE_SYSTEM_DRIVER 0x00000002 8483 #define SERVICE_ADAPTER 0x00000004 8484 #define SERVICE_RECOGNIZER_DRIVER 0x00000008 8485 8486 #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER) 8487 8488 #define SERVICE_WIN32_OWN_PROCESS 0x00000010 8489 #define SERVICE_WIN32_SHARE_PROCESS 0x00000020 8490 #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS) 8491 8492 #define SERVICE_INTERACTIVE_PROCESS 0x00000100 8493 8494 #define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS) 8495 8496 #define SERVICE_BOOT_START 0x00000000 8497 #define SERVICE_SYSTEM_START 0x00000001 8498 #define SERVICE_AUTO_START 0x00000002 8499 #define SERVICE_DEMAND_START 0x00000003 8500 #define SERVICE_DISABLED 0x00000004 8501 8502 #define SERVICE_ERROR_IGNORE 0x00000000 8503 #define SERVICE_ERROR_NORMAL 0x00000001 8504 #define SERVICE_ERROR_SEVERE 0x00000002 8505 #define SERVICE_ERROR_CRITICAL 0x00000003 8506 8507 typedef enum _CM_SERVICE_NODE_TYPE { 8508 DriverType = SERVICE_KERNEL_DRIVER,FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, 8509 Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,AdapterType = SERVICE_ADAPTER,RecognizerType = SERVICE_RECOGNIZER_DRIVER 8510 } SERVICE_NODE_TYPE; 8511 8512 typedef enum _CM_SERVICE_LOAD_TYPE { 8513 BootLoad = SERVICE_BOOT_START,SystemLoad = SERVICE_SYSTEM_START,AutoLoad = SERVICE_AUTO_START,DemandLoad = SERVICE_DEMAND_START, 8514 DisableLoad = SERVICE_DISABLED 8515 } SERVICE_LOAD_TYPE; 8516 8517 typedef enum _CM_ERROR_CONTROL_TYPE { 8518 IgnoreError = SERVICE_ERROR_IGNORE,NormalError = SERVICE_ERROR_NORMAL,SevereError = SERVICE_ERROR_SEVERE,CriticalError = SERVICE_ERROR_CRITICAL 8519 } SERVICE_ERROR_TYPE; 8520 8521 #define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001 8522 #define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002 8523 #define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004 8524 #define CM_SERVICE_SD_DISK_BOOT_LOAD 0x00000008 8525 #define CM_SERVICE_USB3_DISK_BOOT_LOAD 0x00000010 8526 #define CM_SERVICE_MEASURED_BOOT_LOAD 0x00000020 8527 #define CM_SERVICE_VERIFIER_BOOT_LOAD 0x00000040 8528 #define CM_SERVICE_WINPE_BOOT_LOAD 0x00000080 8529 8530 #define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | CM_SERVICE_USB_DISK_BOOT_LOAD | CM_SERVICE_SD_DISK_BOOT_LOAD | CM_SERVICE_USB3_DISK_BOOT_LOAD | CM_SERVICE_MEASURED_BOOT_LOAD | CM_SERVICE_VERIFIER_BOOT_LOAD | CM_SERVICE_WINPE_BOOT_LOAD) 8531 8532 #ifndef _NTDDTAPE_WINNT_ 8533 #define _NTDDTAPE_WINNT_ 8534 8535 #define TAPE_ERASE_SHORT __MSABI_LONG(0) 8536 #define TAPE_ERASE_LONG __MSABI_LONG(1) 8537 8538 typedef struct _TAPE_ERASE { 8539 DWORD Type; 8540 BOOLEAN Immediate; 8541 } TAPE_ERASE,*PTAPE_ERASE; 8542 8543 #define TAPE_LOAD __MSABI_LONG(0) 8544 #define TAPE_UNLOAD __MSABI_LONG(1) 8545 #define TAPE_TENSION __MSABI_LONG(2) 8546 #define TAPE_LOCK __MSABI_LONG(3) 8547 #define TAPE_UNLOCK __MSABI_LONG(4) 8548 #define TAPE_FORMAT __MSABI_LONG(5) 8549 8550 typedef struct _TAPE_PREPARE { 8551 DWORD Operation; 8552 BOOLEAN Immediate; 8553 } TAPE_PREPARE,*PTAPE_PREPARE; 8554 8555 #define TAPE_SETMARKS __MSABI_LONG(0) 8556 #define TAPE_FILEMARKS __MSABI_LONG(1) 8557 #define TAPE_SHORT_FILEMARKS __MSABI_LONG(2) 8558 #define TAPE_LONG_FILEMARKS __MSABI_LONG(3) 8559 8560 typedef struct _TAPE_WRITE_MARKS { 8561 DWORD Type; 8562 DWORD Count; 8563 BOOLEAN Immediate; 8564 } TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS; 8565 8566 #define TAPE_ABSOLUTE_POSITION __MSABI_LONG(0) 8567 #define TAPE_LOGICAL_POSITION __MSABI_LONG(1) 8568 #define TAPE_PSEUDO_LOGICAL_POSITION __MSABI_LONG(2) 8569 8570 typedef struct _TAPE_GET_POSITION { 8571 DWORD Type; 8572 DWORD Partition; 8573 LARGE_INTEGER Offset; 8574 } TAPE_GET_POSITION,*PTAPE_GET_POSITION; 8575 8576 #define TAPE_REWIND __MSABI_LONG(0) 8577 #define TAPE_ABSOLUTE_BLOCK __MSABI_LONG(1) 8578 #define TAPE_LOGICAL_BLOCK __MSABI_LONG(2) 8579 #define TAPE_PSEUDO_LOGICAL_BLOCK __MSABI_LONG(3) 8580 #define TAPE_SPACE_END_OF_DATA __MSABI_LONG(4) 8581 #define TAPE_SPACE_RELATIVE_BLOCKS __MSABI_LONG(5) 8582 #define TAPE_SPACE_FILEMARKS __MSABI_LONG(6) 8583 #define TAPE_SPACE_SEQUENTIAL_FMKS __MSABI_LONG(7) 8584 #define TAPE_SPACE_SETMARKS __MSABI_LONG(8) 8585 #define TAPE_SPACE_SEQUENTIAL_SMKS __MSABI_LONG(9) 8586 8587 typedef struct _TAPE_SET_POSITION { 8588 DWORD Method; 8589 DWORD Partition; 8590 LARGE_INTEGER Offset; 8591 BOOLEAN Immediate; 8592 } TAPE_SET_POSITION,*PTAPE_SET_POSITION; 8593 8594 #define TAPE_DRIVE_FIXED 0x00000001 8595 #define TAPE_DRIVE_SELECT 0x00000002 8596 #define TAPE_DRIVE_INITIATOR 0x00000004 8597 8598 #define TAPE_DRIVE_ERASE_SHORT 0x00000010 8599 #define TAPE_DRIVE_ERASE_LONG 0x00000020 8600 #define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040 8601 #define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080 8602 #define TAPE_DRIVE_TAPE_CAPACITY 0x00000100 8603 #define TAPE_DRIVE_TAPE_REMAINING 0x00000200 8604 #define TAPE_DRIVE_FIXED_BLOCK 0x00000400 8605 #define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800 8606 #define TAPE_DRIVE_WRITE_PROTECT 0x00001000 8607 #define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000 8608 #define TAPE_DRIVE_ECC 0x00010000 8609 #define TAPE_DRIVE_COMPRESSION 0x00020000 8610 #define TAPE_DRIVE_PADDING 0x00040000 8611 #define TAPE_DRIVE_REPORT_SMKS 0x00080000 8612 #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000 8613 #define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000 8614 #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000 8615 #define TAPE_DRIVE_EJECT_MEDIA 0x01000000 8616 #define TAPE_DRIVE_CLEAN_REQUESTS 0x02000000 8617 #define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x04000000 8618 8619 #define TAPE_DRIVE_RESERVED_BIT 0x80000000 8620 8621 #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001 8622 #define TAPE_DRIVE_TENSION 0x80000002 8623 #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004 8624 #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008 8625 #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010 8626 8627 #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020 8628 #define TAPE_DRIVE_TENSION_IMMED 0x80000040 8629 #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080 8630 8631 #define TAPE_DRIVE_SET_ECC 0x80000100 8632 #define TAPE_DRIVE_SET_COMPRESSION 0x80000200 8633 #define TAPE_DRIVE_SET_PADDING 0x80000400 8634 #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800 8635 8636 #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000 8637 #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000 8638 #define TAPE_DRIVE_LOGICAL_BLK 0x80004000 8639 #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000 8640 8641 #define TAPE_DRIVE_END_OF_DATA 0x80010000 8642 #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000 8643 #define TAPE_DRIVE_FILEMARKS 0x80040000 8644 #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000 8645 8646 #define TAPE_DRIVE_SETMARKS 0x80100000 8647 #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000 8648 #define TAPE_DRIVE_REVERSE_POSITION 0x80400000 8649 #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000 8650 8651 #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000 8652 #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000 8653 #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000 8654 #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 8655 8656 #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 8657 #define TAPE_DRIVE_FORMAT 0xA0000000 8658 #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000 8659 #define TAPE_DRIVE_HIGH_FEATURES 0x80000000 8660 8661 typedef struct _TAPE_GET_DRIVE_PARAMETERS { 8662 BOOLEAN ECC; 8663 BOOLEAN Compression; 8664 BOOLEAN DataPadding; 8665 BOOLEAN ReportSetmarks; 8666 DWORD DefaultBlockSize; 8667 DWORD MaximumBlockSize; 8668 DWORD MinimumBlockSize; 8669 DWORD MaximumPartitionCount; 8670 DWORD FeaturesLow; 8671 DWORD FeaturesHigh; 8672 DWORD EOTWarningZoneSize; 8673 } TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS; 8674 8675 typedef struct _TAPE_SET_DRIVE_PARAMETERS { 8676 BOOLEAN ECC; 8677 BOOLEAN Compression; 8678 BOOLEAN DataPadding; 8679 BOOLEAN ReportSetmarks; 8680 DWORD EOTWarningZoneSize; 8681 } TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS; 8682 8683 typedef struct _TAPE_GET_MEDIA_PARAMETERS { 8684 LARGE_INTEGER Capacity; 8685 LARGE_INTEGER Remaining; 8686 DWORD BlockSize; 8687 DWORD PartitionCount; 8688 BOOLEAN WriteProtected; 8689 } TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS; 8690 8691 typedef struct _TAPE_SET_MEDIA_PARAMETERS { 8692 DWORD BlockSize; 8693 } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS; 8694 8695 #define TAPE_FIXED_PARTITIONS __MSABI_LONG(0) 8696 #define TAPE_SELECT_PARTITIONS __MSABI_LONG(1) 8697 #define TAPE_INITIATOR_PARTITIONS __MSABI_LONG(2) 8698 8699 typedef struct _TAPE_CREATE_PARTITION { 8700 DWORD Method; 8701 DWORD Count; 8702 DWORD Size; 8703 } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION; 8704 8705 #define TAPE_QUERY_DRIVE_PARAMETERS __MSABI_LONG(0) 8706 #define TAPE_QUERY_MEDIA_CAPACITY __MSABI_LONG(1) 8707 #define TAPE_CHECK_FOR_DRIVE_PROBLEM __MSABI_LONG(2) 8708 #define TAPE_QUERY_IO_ERROR_DATA __MSABI_LONG(3) 8709 #define TAPE_QUERY_DEVICE_ERROR_DATA __MSABI_LONG(4) 8710 8711 typedef struct _TAPE_WMI_OPERATIONS { 8712 DWORD Method; 8713 DWORD DataBufferSize; 8714 PVOID DataBuffer; 8715 } TAPE_WMI_OPERATIONS,*PTAPE_WMI_OPERATIONS; 8716 8717 typedef enum _TAPE_DRIVE_PROBLEM_TYPE { 8718 TapeDriveProblemNone,TapeDriveReadWriteWarning,TapeDriveReadWriteError,TapeDriveReadWarning,TapeDriveWriteWarning,TapeDriveReadError,TapeDriveWriteError,TapeDriveHardwareError,TapeDriveUnsupportedMedia,TapeDriveScsiConnectionError,TapeDriveTimetoClean,TapeDriveCleanDriveNow,TapeDriveMediaLifeExpired,TapeDriveSnappedTape 8719 } TAPE_DRIVE_PROBLEM_TYPE; 8720 #endif 8721 8722 typedef DWORD TP_VERSION,*PTP_VERSION; 8723 typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE,*PTP_CALLBACK_INSTANCE; 8724 typedef VOID (NTAPI *PTP_SIMPLE_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context); 8725 typedef struct _TP_POOL TP_POOL,*PTP_POOL; 8726 8727 typedef enum _TP_CALLBACK_PRIORITY { 8728 TP_CALLBACK_PRIORITY_HIGH, 8729 TP_CALLBACK_PRIORITY_NORMAL, 8730 TP_CALLBACK_PRIORITY_LOW, 8731 TP_CALLBACK_PRIORITY_INVALID, 8732 TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID 8733 } TP_CALLBACK_PRIORITY; 8734 8735 typedef struct _TP_POOL_STACK_INFORMATION { 8736 SIZE_T StackReserve; 8737 SIZE_T StackCommit; 8738 } TP_POOL_STACK_INFORMATION, *PTP_POOL_STACK_INFORMATION; 8739 8740 typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP,*PTP_CLEANUP_GROUP; 8741 typedef VOID (NTAPI *PTP_CLEANUP_GROUP_CANCEL_CALLBACK) (PVOID ObjectContext, PVOID CleanupContext); 8742 8743 #if _WIN32_WINNT >= 0x0601 8744 typedef struct _TP_CALLBACK_ENVIRON_V3 { 8745 TP_VERSION Version; 8746 PTP_POOL Pool; 8747 PTP_CLEANUP_GROUP CleanupGroup; 8748 PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback; 8749 PVOID RaceDll; 8750 struct _ACTIVATION_CONTEXT *ActivationContext; 8751 PTP_SIMPLE_CALLBACK FinalizationCallback; 8752 union { 8753 DWORD Flags; 8754 struct { 8755 DWORD LongFunction : 1; 8756 DWORD Persistent : 1; 8757 DWORD Private : 30; 8758 } s; 8759 } u; 8760 TP_CALLBACK_PRIORITY CallbackPriority; 8761 DWORD Size; 8762 } TP_CALLBACK_ENVIRON_V3; 8763 typedef TP_CALLBACK_ENVIRON_V3 TP_CALLBACK_ENVIRON, *PTP_CALLBACK_ENVIRON; 8764 #else 8765 typedef struct _TP_CALLBACK_ENVIRON_V1 { 8766 TP_VERSION Version; 8767 PTP_POOL Pool; 8768 PTP_CLEANUP_GROUP CleanupGroup; 8769 PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback; 8770 PVOID RaceDll; 8771 struct _ACTIVATION_CONTEXT *ActivationContext; 8772 PTP_SIMPLE_CALLBACK FinalizationCallback; 8773 union { 8774 DWORD Flags; 8775 struct { 8776 DWORD LongFunction : 1; 8777 DWORD Persistent : 1; 8778 DWORD Private : 30; 8779 } s; 8780 } u; 8781 } TP_CALLBACK_ENVIRON_V1; 8782 typedef TP_CALLBACK_ENVIRON_V1 TP_CALLBACK_ENVIRON,*PTP_CALLBACK_ENVIRON; 8783 #endif 8784 8785 typedef struct _TP_WORK TP_WORK,*PTP_WORK; 8786 typedef VOID (NTAPI *PTP_WORK_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work); 8787 typedef struct _TP_TIMER TP_TIMER,*PTP_TIMER; 8788 typedef VOID (NTAPI *PTP_TIMER_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_TIMER Timer); 8789 typedef DWORD TP_WAIT_RESULT; 8790 typedef struct _TP_WAIT TP_WAIT,*PTP_WAIT; 8791 typedef VOID (NTAPI *PTP_WAIT_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult); 8792 typedef struct _TP_IO TP_IO,*PTP_IO; 8793 8794 #if !defined (__WIDL__) TpInitializeCallbackEnviron(PTP_CALLBACK_ENVIRON cbe)8795 FORCEINLINE VOID TpInitializeCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { 8796 cbe->Pool = NULL; 8797 cbe->CleanupGroup = NULL; 8798 cbe->CleanupGroupCancelCallback = NULL; 8799 cbe->RaceDll = NULL; 8800 cbe->ActivationContext = NULL; 8801 cbe->FinalizationCallback = NULL; 8802 cbe->u.Flags = 0; 8803 #if _WIN32_WINNT < 0x0601 8804 cbe->Version = 1; 8805 #else 8806 cbe->Version = 3; 8807 cbe->CallbackPriority = TP_CALLBACK_PRIORITY_NORMAL; 8808 cbe->Size = sizeof (TP_CALLBACK_ENVIRON); 8809 #endif 8810 } TpSetCallbackThreadpool(PTP_CALLBACK_ENVIRON cbe,PTP_POOL pool)8811 FORCEINLINE VOID TpSetCallbackThreadpool (PTP_CALLBACK_ENVIRON cbe, PTP_POOL pool) { cbe->Pool = pool; } TpSetCallbackCleanupGroup(PTP_CALLBACK_ENVIRON cbe,PTP_CLEANUP_GROUP cleanup_group,PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb)8812 FORCEINLINE VOID TpSetCallbackCleanupGroup (PTP_CALLBACK_ENVIRON cbe, PTP_CLEANUP_GROUP cleanup_group, PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb) { 8813 cbe->CleanupGroup = cleanup_group; 8814 cbe->CleanupGroupCancelCallback = cleanup_group_cb; 8815 } TpSetCallbackActivationContext(PTP_CALLBACK_ENVIRON cbe,struct _ACTIVATION_CONTEXT * actx)8816 FORCEINLINE VOID TpSetCallbackActivationContext (PTP_CALLBACK_ENVIRON cbe, struct _ACTIVATION_CONTEXT *actx) { cbe->ActivationContext = actx; } TpSetCallbackNoActivationContext(PTP_CALLBACK_ENVIRON cbe)8817 FORCEINLINE VOID TpSetCallbackNoActivationContext (PTP_CALLBACK_ENVIRON cbe) { cbe->ActivationContext = (struct _ACTIVATION_CONTEXT *) (LONG_PTR) -1; } TpSetCallbackLongFunction(PTP_CALLBACK_ENVIRON cbe)8818 FORCEINLINE VOID TpSetCallbackLongFunction (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.LongFunction = 1; } TpSetCallbackRaceWithDll(PTP_CALLBACK_ENVIRON cbe,PVOID h)8819 FORCEINLINE VOID TpSetCallbackRaceWithDll (PTP_CALLBACK_ENVIRON cbe, PVOID h) { cbe->RaceDll = h; } TpSetCallbackFinalizationCallback(PTP_CALLBACK_ENVIRON cbe,PTP_SIMPLE_CALLBACK fini_cb)8820 FORCEINLINE VOID TpSetCallbackFinalizationCallback (PTP_CALLBACK_ENVIRON cbe, PTP_SIMPLE_CALLBACK fini_cb) { cbe->FinalizationCallback = fini_cb; } 8821 #if _WIN32_WINNT >= 0x0601 TpSetCallbackPriority(PTP_CALLBACK_ENVIRON cbe,TP_CALLBACK_PRIORITY prio)8822 FORCEINLINE VOID TpSetCallbackPriority (PTP_CALLBACK_ENVIRON cbe, TP_CALLBACK_PRIORITY prio) { cbe->CallbackPriority = prio; } 8823 #endif TpSetCallbackPersistent(PTP_CALLBACK_ENVIRON cbe)8824 FORCEINLINE VOID TpSetCallbackPersistent (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.Persistent = 1; } TpDestroyCallbackEnviron(PTP_CALLBACK_ENVIRON cbe)8825 FORCEINLINE VOID TpDestroyCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { UNREFERENCED_PARAMETER (cbe); } 8826 #endif 8827 8828 #if defined(__x86_64) && !defined (__WIDL__) 8829 struct _TEB *NtCurrentTeb(VOID); 8830 PVOID GetCurrentFiber(VOID); 8831 PVOID GetFiberData(VOID); NtCurrentTeb(VOID)8832 FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB,Self)); } GetCurrentFiber(VOID)8833 FORCEINLINE PVOID GetCurrentFiber(VOID) { return(PVOID)__readgsqword(FIELD_OFFSET(NT_TIB,FiberData)); } GetFiberData(VOID)8834 FORCEINLINE PVOID GetFiberData(VOID) { 8835 return *(PVOID *)GetCurrentFiber(); 8836 } 8837 #endif /* __x86_64 */ 8838 8839 #if defined (__arm__) && !defined (__WIDL__) 8840 struct _TEB *NtCurrentTeb (VOID); 8841 PVOID GetCurrentFiber (VOID); 8842 PVOID GetFiberData (VOID); NtCurrentTeb(VOID)8843 FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb; 8844 __asm ("mrc p15, 0, %0, c13, c0, 2" : "=r" (teb)); 8845 return teb; } GetCurrentFiber(VOID)8846 FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); } GetFiberData(VOID)8847 FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); } 8848 #endif /* arm */ 8849 8850 #if defined (__aarch64__) && !defined (__WIDL__) 8851 struct _TEB *NtCurrentTeb (VOID); 8852 PVOID GetCurrentFiber (VOID); 8853 PVOID GetFiberData (VOID); NtCurrentTeb(VOID)8854 FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb; 8855 __asm ("mov %0, x18" : "=r" (teb)); 8856 return teb; } GetCurrentFiber(VOID)8857 FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); } GetFiberData(VOID)8858 FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); } 8859 #endif /* aarch64 */ 8860 8861 #ifndef _NTTMAPI_ 8862 #define _NTTMAPI_ 8863 8864 #ifdef __cplusplus 8865 extern "C" { 8866 #endif 8867 8868 #include <ktmtypes.h> 8869 8870 #define TRANSACTIONMANAGER_QUERY_INFORMATION 0x00001 8871 #define TRANSACTIONMANAGER_SET_INFORMATION 0x00002 8872 #define TRANSACTIONMANAGER_RECOVER 0x00004 8873 #define TRANSACTIONMANAGER_RENAME 0x00008 8874 #define TRANSACTIONMANAGER_CREATE_RM 0x00010 8875 #define TRANSACTIONMANAGER_BIND_TRANSACTION 0x00020 8876 8877 #define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTIONMANAGER_QUERY_INFORMATION) 8878 #define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTIONMANAGER_SET_INFORMATION | TRANSACTIONMANAGER_RECOVER | TRANSACTIONMANAGER_RENAME | TRANSACTIONMANAGER_CREATE_RM) 8879 #define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE) 8880 #define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTIONMANAGER_GENERIC_READ | TRANSACTIONMANAGER_GENERIC_WRITE | TRANSACTIONMANAGER_GENERIC_EXECUTE | TRANSACTIONMANAGER_BIND_TRANSACTION) 8881 8882 #define TRANSACTION_QUERY_INFORMATION (0x0001) 8883 #define TRANSACTION_SET_INFORMATION (0x0002) 8884 #define TRANSACTION_ENLIST (0x0004) 8885 #define TRANSACTION_COMMIT (0x0008) 8886 #define TRANSACTION_ROLLBACK (0x0010) 8887 #define TRANSACTION_PROPAGATE (0x0020) 8888 #define TRANSACTION_RIGHT_RESERVED1 (0x0040) 8889 8890 #define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTION_QUERY_INFORMATION | SYNCHRONIZE) 8891 #define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_COMMIT | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE) 8892 #define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | TRANSACTION_COMMIT | TRANSACTION_ROLLBACK | SYNCHRONIZE) 8893 #define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTION_GENERIC_READ | TRANSACTION_GENERIC_WRITE | TRANSACTION_GENERIC_EXECUTE) 8894 #define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ | STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE) 8895 8896 #define RESOURCEMANAGER_QUERY_INFORMATION (0x0001) 8897 #define RESOURCEMANAGER_SET_INFORMATION (0x0002) 8898 #define RESOURCEMANAGER_RECOVER (0x0004) 8899 #define RESOURCEMANAGER_ENLIST (0x0008) 8900 #define RESOURCEMANAGER_GET_NOTIFICATION (0x0010) 8901 #define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020) 8902 #define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040) 8903 8904 #define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | RESOURCEMANAGER_QUERY_INFORMATION | SYNCHRONIZE) 8905 #define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | RESOURCEMANAGER_SET_INFORMATION | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_REGISTER_PROTOCOL | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE) 8906 #define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE) 8907 #define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | RESOURCEMANAGER_GENERIC_READ | RESOURCEMANAGER_GENERIC_WRITE | RESOURCEMANAGER_GENERIC_EXECUTE) 8908 8909 #define ENLISTMENT_QUERY_INFORMATION 1 8910 #define ENLISTMENT_SET_INFORMATION 2 8911 #define ENLISTMENT_RECOVER 4 8912 #define ENLISTMENT_SUBORDINATE_RIGHTS 8 8913 #define ENLISTMENT_SUPERIOR_RIGHTS 0x10 8914 8915 #define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ | ENLISTMENT_QUERY_INFORMATION) 8916 #define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | ENLISTMENT_SET_INFORMATION | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS) 8917 #define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS) 8918 #define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | ENLISTMENT_GENERIC_READ | ENLISTMENT_GENERIC_WRITE | ENLISTMENT_GENERIC_EXECUTE) 8919 8920 typedef enum _TRANSACTION_OUTCOME { 8921 TransactionOutcomeUndetermined = 1, 8922 TransactionOutcomeCommitted, 8923 TransactionOutcomeAborted, 8924 } TRANSACTION_OUTCOME; 8925 8926 typedef enum _TRANSACTION_STATE { 8927 TransactionStateNormal = 1, 8928 TransactionStateIndoubt, 8929 TransactionStateCommittedNotify, 8930 } TRANSACTION_STATE; 8931 8932 typedef struct _TRANSACTION_BASIC_INFORMATION { 8933 GUID TransactionId; 8934 DWORD State; 8935 DWORD Outcome; 8936 } TRANSACTION_BASIC_INFORMATION,*PTRANSACTION_BASIC_INFORMATION; 8937 8938 typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION { 8939 GUID TmIdentity; 8940 LARGE_INTEGER VirtualClock; 8941 } TRANSACTIONMANAGER_BASIC_INFORMATION,*PTRANSACTIONMANAGER_BASIC_INFORMATION; 8942 8943 typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION { 8944 GUID LogIdentity; 8945 } TRANSACTIONMANAGER_LOG_INFORMATION,*PTRANSACTIONMANAGER_LOG_INFORMATION; 8946 8947 typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION { 8948 DWORD LogPathLength; 8949 WCHAR LogPath[1]; 8950 } TRANSACTIONMANAGER_LOGPATH_INFORMATION,*PTRANSACTIONMANAGER_LOGPATH_INFORMATION; 8951 8952 typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION { 8953 ULONGLONG LastRecoveredLsn; 8954 } TRANSACTIONMANAGER_RECOVERY_INFORMATION,*PTRANSACTIONMANAGER_RECOVERY_INFORMATION; 8955 8956 typedef struct _TRANSACTIONMANAGER_OLDEST_INFORMATION { 8957 GUID OldestTransactionGuid; 8958 } TRANSACTIONMANAGER_OLDEST_INFORMATION,*PTRANSACTIONMANAGER_OLDEST_INFORMATION; 8959 8960 typedef struct _TRANSACTION_PROPERTIES_INFORMATION { 8961 DWORD IsolationLevel; 8962 DWORD IsolationFlags; 8963 LARGE_INTEGER Timeout; 8964 DWORD Outcome; 8965 DWORD DescriptionLength; 8966 WCHAR Description[1]; 8967 } TRANSACTION_PROPERTIES_INFORMATION,*PTRANSACTION_PROPERTIES_INFORMATION; 8968 8969 typedef struct _TRANSACTION_BIND_INFORMATION { 8970 HANDLE TmHandle; 8971 } TRANSACTION_BIND_INFORMATION,*PTRANSACTION_BIND_INFORMATION; 8972 8973 typedef struct _TRANSACTION_ENLISTMENT_PAIR { 8974 GUID EnlistmentId; 8975 GUID ResourceManagerId; 8976 } TRANSACTION_ENLISTMENT_PAIR,*PTRANSACTION_ENLISTMENT_PAIR; 8977 8978 typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION { 8979 DWORD NumberOfEnlistments; 8980 TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1]; 8981 } TRANSACTION_ENLISTMENTS_INFORMATION,*PTRANSACTION_ENLISTMENTS_INFORMATION; 8982 8983 typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION { 8984 TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair; 8985 } TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION,*PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION; 8986 8987 typedef struct _RESOURCEMANAGER_BASIC_INFORMATION { 8988 GUID ResourceManagerId; 8989 DWORD DescriptionLength; 8990 WCHAR Description[1]; 8991 } RESOURCEMANAGER_BASIC_INFORMATION,*PRESOURCEMANAGER_BASIC_INFORMATION; 8992 8993 typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION { 8994 HANDLE IoCompletionPortHandle; 8995 ULONG_PTR CompletionKey; 8996 } RESOURCEMANAGER_COMPLETION_INFORMATION,*PRESOURCEMANAGER_COMPLETION_INFORMATION; 8997 8998 typedef enum _TRANSACTION_INFORMATION_CLASS { 8999 TransactionBasicInformation, 9000 TransactionPropertiesInformation, 9001 TransactionEnlistmentInformation, 9002 TransactionSuperiorEnlistmentInformation, 9003 TransactionBindInformation, 9004 TransactionDTCPrivateInformation 9005 } TRANSACTION_INFORMATION_CLASS; 9006 9007 typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS { 9008 TransactionManagerBasicInformation, 9009 TransactionManagerLogInformation, 9010 TransactionManagerLogPathInformation, 9011 TransactionManagerOnlineProbeInformation = 3, 9012 TransactionManagerRecoveryInformation = 4, 9013 TransactionManagerOldestTransactionInformation = 5 9014 } TRANSACTIONMANAGER_INFORMATION_CLASS; 9015 9016 typedef enum _RESOURCEMANAGER_INFORMATION_CLASS { 9017 ResourceManagerBasicInformation, 9018 ResourceManagerCompletionInformation 9019 } RESOURCEMANAGER_INFORMATION_CLASS; 9020 9021 typedef struct _ENLISTMENT_BASIC_INFORMATION { 9022 GUID EnlistmentId; 9023 GUID TransactionId; 9024 GUID ResourceManagerId; 9025 } ENLISTMENT_BASIC_INFORMATION,*PENLISTMENT_BASIC_INFORMATION; 9026 9027 typedef struct _ENLISTMENT_CRM_INFORMATION { 9028 GUID CrmTransactionManagerId; 9029 GUID CrmResourceManagerId; 9030 GUID CrmEnlistmentId; 9031 } ENLISTMENT_CRM_INFORMATION,*PENLISTMENT_CRM_INFORMATION; 9032 9033 typedef enum _ENLISTMENT_INFORMATION_CLASS { 9034 EnlistmentBasicInformation, 9035 EnlistmentRecoveryInformation, 9036 EnlistmentCrmInformation 9037 } ENLISTMENT_INFORMATION_CLASS; 9038 9039 typedef struct _TRANSACTION_LIST_ENTRY { 9040 /*UOW*/ GUID UOW; 9041 } TRANSACTION_LIST_ENTRY,*PTRANSACTION_LIST_ENTRY; 9042 9043 typedef struct _TRANSACTION_LIST_INFORMATION { 9044 DWORD NumberOfTransactions; 9045 TRANSACTION_LIST_ENTRY TransactionInformation[1]; 9046 } TRANSACTION_LIST_INFORMATION,*PTRANSACTION_LIST_INFORMATION; 9047 9048 typedef enum _KTMOBJECT_TYPE { 9049 KTMOBJECT_TRANSACTION, 9050 KTMOBJECT_TRANSACTION_MANAGER, 9051 KTMOBJECT_RESOURCE_MANAGER, 9052 KTMOBJECT_ENLISTMENT, 9053 KTMOBJECT_INVALID 9054 } KTMOBJECT_TYPE,*PKTMOBJECT_TYPE; 9055 9056 typedef struct _KTMOBJECT_CURSOR { 9057 GUID LastQuery; 9058 DWORD ObjectIdCount; 9059 GUID ObjectIds[1]; 9060 } KTMOBJECT_CURSOR,*PKTMOBJECT_CURSOR; 9061 9062 #ifdef __cplusplus 9063 } 9064 #endif 9065 9066 #endif 9067 9068 /* Field Names From (See _fields_ section) 9069 * FIXME: Verify these against documentation 9070 * -- These documentation describes Win32 Constants and Structures in Python -- 9071 * Constants - http://packages.python.org/winappdbg/winappdbg.win32.context_i386-pysrc.html 9072 * WOW64_FLOATING_SAVE_AREA - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_FLOATING_SAVE_AREA-class.html 9073 * WOW64_CONTEXT - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_CONTEXT-class.html 9074 */ 9075 9076 #define WOW64_CONTEXT_i386 0x00010000 9077 #define WOW64_CONTEXT_i486 0x00010000 9078 #define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000001)) 9079 #define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000002)) 9080 #define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000004)) 9081 #define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008)) 9082 #define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010)) 9083 #define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020)) 9084 #define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS) 9085 #define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS | WOW64_CONTEXT_FLOATING_POINT | WOW64_CONTEXT_DEBUG_REGISTERS | WOW64_CONTEXT_EXTENDED_REGISTERS) 9086 9087 #define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040)) 9088 9089 #define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000 9090 #define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000 9091 #define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000 9092 #define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000 9093 9094 #define WOW64_SIZE_OF_80387_REGISTERS 80 9095 #define WOW64_MAXIMUM_SUPPORTED_EXTENSION 512 9096 9097 typedef struct _WOW64_FLOATING_SAVE_AREA { 9098 DWORD ControlWord; 9099 DWORD StatusWord; 9100 DWORD TagWord; 9101 DWORD ErrorOffset; 9102 DWORD ErrorSelector; 9103 DWORD DataOffset; 9104 DWORD DataSelector; 9105 BYTE RegisterArea[WOW64_SIZE_OF_80387_REGISTERS]; 9106 DWORD Cr0NpxState; 9107 } WOW64_FLOATING_SAVE_AREA, *PWOW64_FLOATING_SAVE_AREA; 9108 9109 #include "pshpack4.h" 9110 typedef struct _WOW64_CONTEXT { 9111 DWORD ContextFlags; 9112 DWORD Dr0; 9113 DWORD Dr1; 9114 DWORD Dr2; 9115 DWORD Dr3; 9116 DWORD Dr6; 9117 DWORD Dr7; 9118 WOW64_FLOATING_SAVE_AREA FloatSave; 9119 DWORD SegGs; 9120 DWORD SegFs; 9121 DWORD SegEs; 9122 DWORD SegDs; 9123 DWORD Edi; 9124 DWORD Esi; 9125 DWORD Ebx; 9126 DWORD Edx; 9127 DWORD Ecx; 9128 DWORD Eax; 9129 DWORD Ebp; 9130 DWORD Eip; 9131 DWORD SegCs; 9132 DWORD EFlags; 9133 DWORD Esp; 9134 DWORD SegSs; 9135 BYTE ExtendedRegisters[WOW64_MAXIMUM_SUPPORTED_EXTENSION]; 9136 } WOW64_CONTEXT, *PWOW64_CONTEXT; 9137 #include "poppack.h" 9138 9139 typedef struct _WOW64_LDT_ENTRY { 9140 WORD LimitLow; 9141 WORD BaseLow; 9142 __C89_NAMELESS union { 9143 struct { 9144 BYTE BaseMid; 9145 BYTE Flags1; 9146 BYTE Flags2; 9147 BYTE BaseHi; 9148 } Bytes; 9149 struct { 9150 DWORD BaseMid :8; 9151 DWORD Type :5; 9152 DWORD Dpl :2; 9153 DWORD Pres :1; 9154 DWORD LimitHi :4; 9155 DWORD Sys :1; 9156 DWORD Reserved_0 :1; 9157 DWORD Default_Big :1; 9158 DWORD Granularity :1; 9159 DWORD BaseHi :8; 9160 } Bits; 9161 } HighWord; 9162 } WOW64_LDT_ENTRY, *PWOW64_LDT_ENTRY; 9163 9164 typedef struct _WOW64_DESCRIPTOR_TABLE_ENTRY { 9165 DWORD Selector; 9166 WOW64_LDT_ENTRY Descriptor; 9167 } WOW64_DESCRIPTOR_TABLE_ENTRY,*PWOW64_DESCRIPTOR_TABLE_ENTRY; 9168 9169 #if (_WIN32_WINNT >= 0x0601) 9170 9171 #ifndef ___PROCESSOR_NUMBER_DEFINED 9172 #define ___PROCESSOR_NUMBER_DEFINED 9173 typedef struct _PROCESSOR_NUMBER { 9174 WORD Group; 9175 BYTE Number; 9176 BYTE Reserved; 9177 } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; 9178 9179 #define ALL_PROCESSOR_GROUPS 0xffff 9180 #endif /* !___PROCESSOR_NUMBER_DEFINED */ 9181 9182 #endif /*(_WIN32_WINNT >= 0x0601)*/ 9183 9184 #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION (1) 9185 #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION (2) 9186 #define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION (3) 9187 #define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION (4) 9188 #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION (5) 9189 #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION (6) 9190 #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION (7) 9191 #define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE (8) 9192 #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES (9) 9193 #define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS (10) 9194 #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11) 9195 9196 #ifdef __cplusplus 9197 } 9198 #endif 9199 9200 #endif /* _WINNT_ */ 9201 9202