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 3146 #define SECURITY_CAPABILITY_INTERNET_CLIENT (__MSABI_LONG(0x00000001)) 3147 #define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (__MSABI_LONG(0x00000002)) 3148 #define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (__MSABI_LONG(0x00000003)) 3149 #define SECURITY_CAPABILITY_PICTURES_LIBRARY (__MSABI_LONG(0x00000004)) 3150 #define SECURITY_CAPABILITY_VIDEOS_LIBRARY (__MSABI_LONG(0x00000005)) 3151 #define SECURITY_CAPABILITY_MUSIC_LIBRARY (__MSABI_LONG(0x00000006)) 3152 #define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (__MSABI_LONG(0x00000007)) 3153 #define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (__MSABI_LONG(0x00000008)) 3154 #define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (__MSABI_LONG(0x00000009)) 3155 #define SECURITY_CAPABILITY_REMOVABLE_STORAGE (__MSABI_LONG(0x0000000a)) 3156 3157 #define SECURITY_CAPABILITY_INTERNET_EXPLORER (__MSABI_LONG(0x00001000)) 3158 3159 #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} 3160 #define SECURITY_MANDATORY_UNTRUSTED_RID (__MSABI_LONG(0x00000000)) 3161 #define SECURITY_MANDATORY_LOW_RID (__MSABI_LONG(0x00001000)) 3162 #define SECURITY_MANDATORY_MEDIUM_RID (__MSABI_LONG(0x00002000)) 3163 #define SECURITY_MANDATORY_HIGH_RID (__MSABI_LONG(0x00003000)) 3164 #define SECURITY_MANDATORY_SYSTEM_RID (__MSABI_LONG(0x00004000)) 3165 #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (__MSABI_LONG(0x00005000)) 3166 3167 #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID 3168 3169 #define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000) 3170 3171 #define SECURITY_SCOPED_POLICY_ID_AUTHORITY {0, 0, 0, 0, 0, 17} 3172 3173 #define SECURITY_AUTHENTICATION_AUTHORITY {0, 0, 0, 0, 0, 18} 3174 #define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (__MSABI_LONG(1)) 3175 #define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (__MSABI_LONG(0x00000001)) 3176 #define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (__MSABI_LONG(0x00000002)) 3177 3178 #define SECURITY_TRUSTED_INSTALLER_RID1 956008885 3179 #define SECURITY_TRUSTED_INSTALLER_RID2 3418522649 3180 #define SECURITY_TRUSTED_INSTALLER_RID3 1831038044 3181 #define SECURITY_TRUSTED_INSTALLER_RID4 1853292631 3182 #define SECURITY_TRUSTED_INSTALLER_RID5 2271478464 3183 3184 typedef enum { 3185 WinNullSid = 0,WinWorldSid = 1,WinLocalSid = 2,WinCreatorOwnerSid = 3, 3186 WinCreatorGroupSid = 4,WinCreatorOwnerServerSid = 5, 3187 WinCreatorGroupServerSid = 6,WinNtAuthoritySid = 7,WinDialupSid = 8, 3188 WinNetworkSid = 9,WinBatchSid = 10,WinInteractiveSid = 11, 3189 WinServiceSid = 12,WinAnonymousSid = 13,WinProxySid = 14, 3190 WinEnterpriseControllersSid = 15,WinSelfSid = 16, 3191 WinAuthenticatedUserSid = 17,WinRestrictedCodeSid = 18, 3192 WinTerminalServerSid = 19,WinRemoteLogonIdSid = 20,WinLogonIdsSid = 21, 3193 WinLocalSystemSid = 22,WinLocalServiceSid = 23,WinNetworkServiceSid = 24, 3194 WinBuiltinDomainSid = 25,WinBuiltinAdministratorsSid = 26, 3195 WinBuiltinUsersSid = 27,WinBuiltinGuestsSid = 28, 3196 WinBuiltinPowerUsersSid = 29,WinBuiltinAccountOperatorsSid = 30, 3197 WinBuiltinSystemOperatorsSid = 31,WinBuiltinPrintOperatorsSid = 32, 3198 WinBuiltinBackupOperatorsSid = 33,WinBuiltinReplicatorSid = 34, 3199 WinBuiltinPreWindows2000CompatibleAccessSid = 35, 3200 WinBuiltinRemoteDesktopUsersSid = 36, 3201 WinBuiltinNetworkConfigurationOperatorsSid = 37, 3202 WinAccountAdministratorSid = 38,WinAccountGuestSid = 39, 3203 WinAccountKrbtgtSid = 40,WinAccountDomainAdminsSid = 41, 3204 WinAccountDomainUsersSid = 42,WinAccountDomainGuestsSid = 43, 3205 WinAccountComputersSid = 44,WinAccountControllersSid = 45, 3206 WinAccountCertAdminsSid = 46,WinAccountSchemaAdminsSid = 47, 3207 WinAccountEnterpriseAdminsSid = 48,WinAccountPolicyAdminsSid = 49, 3208 WinAccountRasAndIasServersSid = 50,WinNTLMAuthenticationSid = 51, 3209 WinDigestAuthenticationSid = 52,WinSChannelAuthenticationSid = 53, 3210 WinThisOrganizationSid = 54,WinOtherOrganizationSid = 55, 3211 WinBuiltinIncomingForestTrustBuildersSid = 56, 3212 WinBuiltinPerfMonitoringUsersSid = 57,WinBuiltinPerfLoggingUsersSid = 58, 3213 WinBuiltinAuthorizationAccessSid = 59, 3214 WinBuiltinTerminalServerLicenseServersSid = 60, 3215 WinBuiltinDCOMUsersSid = 61,WinBuiltinIUsersSid = 62, 3216 WinIUserSid = 63, WinBuiltinCryptoOperatorsSid = 64, 3217 WinUntrustedLabelSid = 65, WinLowLabelSid = 66, WinMediumLabelSid = 67, 3218 WinHighLabelSid = 68, WinSystemLabelSid = 69, WinWriteRestrictedCodeSid = 70, 3219 WinCreatorOwnerRightsSid = 71, WinCacheablePrincipalsGroupSid = 72, 3220 WinNonCacheablePrincipalsGroupSid = 73, WinEnterpriseReadonlyControllersSid = 74, 3221 WinAccountReadonlyControllersSid = 75, WinBuiltinEventLogReadersGroup = 76, 3222 WinNewEnterpriseReadonlyControllersSid = 77, WinBuiltinCertSvcDComAccessGroup = 78, 3223 WinMediumPlusLabelSid = 79, WinLocalLogonSid = 80, WinConsoleLogonSid = 81, 3224 WinThisOrganizationCertificateSid = 82, WinApplicationPackageAuthoritySid = 83, 3225 WinBuiltinAnyPackageSid = 84, WinCapabilityInternetClientSid = 85, 3226 WinCapabilityInternetClientServerSid = 86, 3227 WinCapabilityPrivateNetworkClientServerSid = 87, 3228 WinCapabilityPicturesLibrarySid = 88, WinCapabilityVideosLibrarySid = 89, 3229 WinCapabilityMusicLibrarySid = 90, WinCapabilityDocumentsLibrarySid = 91, 3230 WinCapabilitySharedUserCertificatesSid = 92, WinCapabilityEnterpriseAuthenticationSid = 93, 3231 WinCapabilityRemovableStorageSid = 94, WinBuiltinRDSRemoteAccessServersSid = 95, 3232 WinBuiltinRDSEndpointServersSid = 96, WinBuiltinRDSManagementServersSid = 97, 3233 WinUserModeDriversSid = 98, WinBuiltinHyperVAdminsSid = 99, 3234 WinAccountCloneableControllersSid = 100, 3235 WinBuiltinAccessControlAssistanceOperatorsSid = 101, 3236 WinBuiltinRemoteManagementUsersSid = 102, WinAuthenticationAuthorityAssertedSid = 103, 3237 WinAuthenticationServiceAssertedSid = 104, 3238 WinLocalAccountSid = 105, 3239 WinLocalAccountAndAdministratorSid = 106, 3240 WinAccountProtectedUsersSid = 107, 3241 WinCapabilityAppointmentsSid = 108, 3242 WinCapabilityContactsSid = 109, 3243 WinAccountDefaultSystemManagedSid = 110, 3244 WinBuiltinDefaultSystemManagedGroupSid = 111, 3245 WinBuiltinStorageReplicaAdminsSid = 112, 3246 WinAccountKeyAdminsSid = 113, 3247 WinAccountEnterpriseKeyAdminsSid = 114, 3248 WinAuthenticationKeyTrustSid = 115, 3249 WinAuthenticationKeyPropertyMFASid = 116, 3250 WinAuthenticationKeyPropertyAttestationSid = 117 3251 } WELL_KNOWN_SID_TYPE; 3252 3253 #define SYSTEM_LUID { 0x3e7, 0x0 } 3254 #define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 } 3255 #define LOCALSERVICE_LUID { 0x3e5, 0x0 } 3256 #define NETWORKSERVICE_LUID { 0x3e4, 0x0 } 3257 #define IUSER_LUID { 0x3e3, 0x0 } 3258 3259 #define SE_GROUP_MANDATORY (__MSABI_LONG(0x00000001)) 3260 #define SE_GROUP_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000002)) 3261 #define SE_GROUP_ENABLED (__MSABI_LONG(0x00000004)) 3262 #define SE_GROUP_OWNER (__MSABI_LONG(0x00000008)) 3263 #define SE_GROUP_USE_FOR_DENY_ONLY (__MSABI_LONG(0x00000010)) 3264 #define SE_GROUP_INTEGRITY (__MSABI_LONG(0x00000020)) 3265 #define SE_GROUP_INTEGRITY_ENABLED (__MSABI_LONG(0x00000040)) 3266 #define SE_GROUP_LOGON_ID (__MSABI_LONG(0xC0000000)) 3267 #define SE_GROUP_RESOURCE (__MSABI_LONG(0x20000000)) 3268 3269 #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) 3270 3271 #define ACL_REVISION (2) 3272 #define ACL_REVISION_DS (4) 3273 3274 #define ACL_REVISION1 (1) 3275 #define MIN_ACL_REVISION ACL_REVISION2 3276 #define ACL_REVISION2 (2) 3277 #define ACL_REVISION3 (3) 3278 #define ACL_REVISION4 (4) 3279 #define MAX_ACL_REVISION ACL_REVISION4 3280 3281 typedef struct _ACL { 3282 BYTE AclRevision; 3283 BYTE Sbz1; 3284 WORD AclSize; 3285 WORD AceCount; 3286 WORD Sbz2; 3287 } ACL; 3288 typedef ACL *PACL; 3289 3290 typedef struct _ACE_HEADER { 3291 BYTE AceType; 3292 BYTE AceFlags; 3293 WORD AceSize; 3294 } ACE_HEADER; 3295 typedef ACE_HEADER *PACE_HEADER; 3296 3297 #define ACCESS_MIN_MS_ACE_TYPE (0x0) 3298 #define ACCESS_ALLOWED_ACE_TYPE (0x0) 3299 #define ACCESS_DENIED_ACE_TYPE (0x1) 3300 #define SYSTEM_AUDIT_ACE_TYPE (0x2) 3301 #define SYSTEM_ALARM_ACE_TYPE (0x3) 3302 #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3) 3303 3304 #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4) 3305 #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4) 3306 3307 #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5) 3308 #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5) 3309 #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6) 3310 #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7) 3311 #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8) 3312 #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8) 3313 3314 #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8) 3315 #define ACCESS_MAX_MS_ACE_TYPE (0x8) 3316 3317 #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9) 3318 #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA) 3319 #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB) 3320 #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC) 3321 #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD) 3322 #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE) 3323 #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF) 3324 #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10) 3325 3326 #define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11) 3327 #define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE (0x12) 3328 #define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE (0x13) 3329 #define ACCESS_MAX_MS_V5_ACE_TYPE (0x13) 3330 3331 #define OBJECT_INHERIT_ACE (0x1) 3332 #define CONTAINER_INHERIT_ACE (0x2) 3333 #define NO_PROPAGATE_INHERIT_ACE (0x4) 3334 #define INHERIT_ONLY_ACE (0x8) 3335 #define INHERITED_ACE (0x10) 3336 #define VALID_INHERIT_FLAGS (0x1F) 3337 3338 #define SUCCESSFUL_ACCESS_ACE_FLAG (0x40) 3339 #define FAILED_ACCESS_ACE_FLAG (0x80) 3340 3341 typedef struct _ACCESS_ALLOWED_ACE { 3342 ACE_HEADER Header; 3343 ACCESS_MASK Mask; 3344 DWORD SidStart; 3345 } ACCESS_ALLOWED_ACE; 3346 3347 typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE; 3348 3349 typedef struct _ACCESS_DENIED_ACE { 3350 ACE_HEADER Header; 3351 ACCESS_MASK Mask; 3352 DWORD SidStart; 3353 } ACCESS_DENIED_ACE; 3354 typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE; 3355 3356 typedef struct _SYSTEM_AUDIT_ACE { 3357 ACE_HEADER Header; 3358 ACCESS_MASK Mask; 3359 DWORD SidStart; 3360 } SYSTEM_AUDIT_ACE; 3361 typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; 3362 3363 typedef struct _SYSTEM_ALARM_ACE { 3364 ACE_HEADER Header; 3365 ACCESS_MASK Mask; 3366 DWORD SidStart; 3367 } SYSTEM_ALARM_ACE; 3368 typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE; 3369 3370 typedef struct _SYSTEM_RESOURCE_ATTRIBUTE_ACE { 3371 ACE_HEADER Header; 3372 ACCESS_MASK Mask; 3373 DWORD SidStart; 3374 } SYSTEM_RESOURCE_ATTRIBUTE_ACE,*PSYSTEM_RESOURCE_ATTRIBUTE_ACE; 3375 3376 typedef struct _SYSTEM_SCOPED_POLICY_ID_ACE { 3377 ACE_HEADER Header; 3378 ACCESS_MASK Mask; 3379 DWORD SidStart; 3380 } SYSTEM_SCOPED_POLICY_ID_ACE,*PSYSTEM_SCOPED_POLICY_ID_ACE; 3381 3382 typedef struct _SYSTEM_MANDATORY_LABEL_ACE { 3383 ACE_HEADER Header; 3384 ACCESS_MASK Mask; 3385 DWORD SidStart; 3386 } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE; 3387 3388 #define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1 3389 #define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2 3390 #define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4 3391 3392 #define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP | SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP) 3393 3394 typedef struct _ACCESS_ALLOWED_OBJECT_ACE { 3395 ACE_HEADER Header; 3396 ACCESS_MASK Mask; 3397 DWORD Flags; 3398 GUID ObjectType; 3399 GUID InheritedObjectType; 3400 DWORD SidStart; 3401 } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; 3402 3403 typedef struct _ACCESS_DENIED_OBJECT_ACE { 3404 ACE_HEADER Header; 3405 ACCESS_MASK Mask; 3406 DWORD Flags; 3407 GUID ObjectType; 3408 GUID InheritedObjectType; 3409 DWORD SidStart; 3410 } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; 3411 3412 typedef struct _SYSTEM_AUDIT_OBJECT_ACE { 3413 ACE_HEADER Header; 3414 ACCESS_MASK Mask; 3415 DWORD Flags; 3416 GUID ObjectType; 3417 GUID InheritedObjectType; 3418 DWORD SidStart; 3419 } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; 3420 3421 typedef struct _SYSTEM_ALARM_OBJECT_ACE { 3422 ACE_HEADER Header; 3423 ACCESS_MASK Mask; 3424 DWORD Flags; 3425 GUID ObjectType; 3426 GUID InheritedObjectType; 3427 DWORD SidStart; 3428 } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; 3429 3430 typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { 3431 ACE_HEADER Header; 3432 ACCESS_MASK Mask; 3433 DWORD SidStart; 3434 } ACCESS_ALLOWED_CALLBACK_ACE,*PACCESS_ALLOWED_CALLBACK_ACE; 3435 3436 typedef struct _ACCESS_DENIED_CALLBACK_ACE { 3437 ACE_HEADER Header; 3438 ACCESS_MASK Mask; 3439 DWORD SidStart; 3440 } ACCESS_DENIED_CALLBACK_ACE,*PACCESS_DENIED_CALLBACK_ACE; 3441 3442 typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { 3443 ACE_HEADER Header; 3444 ACCESS_MASK Mask; 3445 DWORD SidStart; 3446 } SYSTEM_AUDIT_CALLBACK_ACE,*PSYSTEM_AUDIT_CALLBACK_ACE; 3447 3448 typedef struct _SYSTEM_ALARM_CALLBACK_ACE { 3449 ACE_HEADER Header; 3450 ACCESS_MASK Mask; 3451 DWORD SidStart; 3452 } SYSTEM_ALARM_CALLBACK_ACE,*PSYSTEM_ALARM_CALLBACK_ACE; 3453 3454 typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { 3455 ACE_HEADER Header; 3456 ACCESS_MASK Mask; 3457 DWORD Flags; 3458 GUID ObjectType; 3459 GUID InheritedObjectType; 3460 DWORD SidStart; 3461 3462 } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE,*PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; 3463 3464 typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { 3465 ACE_HEADER Header; 3466 ACCESS_MASK Mask; 3467 DWORD Flags; 3468 GUID ObjectType; 3469 GUID InheritedObjectType; 3470 DWORD SidStart; 3471 } ACCESS_DENIED_CALLBACK_OBJECT_ACE,*PACCESS_DENIED_CALLBACK_OBJECT_ACE; 3472 3473 typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { 3474 ACE_HEADER Header; 3475 ACCESS_MASK Mask; 3476 DWORD Flags; 3477 GUID ObjectType; 3478 GUID InheritedObjectType; 3479 DWORD SidStart; 3480 } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE,*PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; 3481 3482 typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { 3483 ACE_HEADER Header; 3484 ACCESS_MASK Mask; 3485 DWORD Flags; 3486 GUID ObjectType; 3487 GUID InheritedObjectType; 3488 DWORD SidStart; 3489 3490 } SYSTEM_ALARM_CALLBACK_OBJECT_ACE,*PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; 3491 3492 #define ACE_OBJECT_TYPE_PRESENT 0x1 3493 #define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2 3494 3495 typedef enum _ACL_INFORMATION_CLASS { 3496 AclRevisionInformation = 1,AclSizeInformation 3497 } ACL_INFORMATION_CLASS; 3498 3499 typedef struct _ACL_REVISION_INFORMATION { 3500 DWORD AclRevision; 3501 } ACL_REVISION_INFORMATION; 3502 typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION; 3503 3504 typedef struct _ACL_SIZE_INFORMATION { 3505 DWORD AceCount; 3506 DWORD AclBytesInUse; 3507 DWORD AclBytesFree; 3508 } ACL_SIZE_INFORMATION; 3509 typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION; 3510 3511 #define SECURITY_DESCRIPTOR_REVISION (1) 3512 #define SECURITY_DESCRIPTOR_REVISION1 (1) 3513 3514 #define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR)) 3515 3516 typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL; 3517 3518 #define SE_OWNER_DEFAULTED (0x0001) 3519 #define SE_GROUP_DEFAULTED (0x0002) 3520 #define SE_DACL_PRESENT (0x0004) 3521 #define SE_DACL_DEFAULTED (0x0008) 3522 #define SE_SACL_PRESENT (0x0010) 3523 #define SE_SACL_DEFAULTED (0x0020) 3524 #define SE_DACL_AUTO_INHERIT_REQ (0x0100) 3525 #define SE_SACL_AUTO_INHERIT_REQ (0x0200) 3526 #define SE_DACL_AUTO_INHERITED (0x0400) 3527 #define SE_SACL_AUTO_INHERITED (0x0800) 3528 #define SE_DACL_PROTECTED (0x1000) 3529 #define SE_SACL_PROTECTED (0x2000) 3530 #define SE_RM_CONTROL_VALID (0x4000) 3531 #define SE_SELF_RELATIVE (0x8000) 3532 3533 typedef struct _SECURITY_DESCRIPTOR_RELATIVE { 3534 BYTE Revision; 3535 BYTE Sbz1; 3536 SECURITY_DESCRIPTOR_CONTROL Control; 3537 DWORD Owner; 3538 DWORD Group; 3539 DWORD Sacl; 3540 DWORD Dacl; 3541 } SECURITY_DESCRIPTOR_RELATIVE,*PISECURITY_DESCRIPTOR_RELATIVE; 3542 3543 typedef struct _SECURITY_DESCRIPTOR { 3544 BYTE Revision; 3545 BYTE Sbz1; 3546 SECURITY_DESCRIPTOR_CONTROL Control; 3547 PSID Owner; 3548 PSID Group; 3549 PACL Sacl; 3550 PACL Dacl; 3551 } SECURITY_DESCRIPTOR,*PISECURITY_DESCRIPTOR; 3552 3553 typedef struct _OBJECT_TYPE_LIST { 3554 WORD Level; 3555 WORD Sbz; 3556 GUID *ObjectType; 3557 } OBJECT_TYPE_LIST,*POBJECT_TYPE_LIST; 3558 3559 #define ACCESS_OBJECT_GUID 0 3560 #define ACCESS_PROPERTY_SET_GUID 1 3561 #define ACCESS_PROPERTY_GUID 2 3562 3563 #define ACCESS_MAX_LEVEL 4 3564 3565 typedef enum _AUDIT_EVENT_TYPE { 3566 AuditEventObjectAccess,AuditEventDirectoryServiceAccess 3567 } AUDIT_EVENT_TYPE,*PAUDIT_EVENT_TYPE; 3568 3569 #define AUDIT_ALLOW_NO_PRIVILEGE 0x1 3570 3571 #define ACCESS_DS_SOURCE_A "DS" 3572 #define ACCESS_DS_SOURCE_W L"DS" 3573 #define ACCESS_DS_OBJECT_TYPE_NAME_A "Directory Service Object" 3574 #define ACCESS_DS_OBJECT_TYPE_NAME_W L"Directory Service Object" 3575 3576 #define SE_PRIVILEGE_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000001)) 3577 #define SE_PRIVILEGE_ENABLED (__MSABI_LONG(0x00000002)) 3578 #define SE_PRIVILEGE_REMOVED (0X00000004L) 3579 #define SE_PRIVILEGE_USED_FOR_ACCESS (__MSABI_LONG(0x80000000)) 3580 3581 #define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS) 3582 3583 #define PRIVILEGE_SET_ALL_NECESSARY (1) 3584 3585 typedef struct _PRIVILEGE_SET { 3586 DWORD PrivilegeCount; 3587 DWORD Control; 3588 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; 3589 } PRIVILEGE_SET,*PPRIVILEGE_SET; 3590 3591 #define ACCESS_REASON_TYPE_MASK 0x00ff0000 3592 #define ACCESS_REASON_DATA_MASK 0x0000ffff 3593 3594 #define ACCESS_REASON_STAGING_MASK 0x80000000 3595 #define ACCESS_REASON_EXDATA_MASK 0x7f000000 3596 3597 typedef enum _ACCESS_REASON_TYPE { 3598 AccessReasonNone = 0x00000000, 3599 AccessReasonAllowedAce = 0x00010000, 3600 AccessReasonDeniedAce = 0x00020000, 3601 AccessReasonAllowedParentAce = 0x00030000, 3602 AccessReasonDeniedParentAce = 0x00040000, 3603 AccessReasonNotGrantedByCape = 0x00050000, 3604 AccessReasonNotGrantedByParentCape = 0x00060000, 3605 AccessReasonNotGrantedToAppContainer = 0x00070000, 3606 AccessReasonMissingPrivilege = 0x00100000, 3607 AccessReasonFromPrivilege = 0x00200000, 3608 AccessReasonIntegrityLevel = 0x00300000, 3609 AccessReasonOwnership = 0x00400000, 3610 AccessReasonNullDacl = 0x00500000, 3611 AccessReasonEmptyDacl = 0x00600000, 3612 AccessReasonNoSD = 0x00700000, 3613 AccessReasonNoGrant = 0x00800000 3614 } ACCESS_REASON_TYPE; 3615 typedef DWORD ACCESS_REASON; 3616 3617 typedef struct _ACCESS_REASONS { 3618 ACCESS_REASON Data[32]; 3619 } ACCESS_REASONS,*PACCESS_REASONS; 3620 3621 #define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 3622 #define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 3623 #define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 3624 3625 typedef struct _SE_SECURITY_DESCRIPTOR { 3626 DWORD Size; 3627 DWORD Flags; 3628 PSECURITY_DESCRIPTOR SecurityDescriptor; 3629 } SE_SECURITY_DESCRIPTOR,*PSE_SECURITY_DESCRIPTOR; 3630 3631 typedef struct _SE_ACCESS_REQUEST { 3632 DWORD Size; 3633 PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; 3634 ACCESS_MASK DesiredAccess; 3635 ACCESS_MASK PreviouslyGrantedAccess; 3636 PSID PrincipalSelfSid; 3637 PGENERIC_MAPPING GenericMapping; 3638 DWORD ObjectTypeListCount; 3639 POBJECT_TYPE_LIST ObjectTypeList; 3640 } SE_ACCESS_REQUEST,*PSE_ACCESS_REQUEST; 3641 3642 typedef struct _SE_ACCESS_REPLY { 3643 DWORD Size; 3644 DWORD ResultListCount; 3645 PACCESS_MASK GrantedAccess; 3646 PDWORD AccessStatus; 3647 PACCESS_REASONS AccessReason; 3648 PPRIVILEGE_SET *Privileges; 3649 } SE_ACCESS_REPLY,*PSE_ACCESS_REPLY; 3650 3651 #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") 3652 #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") 3653 #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") 3654 #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") 3655 #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") 3656 #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") 3657 #define SE_TCB_NAME TEXT("SeTcbPrivilege") 3658 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") 3659 #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") 3660 #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") 3661 #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") 3662 #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") 3663 #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") 3664 #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") 3665 #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") 3666 #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") 3667 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege") 3668 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege") 3669 #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") 3670 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege") 3671 #define SE_AUDIT_NAME TEXT("SeAuditPrivilege") 3672 #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") 3673 #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") 3674 #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") 3675 #define SE_UNDOCK_NAME TEXT("SeUndockPrivilege") 3676 #define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege") 3677 #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") 3678 #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") 3679 #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") 3680 #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") 3681 #define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege") 3682 #define SE_RELABEL_NAME TEXT("SeRelabelPrivilege") 3683 #define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege") 3684 #define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") 3685 #define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege") 3686 3687 typedef enum _SECURITY_IMPERSONATION_LEVEL { 3688 SecurityAnonymous,SecurityIdentification,SecurityImpersonation,SecurityDelegation 3689 } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; 3690 3691 #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation 3692 #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous 3693 #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation 3694 #define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL)) 3695 3696 #define TOKEN_ASSIGN_PRIMARY (0x0001) 3697 #define TOKEN_DUPLICATE (0x0002) 3698 #define TOKEN_IMPERSONATE (0x0004) 3699 #define TOKEN_QUERY (0x0008) 3700 #define TOKEN_QUERY_SOURCE (0x0010) 3701 #define TOKEN_ADJUST_PRIVILEGES (0x0020) 3702 #define TOKEN_ADJUST_GROUPS (0x0040) 3703 #define TOKEN_ADJUST_DEFAULT (0x0080) 3704 #define TOKEN_ADJUST_SESSIONID (0x0100) 3705 3706 #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) 3707 #define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) 3708 #define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) 3709 3710 #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT) 3711 3712 #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) 3713 3714 typedef enum _TOKEN_TYPE { 3715 TokenPrimary = 1,TokenImpersonation 3716 } TOKEN_TYPE; 3717 typedef TOKEN_TYPE *PTOKEN_TYPE; 3718 3719 typedef enum _TOKEN_ELEVATION_TYPE { 3720 TokenElevationTypeDefault = 1, 3721 TokenElevationTypeFull, 3722 TokenElevationTypeLimited 3723 } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; 3724 3725 typedef enum _TOKEN_INFORMATION_CLASS { 3726 TokenUser = 1, 3727 TokenGroups, 3728 TokenPrivileges, 3729 TokenOwner, 3730 TokenPrimaryGroup, 3731 TokenDefaultDacl, 3732 TokenSource, 3733 TokenType, 3734 TokenImpersonationLevel, 3735 TokenStatistics, 3736 TokenRestrictedSids, 3737 TokenSessionId, 3738 TokenGroupsAndPrivileges, 3739 TokenSessionReference, 3740 TokenSandBoxInert, 3741 TokenAuditPolicy, 3742 TokenOrigin, 3743 TokenElevationType, 3744 TokenLinkedToken, 3745 TokenElevation, 3746 TokenHasRestrictions, 3747 TokenAccessInformation, 3748 TokenVirtualizationAllowed, 3749 TokenVirtualizationEnabled, 3750 TokenIntegrityLevel, 3751 TokenUIAccess, 3752 TokenMandatoryPolicy, 3753 TokenLogonSid, 3754 TokenIsAppContainer, 3755 TokenCapabilities, 3756 TokenAppContainerSid, 3757 TokenAppContainerNumber, 3758 TokenUserClaimAttributes, 3759 TokenDeviceClaimAttributes, 3760 TokenRestrictedUserClaimAttributes, 3761 TokenRestrictedDeviceClaimAttributes, 3762 TokenDeviceGroups, 3763 TokenRestrictedDeviceGroups, 3764 TokenSecurityAttributes, 3765 TokenIsRestricted, 3766 MaxTokenInfoClass 3767 } TOKEN_INFORMATION_CLASS,*PTOKEN_INFORMATION_CLASS; 3768 3769 typedef struct _TOKEN_USER { 3770 SID_AND_ATTRIBUTES User; 3771 } TOKEN_USER,*PTOKEN_USER; 3772 3773 typedef struct _TOKEN_GROUPS { 3774 DWORD GroupCount; 3775 #ifdef __WIDL__ 3776 [size_is (GroupCount)] SID_AND_ATTRIBUTES Groups[*]; 3777 #else 3778 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; 3779 #endif 3780 } TOKEN_GROUPS,*PTOKEN_GROUPS; 3781 3782 typedef struct _TOKEN_PRIVILEGES { 3783 DWORD PrivilegeCount; 3784 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; 3785 } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES; 3786 3787 typedef struct _TOKEN_OWNER { 3788 PSID Owner; 3789 } TOKEN_OWNER,*PTOKEN_OWNER; 3790 3791 typedef struct _TOKEN_PRIMARY_GROUP { 3792 PSID PrimaryGroup; 3793 } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; 3794 3795 typedef struct _TOKEN_DEFAULT_DACL { 3796 PACL DefaultDacl; 3797 } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; 3798 3799 typedef struct _TOKEN_USER_CLAIMS { 3800 PCLAIMS_BLOB UserClaims; 3801 } TOKEN_USER_CLAIMS,*PTOKEN_USER_CLAIMS; 3802 3803 typedef struct _TOKEN_DEVICE_CLAIMS { 3804 PCLAIMS_BLOB DeviceClaims; 3805 } TOKEN_DEVICE_CLAIMS,*PTOKEN_DEVICE_CLAIMS; 3806 3807 typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { 3808 DWORD SidCount; 3809 DWORD SidLength; 3810 PSID_AND_ATTRIBUTES Sids; 3811 DWORD RestrictedSidCount; 3812 DWORD RestrictedSidLength; 3813 PSID_AND_ATTRIBUTES RestrictedSids; 3814 DWORD PrivilegeCount; 3815 DWORD PrivilegeLength; 3816 PLUID_AND_ATTRIBUTES Privileges; 3817 LUID AuthenticationId; 3818 } TOKEN_GROUPS_AND_PRIVILEGES,*PTOKEN_GROUPS_AND_PRIVILEGES; 3819 3820 typedef struct _TOKEN_LINKED_TOKEN { 3821 HANDLE LinkedToken; 3822 } TOKEN_LINKED_TOKEN,*PTOKEN_LINKED_TOKEN; 3823 3824 typedef struct _TOKEN_ELEVATION { 3825 DWORD TokenIsElevated; 3826 } TOKEN_ELEVATION,*PTOKEN_ELEVATION; 3827 3828 typedef struct _TOKEN_MANDATORY_LABEL { 3829 SID_AND_ATTRIBUTES Label; 3830 } TOKEN_MANDATORY_LABEL,*PTOKEN_MANDATORY_LABEL; 3831 3832 #define TOKEN_MANDATORY_POLICY_OFF 0x0 3833 #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 3834 #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 3835 3836 #define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) 3837 3838 typedef struct _TOKEN_MANDATORY_POLICY { 3839 DWORD Policy; 3840 } TOKEN_MANDATORY_POLICY,*PTOKEN_MANDATORY_POLICY; 3841 3842 typedef struct _TOKEN_ACCESS_INFORMATION { 3843 PSID_AND_ATTRIBUTES_HASH SidHash; 3844 PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; 3845 PTOKEN_PRIVILEGES Privileges; 3846 LUID AuthenticationId; 3847 TOKEN_TYPE TokenType; 3848 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 3849 TOKEN_MANDATORY_POLICY MandatoryPolicy; 3850 DWORD Flags; 3851 DWORD AppContainerNumber; 3852 PSID PackageSid; 3853 PSID_AND_ATTRIBUTES_HASH CapabilitiesHash; 3854 } TOKEN_ACCESS_INFORMATION,*PTOKEN_ACCESS_INFORMATION; 3855 3856 #define POLICY_AUDIT_SUBCATEGORY_COUNT (56) 3857 3858 typedef struct _TOKEN_AUDIT_POLICY { 3859 UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; 3860 } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; 3861 3862 #define TOKEN_SOURCE_LENGTH 8 3863 3864 typedef struct _TOKEN_SOURCE { 3865 CHAR SourceName[TOKEN_SOURCE_LENGTH]; 3866 LUID SourceIdentifier; 3867 } TOKEN_SOURCE,*PTOKEN_SOURCE; 3868 3869 typedef struct _TOKEN_STATISTICS { 3870 LUID TokenId; 3871 LUID AuthenticationId; 3872 LARGE_INTEGER ExpirationTime; 3873 TOKEN_TYPE TokenType; 3874 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 3875 DWORD DynamicCharged; 3876 DWORD DynamicAvailable; 3877 DWORD GroupCount; 3878 DWORD PrivilegeCount; 3879 LUID ModifiedId; 3880 } TOKEN_STATISTICS,*PTOKEN_STATISTICS; 3881 3882 typedef struct _TOKEN_CONTROL { 3883 LUID TokenId; 3884 LUID AuthenticationId; 3885 LUID ModifiedId; 3886 TOKEN_SOURCE TokenSource; 3887 } TOKEN_CONTROL,*PTOKEN_CONTROL; 3888 3889 typedef struct _TOKEN_ORIGIN { 3890 LUID OriginatingLogonSession; 3891 } TOKEN_ORIGIN,*PTOKEN_ORIGIN; 3892 3893 typedef enum _MANDATORY_LEVEL { 3894 MandatoryLevelUntrusted = 0, 3895 MandatoryLevelLow, 3896 MandatoryLevelMedium, 3897 MandatoryLevelHigh, 3898 MandatoryLevelSystem, 3899 MandatoryLevelSecureProcess, 3900 MandatoryLevelCount 3901 } MANDATORY_LEVEL,*PMANDATORY_LEVEL; 3902 3903 typedef struct _TOKEN_APPCONTAINER_INFORMATION { 3904 PSID TokenAppContainer; 3905 } TOKEN_APPCONTAINER_INFORMATION,*PTOKEN_APPCONTAINER_INFORMATION; 3906 3907 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID 0x00 3908 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 0x01 3909 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 0x02 3910 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING 0x03 3911 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN 0x04 3912 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID 0x05 3913 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x06 3914 3915 typedef struct _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE { 3916 DWORD64 Version; 3917 PWSTR Name; 3918 } CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE,*PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE; 3919 3920 typedef struct _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE { 3921 PVOID pValue; 3922 DWORD ValueLength; 3923 } CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE, *PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE; 3924 3925 #define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10 3926 #define CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x0001 3927 #define CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x0002 3928 #define CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY 0x0004 3929 #define CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x0008 3930 #define CLAIM_SECURITY_ATTRIBUTE_DISABLED 0x0010 3931 #define CLAIM_SECURITY_ATTRIBUTE_MANDATORY 0x0020 3932 3933 #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) 3934 #define CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS 0xffff0000 3935 3936 typedef struct _CLAIM_SECURITY_ATTRIBUTE_V1 { 3937 PWSTR Name; 3938 WORD ValueType; 3939 WORD Reserved; 3940 DWORD Flags; 3941 DWORD ValueCount; 3942 union { 3943 PLONG64 pInt64; 3944 PDWORD64 pUint64; 3945 PWSTR *ppString; 3946 PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE pFqbn; 3947 PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE pOctetString; 3948 } Values; 3949 } CLAIM_SECURITY_ATTRIBUTE_V1,*PCLAIM_SECURITY_ATTRIBUTE_V1; 3950 3951 typedef struct _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 { 3952 DWORD Name; 3953 WORD ValueType; 3954 WORD Reserved; 3955 DWORD Flags; 3956 DWORD ValueCount; 3957 union { 3958 DWORD pInt64[ANYSIZE_ARRAY]; 3959 DWORD pUint64[ANYSIZE_ARRAY]; 3960 DWORD ppString[ANYSIZE_ARRAY]; 3961 DWORD pFqbn[ANYSIZE_ARRAY]; 3962 DWORD pOctetString[ANYSIZE_ARRAY]; 3963 } Values; 3964 } CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1,*PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1; 3965 3966 #define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 1 3967 3968 #define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 3969 3970 typedef struct _CLAIM_SECURITY_ATTRIBUTES_INFORMATION { 3971 WORD Version; 3972 WORD Reserved; 3973 DWORD AttributeCount; 3974 union { 3975 PCLAIM_SECURITY_ATTRIBUTE_V1 pAttributeV1; 3976 } Attribute; 3977 } CLAIM_SECURITY_ATTRIBUTES_INFORMATION,*PCLAIM_SECURITY_ATTRIBUTES_INFORMATION; 3978 3979 #define SECURITY_DYNAMIC_TRACKING (TRUE) 3980 #define SECURITY_STATIC_TRACKING (FALSE) 3981 3982 typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; 3983 3984 typedef struct _SECURITY_QUALITY_OF_SERVICE { 3985 DWORD Length; 3986 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 3987 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; 3988 BOOLEAN EffectiveOnly; 3989 } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; 3990 3991 typedef struct _SE_IMPERSONATION_STATE { 3992 PACCESS_TOKEN Token; 3993 BOOLEAN CopyOnOpen; 3994 BOOLEAN EffectiveOnly; 3995 SECURITY_IMPERSONATION_LEVEL Level; 3996 } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; 3997 3998 #define DISABLE_MAX_PRIVILEGE 0x1 3999 #define SANDBOX_INERT 0x2 4000 #define LUA_TOKEN 0x4 4001 #define WRITE_RESTRICTED 0x8 4002 4003 typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION; 4004 4005 #define OWNER_SECURITY_INFORMATION (__MSABI_LONG(0x00000001)) 4006 #define GROUP_SECURITY_INFORMATION (__MSABI_LONG(0x00000002)) 4007 #define DACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000004)) 4008 #define SACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000008)) 4009 #define LABEL_SECURITY_INFORMATION (__MSABI_LONG(0x00000010)) 4010 #define ATTRIBUTE_SECURITY_INFORMATION (__MSABI_LONG(0x00000020)) 4011 #define SCOPE_SECURITY_INFORMATION (__MSABI_LONG(0x00000040)) 4012 #define BACKUP_SECURITY_INFORMATION (__MSABI_LONG(0x00010000)) 4013 4014 #define PROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x80000000)) 4015 #define PROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x40000000)) 4016 #define UNPROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x20000000)) 4017 #define UNPROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x10000000)) 4018 4019 typedef enum _SE_LEARNING_MODE_DATA_TYPE { 4020 SeLearningModeInvalidType = 0, 4021 SeLearningModeSettings, 4022 SeLearningModeMax 4023 } SE_LEARNING_MODE_DATA_TYPE; 4024 4025 #define SE_LEARNING_MODE_FLAG_PERMISSIVE 0x00000001 4026 4027 typedef struct _SECURITY_CAPABILITIES { 4028 PSID AppContainerSid; 4029 PSID_AND_ATTRIBUTES Capabilities; 4030 DWORD CapabilityCount; 4031 DWORD Reserved; 4032 } SECURITY_CAPABILITIES,*PSECURITY_CAPABILITIES,*LPSECURITY_CAPABILITIES; 4033 4034 #define PROCESS_TERMINATE (0x0001) 4035 #define PROCESS_CREATE_THREAD (0x0002) 4036 #define PROCESS_SET_SESSIONID (0x0004) 4037 #define PROCESS_VM_OPERATION (0x0008) 4038 #define PROCESS_VM_READ (0x0010) 4039 #define PROCESS_VM_WRITE (0x0020) 4040 #define PROCESS_DUP_HANDLE (0x0040) 4041 #define PROCESS_CREATE_PROCESS (0x0080) 4042 #define PROCESS_SET_QUOTA (0x0100) 4043 #define PROCESS_SET_INFORMATION (0x0200) 4044 #define PROCESS_QUERY_INFORMATION (0x0400) 4045 #define PROCESS_SUSPEND_RESUME (0x0800) 4046 #define PROCESS_QUERY_LIMITED_INFORMATION (0x1000) 4047 4048 #if NTDDI_VERSION >= 0x06000000 4049 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff) 4050 #else 4051 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xfff) 4052 #endif 4053 4054 #ifdef _WIN64 4055 #define MAXIMUM_PROC_PER_GROUP 64 4056 #else 4057 #define MAXIMUM_PROC_PER_GROUP 32 4058 #endif 4059 4060 #define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP 4061 4062 #define THREAD_TERMINATE (0x0001) 4063 #define THREAD_SUSPEND_RESUME (0x0002) 4064 #define THREAD_GET_CONTEXT (0x0008) 4065 #define THREAD_SET_CONTEXT (0x0010) 4066 #define THREAD_SET_INFORMATION (0x0020) 4067 #define THREAD_QUERY_INFORMATION (0x0040) 4068 #define THREAD_SET_THREAD_TOKEN (0x0080) 4069 #define THREAD_IMPERSONATE (0x0100) 4070 #define THREAD_DIRECT_IMPERSONATION (0x0200) 4071 #define THREAD_SET_LIMITED_INFORMATION (0x0400) 4072 #define THREAD_QUERY_LIMITED_INFORMATION (0x0800) 4073 4074 #if NTDDI_VERSION >= 0x06000000 4075 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff) 4076 #else 4077 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3ff) 4078 #endif 4079 4080 #define JOB_OBJECT_ASSIGN_PROCESS (0x0001) 4081 #define JOB_OBJECT_SET_ATTRIBUTES (0x0002) 4082 #define JOB_OBJECT_QUERY (0x0004) 4083 #define JOB_OBJECT_TERMINATE (0x0008) 4084 #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) 4085 #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F) 4086 4087 typedef struct _JOB_SET_ARRAY { 4088 HANDLE JobHandle; 4089 DWORD MemberLevel; 4090 DWORD Flags; 4091 } JOB_SET_ARRAY,*PJOB_SET_ARRAY; 4092 4093 #define FLS_MAXIMUM_AVAILABLE 128 4094 #define TLS_MINIMUM_AVAILABLE 64 4095 4096 #ifndef __MINGW_EXCPT_DEFINE_PSDK 4097 typedef struct _EXCEPTION_REGISTRATION_RECORD { 4098 __C89_NAMELESS union { 4099 struct _EXCEPTION_REGISTRATION_RECORD *Next; 4100 struct _EXCEPTION_REGISTRATION_RECORD *prev; 4101 }; 4102 __C89_NAMELESS union { 4103 PEXCEPTION_ROUTINE Handler; 4104 PEXCEPTION_ROUTINE handler; 4105 }; 4106 } EXCEPTION_REGISTRATION_RECORD; 4107 4108 typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD; 4109 4110 typedef EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION; 4111 typedef PEXCEPTION_REGISTRATION_RECORD PEXCEPTION_REGISTRATION; 4112 #endif 4113 4114 #ifndef _NT_TIB_DEFINED 4115 #define _NT_TIB_DEFINED 4116 __C89_NAMELESS typedef struct _NT_TIB { 4117 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; 4118 PVOID StackBase; 4119 PVOID StackLimit; 4120 PVOID SubSystemTib; 4121 __C89_NAMELESS union { 4122 PVOID FiberData; 4123 DWORD Version; 4124 }; 4125 PVOID ArbitraryUserPointer; 4126 struct _NT_TIB *Self; 4127 } NT_TIB; 4128 typedef NT_TIB *PNT_TIB; 4129 #endif /* _NT_TIB_DEFINED */ 4130 4131 __C89_NAMELESS typedef struct _NT_TIB32 { 4132 DWORD ExceptionList; 4133 DWORD StackBase; 4134 DWORD StackLimit; 4135 DWORD SubSystemTib; 4136 __C89_NAMELESS union { 4137 DWORD FiberData; 4138 DWORD Version; 4139 }; 4140 DWORD ArbitraryUserPointer; 4141 DWORD Self; 4142 } NT_TIB32,*PNT_TIB32; 4143 4144 __C89_NAMELESS typedef struct _NT_TIB64 { 4145 DWORD64 ExceptionList; 4146 DWORD64 StackBase; 4147 DWORD64 StackLimit; 4148 DWORD64 SubSystemTib; 4149 __C89_NAMELESS union { 4150 DWORD64 FiberData; 4151 DWORD Version; 4152 }; 4153 DWORD64 ArbitraryUserPointer; 4154 DWORD64 Self; 4155 } NT_TIB64,*PNT_TIB64; 4156 4157 #if !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) 4158 #define WX86 4159 #endif 4160 4161 #define THREAD_BASE_PRIORITY_LOWRT 15 4162 #define THREAD_BASE_PRIORITY_MAX 2 4163 #define THREAD_BASE_PRIORITY_MIN (-2) 4164 #define THREAD_BASE_PRIORITY_IDLE (-15) 4165 4166 typedef struct _UMS_CREATE_THREAD_ATTRIBUTES { 4167 DWORD UmsVersion; 4168 PVOID UmsContext; 4169 PVOID UmsCompletionList; 4170 } UMS_CREATE_THREAD_ATTRIBUTES,*PUMS_CREATE_THREAD_ATTRIBUTES; 4171 4172 typedef struct _QUOTA_LIMITS { 4173 SIZE_T PagedPoolLimit; 4174 SIZE_T NonPagedPoolLimit; 4175 SIZE_T MinimumWorkingSetSize; 4176 SIZE_T MaximumWorkingSetSize; 4177 SIZE_T PagefileLimit; 4178 LARGE_INTEGER TimeLimit; 4179 } QUOTA_LIMITS,*PQUOTA_LIMITS; 4180 4181 #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 4182 #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 4183 #define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 4184 #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 4185 #define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 4186 4187 typedef union _RATE_QUOTA_LIMIT { 4188 DWORD RateData; 4189 __C89_NAMELESS struct { 4190 DWORD RatePercent : 7; 4191 DWORD Reserved0 : 25; 4192 } DUMMYSTRUCTNAME; 4193 } RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT; 4194 4195 typedef struct _QUOTA_LIMITS_EX { 4196 SIZE_T PagedPoolLimit; 4197 SIZE_T NonPagedPoolLimit; 4198 SIZE_T MinimumWorkingSetSize; 4199 SIZE_T MaximumWorkingSetSize; 4200 SIZE_T PagefileLimit; 4201 LARGE_INTEGER TimeLimit; 4202 SIZE_T WorkingSetLimit; 4203 SIZE_T Reserved2; 4204 SIZE_T Reserved3; 4205 SIZE_T Reserved4; 4206 DWORD Flags; 4207 RATE_QUOTA_LIMIT CpuRateLimit; 4208 } QUOTA_LIMITS_EX,*PQUOTA_LIMITS_EX; 4209 4210 typedef struct _IO_COUNTERS { 4211 ULONGLONG ReadOperationCount; 4212 ULONGLONG WriteOperationCount; 4213 ULONGLONG OtherOperationCount; 4214 ULONGLONG ReadTransferCount; 4215 ULONGLONG WriteTransferCount; 4216 ULONGLONG OtherTransferCount; 4217 } IO_COUNTERS; 4218 typedef IO_COUNTERS *PIO_COUNTERS; 4219 4220 #define MAX_HW_COUNTERS 16 4221 #define THREAD_PROFILING_FLAG_DISPATCH 0x1 4222 4223 typedef enum _HARDWARE_COUNTER_TYPE { 4224 PMCCounter, 4225 MaxHardwareCounterType 4226 } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE; 4227 4228 typedef enum _PROCESS_MITIGATION_POLICY { 4229 ProcessDEPPolicy, 4230 ProcessASLRPolicy, 4231 ProcessDynamicCodePolicy, 4232 ProcessStrictHandleCheckPolicy, 4233 ProcessSystemCallDisablePolicy, 4234 ProcessMitigationOptionsMask, 4235 ProcessExtensionPointDisablePolicy, 4236 ProcessControlFlowGuardPolicy, 4237 ProcessSignaturePolicy, 4238 ProcessFontDisablePolicy, 4239 ProcessImageLoadPolicy, 4240 MaxProcessMitigationPolicy 4241 } PROCESS_MITIGATION_POLICY,*PPROCESS_MITIGATION_POLICY; 4242 4243 typedef struct _PROCESS_MITIGATION_ASLR_POLICY { 4244 __C89_NAMELESS union { 4245 DWORD Flags; 4246 __C89_NAMELESS struct { 4247 DWORD EnableBottomUpRandomization : 1; 4248 DWORD EnableForceRelocateImages : 1; 4249 DWORD EnableHighEntropy : 1; 4250 DWORD DisallowStrippedImages : 1; 4251 DWORD ReservedFlags : 28; 4252 }; 4253 }; 4254 } PROCESS_MITIGATION_ASLR_POLICY,*PPROCESS_MITIGATION_ASLR_POLICY; 4255 4256 typedef struct _PROCESS_MITIGATION_DEP_POLICY { 4257 __C89_NAMELESS union { 4258 DWORD Flags; 4259 __C89_NAMELESS struct { 4260 DWORD Enable : 1; 4261 DWORD DisableAtlThunkEmulation : 1; 4262 DWORD ReservedFlags : 30; 4263 }; 4264 }; 4265 BOOLEAN Permanent; 4266 } PROCESS_MITIGATION_DEP_POLICY,*PPROCESS_MITIGATION_DEP_POLICY; 4267 4268 typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY { 4269 __C89_NAMELESS union { 4270 DWORD Flags; 4271 __C89_NAMELESS struct { 4272 DWORD RaiseExceptionOnInvalidHandleReference : 1; 4273 DWORD HandleExceptionsPermanentlyEnabled : 1; 4274 DWORD ReservedFlags : 30; 4275 }; 4276 }; 4277 } PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY,*PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY; 4278 4279 typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY { 4280 __C89_NAMELESS union { 4281 DWORD Flags; 4282 __C89_NAMELESS struct { 4283 DWORD DisallowWin32kSystemCalls : 1; 4284 DWORD ReservedFlags : 31; 4285 }; 4286 }; 4287 } PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY,*PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY; 4288 4289 typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY { 4290 __C89_NAMELESS union { 4291 DWORD Flags; 4292 __C89_NAMELESS struct { 4293 DWORD DisableExtensionPoints : 1; 4294 DWORD ReservedFlags : 31; 4295 }; 4296 }; 4297 } PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY,*PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY; 4298 4299 typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY { 4300 __C89_NAMELESS union { 4301 DWORD Flags; 4302 __C89_NAMELESS struct { 4303 DWORD EnableControlFlowGuard :1; 4304 DWORD EnableExportSuppression :1; 4305 DWORD StrictMode :1; 4306 DWORD ReservedFlags :29; 4307 }; 4308 }; 4309 } PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY, *PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY; 4310 4311 typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY { 4312 __C89_NAMELESS union { 4313 DWORD Flags; 4314 __C89_NAMELESS struct { 4315 DWORD MicrosoftSignedOnly :1; 4316 DWORD StoreSignedOnly :1; 4317 DWORD MitigationOptIn :1; 4318 DWORD ReservedFlags :29; 4319 }; 4320 }; 4321 } PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY; 4322 4323 typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY { 4324 __C89_NAMELESS union { 4325 DWORD Flags; 4326 __C89_NAMELESS struct { 4327 DWORD ProhibitDynamicCode :1; 4328 DWORD AllowThreadOptOut :1; 4329 DWORD AllowRemoteDowngrade :1; 4330 DWORD ReservedFlags :30; 4331 }; 4332 }; 4333 } PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY; 4334 4335 typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY { 4336 __C89_NAMELESS union { 4337 DWORD Flags; 4338 __C89_NAMELESS struct { 4339 DWORD DisableNonSystemFonts :1; 4340 DWORD AuditNonSystemFontLoading :1; 4341 DWORD ReservedFlags :30; 4342 }; 4343 }; 4344 } PROCESS_MITIGATION_FONT_DISABLE_POLICY, *PPROCESS_MITIGATION_FONT_DISABLE_POLICY; 4345 4346 typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY { 4347 __C89_NAMELESS union { 4348 DWORD Flags; 4349 __C89_NAMELESS struct { 4350 DWORD NoRemoteImages :1; 4351 DWORD NoLowMandatoryLabelImages :1; 4352 DWORD PreferSystem32Images :1; 4353 DWORD ReservedFlags :29; 4354 }; 4355 }; 4356 } PROCESS_MITIGATION_IMAGE_LOAD_POLICY, *PPROCESS_MITIGATION_IMAGE_LOAD_POLICY; 4357 4358 typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { 4359 LARGE_INTEGER TotalUserTime; 4360 LARGE_INTEGER TotalKernelTime; 4361 LARGE_INTEGER ThisPeriodTotalUserTime; 4362 LARGE_INTEGER ThisPeriodTotalKernelTime; 4363 DWORD TotalPageFaultCount; 4364 DWORD TotalProcesses; 4365 DWORD ActiveProcesses; 4366 DWORD TotalTerminatedProcesses; 4367 } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; 4368 4369 typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION { 4370 LARGE_INTEGER PerProcessUserTimeLimit; 4371 LARGE_INTEGER PerJobUserTimeLimit; 4372 DWORD LimitFlags; 4373 SIZE_T MinimumWorkingSetSize; 4374 SIZE_T MaximumWorkingSetSize; 4375 DWORD ActiveProcessLimit; 4376 ULONG_PTR Affinity; 4377 DWORD PriorityClass; 4378 DWORD SchedulingClass; 4379 } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION; 4380 4381 typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION { 4382 JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; 4383 IO_COUNTERS IoInfo; 4384 SIZE_T ProcessMemoryLimit; 4385 SIZE_T JobMemoryLimit; 4386 SIZE_T PeakProcessMemoryUsed; 4387 SIZE_T PeakJobMemoryUsed; 4388 } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; 4389 4390 typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { 4391 DWORD NumberOfAssignedProcesses; 4392 DWORD NumberOfProcessIdsInList; 4393 ULONG_PTR ProcessIdList[1]; 4394 } JOBOBJECT_BASIC_PROCESS_ID_LIST,*PJOBOBJECT_BASIC_PROCESS_ID_LIST; 4395 4396 typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { 4397 DWORD UIRestrictionsClass; 4398 } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS; 4399 4400 typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { 4401 DWORD SecurityLimitFlags; 4402 HANDLE JobToken; 4403 PTOKEN_GROUPS SidsToDisable; 4404 PTOKEN_PRIVILEGES PrivilegesToDelete; 4405 PTOKEN_GROUPS RestrictedSids; 4406 } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION; 4407 4408 typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { 4409 DWORD EndOfJobTimeAction; 4410 } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; 4411 4412 typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { 4413 PVOID CompletionKey; 4414 HANDLE CompletionPort; 4415 } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; 4416 4417 typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { 4418 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; 4419 IO_COUNTERS IoInfo; 4420 } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; 4421 4422 typedef struct _JOBOBJECT_JOBSET_INFORMATION { 4423 DWORD MemberLevel; 4424 } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION; 4425 4426 typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE { 4427 ToleranceLow = 1, 4428 ToleranceMedium, 4429 ToleranceHigh 4430 } JOBOBJECT_RATE_CONTROL_TOLERANCE; 4431 4432 typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL { 4433 ToleranceIntervalShort = 1, 4434 ToleranceIntervalMedium, 4435 ToleranceIntervalLong 4436 } JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL; 4437 4438 typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION { 4439 DWORD64 IoReadBytesLimit; 4440 DWORD64 IoWriteBytesLimit; 4441 LARGE_INTEGER PerJobUserTimeLimit; 4442 DWORD64 JobMemoryLimit; 4443 JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; 4444 JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; 4445 DWORD LimitFlags; 4446 } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION,*PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION; 4447 4448 typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION { 4449 DWORD LimitFlags; 4450 DWORD ViolationLimitFlags; 4451 DWORD64 IoReadBytes; 4452 DWORD64 IoReadBytesLimit; 4453 DWORD64 IoWriteBytes; 4454 DWORD64 IoWriteBytesLimit; 4455 LARGE_INTEGER PerJobUserTime; 4456 LARGE_INTEGER PerJobUserTimeLimit; 4457 DWORD64 JobMemory; 4458 DWORD64 JobMemoryLimit; 4459 JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; 4460 JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceLimit; 4461 } JOBOBJECT_LIMIT_VIOLATION_INFORMATION,*PJOBOBJECT_LIMIT_VIOLATION_INFORMATION; 4462 4463 typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { 4464 DWORD ControlFlags; 4465 __C89_NAMELESS union { 4466 DWORD CpuRate; 4467 DWORD Weight; 4468 }; 4469 } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION,*PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION; 4470 4471 #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 4472 #define JOB_OBJECT_POST_AT_END_OF_JOB 1 4473 4474 #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 4475 #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 4476 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 4477 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 4478 #define JOB_OBJECT_MSG_NEW_PROCESS 6 4479 #define JOB_OBJECT_MSG_EXIT_PROCESS 7 4480 #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 4481 #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 4482 #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 4483 #define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 11 4484 #define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 12 4485 4486 #define JOB_OBJECT_MSG_MINIMUM 1 4487 #define JOB_OBJECT_MSG_MAXIMUM 12 4488 4489 #define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001 4490 #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002 4491 #define JOB_OBJECT_LIMIT_JOB_TIME 0x00000004 4492 #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x00000008 4493 #define JOB_OBJECT_LIMIT_AFFINITY 0x00000010 4494 #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020 4495 #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040 4496 #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080 4497 4498 #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100 4499 #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200 4500 #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400 4501 #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800 4502 #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000 4503 #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000 4504 4505 #define JOB_OBJECT_LIMIT_SUBSET_AFFINITY 0x00004000 4506 #define JOB_OBJECT_LIMIT_RESERVED3 0x00008000 4507 #define JOB_OBJECT_LIMIT_JOB_READ_BYTES 0x00010000 4508 #define JOB_OBJECT_LIMIT_JOB_WRITE_BYTES 0x00020000 4509 #define JOB_OBJECT_LIMIT_RATE_CONTROL 0x00040000 4510 4511 #define JOB_OBJECT_LIMIT_RESERVED3 0x00008000 4512 #define JOB_OBJECT_LIMIT_RESERVED4 0x00010000 4513 #define JOB_OBJECT_LIMIT_RESERVED5 0x00020000 4514 #define JOB_OBJECT_LIMIT_RESERVED6 0x00040000 4515 4516 #define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff 4517 4518 #define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff 4519 #define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00007fff 4520 #define JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS 0x0007ffff 4521 #define JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS 0x00070204 4522 4523 #define JOB_OBJECT_UILIMIT_NONE 0x00000000 4524 4525 #define JOB_OBJECT_UILIMIT_HANDLES 0x00000001 4526 #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002 4527 #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004 4528 #define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x00000008 4529 #define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x00000010 4530 #define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x00000020 4531 #define JOB_OBJECT_UILIMIT_DESKTOP 0x00000040 4532 #define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x00000080 4533 4534 #define JOB_OBJECT_UILIMIT_ALL 0x000000FF 4535 4536 #define JOB_OBJECT_UI_VALID_FLAGS 0x000000FF 4537 4538 #define JOB_OBJECT_SECURITY_NO_ADMIN 0x00000001 4539 #define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x00000002 4540 #define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x00000004 4541 #define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x00000008 4542 4543 #define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f 4544 4545 #define JOB_OBJECT_CPU_RATE_CONTROL_ENABLE 0x1 4546 #define JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 0x2 4547 #define JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 0x4 4548 #define JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY 0x8 4549 #define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0xf 4550 4551 typedef enum _JOBOBJECTINFOCLASS { 4552 JobObjectBasicAccountingInformation = 1, JobObjectBasicLimitInformation, 4553 JobObjectBasicProcessIdList, JobObjectBasicUIRestrictions, 4554 JobObjectSecurityLimitInformation, JobObjectEndOfJobTimeInformation, 4555 JobObjectAssociateCompletionPortInformation, JobObjectBasicAndIoAccountingInformation, 4556 JobObjectExtendedLimitInformation, JobObjectJobSetInformation, 4557 JobObjectGroupInformation, 4558 JobObjectNotificationLimitInformation, 4559 JobObjectLimitViolationInformation, 4560 JobObjectGroupInformationEx, 4561 JobObjectCpuRateControlInformation, 4562 JobObjectCompletionFilter, 4563 JobObjectCompletionCounter, 4564 JobObjectReserved1Information = 18, 4565 JobObjectReserved2Information, 4566 JobObjectReserved3Information, 4567 JobObjectReserved4Information, 4568 JobObjectReserved5Information, 4569 JobObjectReserved6Information, 4570 JobObjectReserved7Information, 4571 JobObjectReserved8Information, 4572 MaxJobObjectInfoClass 4573 } JOBOBJECTINFOCLASS; 4574 4575 typedef enum _FIRMWARE_TYPE { 4576 FirmwareTypeUnknown, 4577 FirmwareTypeBios, 4578 FirmwareTypeUefi, 4579 FirmwareTypeMax 4580 } FIRMWARE_TYPE,*PFIRMWARE_TYPE; 4581 4582 #define EVENT_MODIFY_STATE 0x0002 4583 #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 4584 4585 #define MUTANT_QUERY_STATE 0x0001 4586 4587 #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE) 4588 #define SEMAPHORE_MODIFY_STATE 0x0002 4589 #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 4590 4591 #define TIMER_QUERY_STATE 0x0001 4592 #define TIMER_MODIFY_STATE 0x0002 4593 4594 #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE) 4595 4596 #define TIME_ZONE_ID_UNKNOWN 0 4597 #define TIME_ZONE_ID_STANDARD 1 4598 #define TIME_ZONE_ID_DAYLIGHT 2 4599 4600 typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { 4601 RelationProcessorCore,RelationNumaNode,RelationCache, 4602 RelationProcessorPackage,RelationGroup,RelationAll=0xffff 4603 } LOGICAL_PROCESSOR_RELATIONSHIP; 4604 4605 #define LTP_PC_SMT 0x1 4606 4607 typedef enum _PROCESSOR_CACHE_TYPE { 4608 CacheUnified,CacheInstruction,CacheData,CacheTrace 4609 } PROCESSOR_CACHE_TYPE; 4610 4611 #define CACHE_FULLY_ASSOCIATIVE 0xFF 4612 4613 typedef struct _CACHE_DESCRIPTOR { 4614 BYTE Level; 4615 BYTE Associativity; 4616 WORD LineSize; 4617 DWORD Size; 4618 PROCESSOR_CACHE_TYPE Type; 4619 } CACHE_DESCRIPTOR,*PCACHE_DESCRIPTOR; 4620 4621 typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { 4622 ULONG_PTR ProcessorMask; 4623 LOGICAL_PROCESSOR_RELATIONSHIP Relationship; 4624 __C89_NAMELESS union { 4625 struct { 4626 BYTE Flags; 4627 } ProcessorCore; 4628 struct { 4629 DWORD NodeNumber; 4630 } NumaNode; 4631 CACHE_DESCRIPTOR Cache; 4632 ULONGLONG Reserved[2]; 4633 } DUMMYUNIONNAME; 4634 } SYSTEM_LOGICAL_PROCESSOR_INFORMATION,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; 4635 4636 typedef struct _PROCESSOR_RELATIONSHIP { 4637 BYTE Flags; 4638 BYTE Reserved[21]; 4639 WORD GroupCount; 4640 GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY]; 4641 } PROCESSOR_RELATIONSHIP,*PPROCESSOR_RELATIONSHIP; 4642 4643 typedef struct _NUMA_NODE_RELATIONSHIP { 4644 DWORD NodeNumber; 4645 BYTE Reserved[20]; 4646 GROUP_AFFINITY GroupMask; 4647 } NUMA_NODE_RELATIONSHIP,*PNUMA_NODE_RELATIONSHIP; 4648 4649 typedef struct _CACHE_RELATIONSHIP { 4650 BYTE Level; 4651 BYTE Associativity; 4652 WORD LineSize; 4653 DWORD CacheSize; 4654 PROCESSOR_CACHE_TYPE Type; 4655 BYTE Reserved[20]; 4656 GROUP_AFFINITY GroupMask; 4657 } CACHE_RELATIONSHIP,*PCACHE_RELATIONSHIP; 4658 4659 typedef struct _PROCESSOR_GROUP_INFO { 4660 BYTE MaximumProcessorCount; 4661 BYTE ActiveProcessorCount; 4662 BYTE Reserved[38]; 4663 KAFFINITY ActiveProcessorMask; 4664 } PROCESSOR_GROUP_INFO,*PPROCESSOR_GROUP_INFO; 4665 4666 typedef struct _GROUP_RELATIONSHIP { 4667 WORD MaximumGroupCount; 4668 WORD ActiveGroupCount; 4669 BYTE Reserved[20]; 4670 PROCESSOR_GROUP_INFO GroupInfo[ANYSIZE_ARRAY]; 4671 } GROUP_RELATIONSHIP,*PGROUP_RELATIONSHIP; 4672 4673 struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { 4674 LOGICAL_PROCESSOR_RELATIONSHIP Relationship; 4675 DWORD Size; 4676 __C89_NAMELESS union { 4677 PROCESSOR_RELATIONSHIP Processor; 4678 NUMA_NODE_RELATIONSHIP NumaNode; 4679 CACHE_RELATIONSHIP Cache; 4680 GROUP_RELATIONSHIP Group; 4681 } DUMMYUNIONNAME; 4682 }; 4683 4684 typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; 4685 4686 typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION { 4687 DWORD64 CycleTime; 4688 } SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,*PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION; 4689 4690 #define PROCESSOR_INTEL_386 386 4691 #define PROCESSOR_INTEL_486 486 4692 #define PROCESSOR_INTEL_PENTIUM 586 4693 #define PROCESSOR_INTEL_IA64 2200 4694 #define PROCESSOR_AMD_X8664 8664 4695 #define PROCESSOR_MIPS_R4000 4000 4696 #define PROCESSOR_ALPHA_21064 21064 4697 #define PROCESSOR_PPC_601 601 4698 #define PROCESSOR_PPC_603 603 4699 #define PROCESSOR_PPC_604 604 4700 #define PROCESSOR_PPC_620 620 4701 #define PROCESSOR_HITACHI_SH3 10003 4702 #define PROCESSOR_HITACHI_SH3E 10004 4703 #define PROCESSOR_HITACHI_SH4 10005 4704 #define PROCESSOR_MOTOROLA_821 821 4705 #define PROCESSOR_SHx_SH3 103 4706 #define PROCESSOR_SHx_SH4 104 4707 #define PROCESSOR_STRONGARM 2577 4708 #define PROCESSOR_ARM720 1824 4709 #define PROCESSOR_ARM820 2080 4710 #define PROCESSOR_ARM920 2336 4711 #define PROCESSOR_ARM_7TDMI 70001 4712 #define PROCESSOR_OPTIL 0x494f 4713 4714 #define PROCESSOR_ARCHITECTURE_INTEL 0 4715 #define PROCESSOR_ARCHITECTURE_MIPS 1 4716 #define PROCESSOR_ARCHITECTURE_ALPHA 2 4717 #define PROCESSOR_ARCHITECTURE_PPC 3 4718 #define PROCESSOR_ARCHITECTURE_SHX 4 4719 #define PROCESSOR_ARCHITECTURE_ARM 5 4720 #define PROCESSOR_ARCHITECTURE_IA64 6 4721 #define PROCESSOR_ARCHITECTURE_ALPHA64 7 4722 #define PROCESSOR_ARCHITECTURE_MSIL 8 4723 #define PROCESSOR_ARCHITECTURE_AMD64 9 4724 #define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 4725 #define PROCESSOR_ARCHITECTURE_NEUTRAL 11 4726 4727 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff 4728 4729 #define PF_FLOATING_POINT_PRECISION_ERRATA 0 4730 #define PF_FLOATING_POINT_EMULATED 1 4731 #define PF_COMPARE_EXCHANGE_DOUBLE 2 4732 #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 4733 #define PF_PPC_MOVEMEM_64BIT_OK 4 4734 #define PF_ALPHA_BYTE_INSTRUCTIONS 5 4735 #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 4736 #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 4737 #define PF_RDTSC_INSTRUCTION_AVAILABLE 8 4738 #define PF_PAE_ENABLED 9 4739 #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 4740 #define PF_SSE_DAZ_MODE_AVAILABLE 11 4741 #define PF_NX_ENABLED 12 4742 #define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 4743 #define PF_COMPARE_EXCHANGE128 14 4744 #define PF_COMPARE64_EXCHANGE128 15 4745 #define PF_CHANNELS_ENABLED 16 4746 #define PF_XSAVE_ENABLED 17 4747 #define PF_ARM_VFP_32_REGISTERS_AVAILABLE 18 4748 #define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 19 4749 #define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 20 4750 #define PF_VIRT_FIRMWARE_ENABLED 21 4751 #define PF_RDWRFSGSBASE_AVAILABLE 22 4752 #define PF_FASTFAIL_AVAILABLE 23 4753 #define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 24 4754 #define PF_ARM_64BIT_LOADSTORE_ATOMIC 25 4755 #define PF_ARM_EXTERNAL_CACHE_AVAILABLE 26 4756 #define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 27 4757 4758 #define XSTATE_LEGACY_FLOATING_POINT (0) 4759 #define XSTATE_LEGACY_SSE (1) 4760 #define XSTATE_GSSE (2) 4761 #define XSTATE_AVX (XSTATE_GSSE) 4762 4763 #define XSTATE_MASK_LEGACY_FLOATING_POINT (1ULL << (XSTATE_LEGACY_FLOATING_POINT)) 4764 #define XSTATE_MASK_LEGACY_SSE (1ULL << (XSTATE_LEGACY_SSE)) 4765 #define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE) 4766 #define XSTATE_MASK_GSSE (1LLU << (XSTATE_GSSE)) 4767 #define XSTATE_MASK_AVX (XSTATE_MASK_GSSE) 4768 4769 #define MAXIMUM_XSTATE_FEATURES (64) 4770 4771 typedef struct _XSTATE_FEATURE { 4772 DWORD Offset; 4773 DWORD Size; 4774 } XSTATE_FEATURE,*PXSTATE_FEATURE; 4775 4776 typedef struct _XSTATE_CONFIGURATION { 4777 DWORD64 EnabledFeatures; 4778 DWORD64 EnabledVolatileFeatures; 4779 DWORD Size; 4780 DWORD OptimizedSave : 1; 4781 XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; 4782 } XSTATE_CONFIGURATION,*PXSTATE_CONFIGURATION; 4783 4784 typedef struct _MEMORY_BASIC_INFORMATION { 4785 PVOID BaseAddress; 4786 PVOID AllocationBase; 4787 DWORD AllocationProtect; 4788 SIZE_T RegionSize; 4789 DWORD State; 4790 DWORD Protect; 4791 DWORD Type; 4792 } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION; 4793 4794 typedef struct _MEMORY_BASIC_INFORMATION32 { 4795 DWORD BaseAddress; 4796 DWORD AllocationBase; 4797 DWORD AllocationProtect; 4798 DWORD RegionSize; 4799 DWORD State; 4800 DWORD Protect; 4801 DWORD Type; 4802 } MEMORY_BASIC_INFORMATION32,*PMEMORY_BASIC_INFORMATION32; 4803 4804 typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 { 4805 ULONGLONG BaseAddress; 4806 ULONGLONG AllocationBase; 4807 DWORD AllocationProtect; 4808 DWORD __alignment1; 4809 ULONGLONG RegionSize; 4810 DWORD State; 4811 DWORD Protect; 4812 DWORD Type; 4813 DWORD __alignment2; 4814 } MEMORY_BASIC_INFORMATION64,*PMEMORY_BASIC_INFORMATION64; 4815 4816 #define SECTION_QUERY 0x0001 4817 #define SECTION_MAP_WRITE 0x0002 4818 #define SECTION_MAP_READ 0x0004 4819 #define SECTION_MAP_EXECUTE 0x0008 4820 #define SECTION_EXTEND_SIZE 0x0010 4821 #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 4822 4823 #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE) 4824 4825 #define SESSION_QUERY_ACCESS 0x1 4826 #define SESSION_MODIFY_ACCESS 0x2 4827 4828 #define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SESSION_QUERY_ACCESS | SESSION_MODIFY_ACCESS) 4829 4830 #define PAGE_NOACCESS 0x01 4831 #define PAGE_READONLY 0x02 4832 #define PAGE_READWRITE 0x04 4833 #define PAGE_WRITECOPY 0x08 4834 #define PAGE_EXECUTE 0x10 4835 #define PAGE_EXECUTE_READ 0x20 4836 #define PAGE_EXECUTE_READWRITE 0x40 4837 #define PAGE_EXECUTE_WRITECOPY 0x80 4838 #define PAGE_GUARD 0x100 4839 #define PAGE_NOCACHE 0x200 4840 #define PAGE_WRITECOMBINE 0x400 4841 #define MEM_COMMIT 0x1000 4842 #define MEM_RESERVE 0x2000 4843 #define MEM_DECOMMIT 0x4000 4844 #define MEM_RELEASE 0x8000 4845 #define MEM_FREE 0x10000 4846 #define MEM_PRIVATE 0x20000 4847 #define MEM_MAPPED 0x40000 4848 #define MEM_RESET 0x80000 4849 #define MEM_TOP_DOWN 0x100000 4850 #define MEM_WRITE_WATCH 0x200000 4851 #define MEM_PHYSICAL 0x400000 4852 #define MEM_ROTATE 0x800000 4853 #define MEM_LARGE_PAGES 0x20000000 4854 #define MEM_4MB_PAGES 0x80000000 4855 #define SEC_FILE 0x800000 4856 #define SEC_IMAGE 0x1000000 4857 #define SEC_PROTECTED_IMAGE 0x2000000 4858 #define SEC_RESERVE 0x4000000 4859 #define SEC_COMMIT 0x8000000 4860 #define SEC_NOCACHE 0x10000000 4861 #define SEC_WRITECOMBINE 0x40000000 4862 #define SEC_LARGE_PAGES 0x80000000 4863 4864 #define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE) 4865 #define MEM_IMAGE SEC_IMAGE 4866 #define WRITE_WATCH_FLAG_RESET 0x01 4867 #define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x01 4868 4869 #define FILE_READ_DATA (0x0001) 4870 #define FILE_LIST_DIRECTORY (0x0001) 4871 4872 #define FILE_WRITE_DATA (0x0002) 4873 #define FILE_ADD_FILE (0x0002) 4874 4875 #define FILE_APPEND_DATA (0x0004) 4876 #define FILE_ADD_SUBDIRECTORY (0x0004) 4877 #define FILE_CREATE_PIPE_INSTANCE (0x0004) 4878 4879 #define FILE_READ_EA (0x0008) 4880 #define FILE_WRITE_EA (0x0010) 4881 #define FILE_EXECUTE (0x0020) 4882 #define FILE_TRAVERSE (0x0020) 4883 #define FILE_DELETE_CHILD (0x0040) 4884 #define FILE_READ_ATTRIBUTES (0x0080) 4885 #define FILE_WRITE_ATTRIBUTES (0x0100) 4886 4887 #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF) 4888 #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE) 4889 #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE) 4890 #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE) 4891 4892 #define FILE_SUPERSEDE 0x00000000 4893 #define FILE_OPEN 0x00000001 4894 #define FILE_CREATE 0x00000002 4895 #define FILE_OPEN_IF 0x00000003 4896 #define FILE_OVERWRITE 0x00000004 4897 #define FILE_OVERWRITE_IF 0x00000005 4898 #define FILE_MAXIMUM_DISPOSITION 0x00000005 4899 4900 #define FILE_DIRECTORY_FILE 0x00000001 4901 #define FILE_WRITE_THROUGH 0x00000002 4902 #define FILE_SEQUENTIAL_ONLY 0x00000004 4903 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 4904 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 4905 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 4906 #define FILE_NON_DIRECTORY_FILE 0x00000040 4907 #define FILE_CREATE_TREE_CONNECTION 0x00000080 4908 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100 4909 #define FILE_NO_EA_KNOWLEDGE 0x00000200 4910 #define FILE_OPEN_REMOTE_INSTANCE 0x00000400 4911 #define FILE_RANDOM_ACCESS 0x00000800 4912 #define FILE_DELETE_ON_CLOSE 0x00001000 4913 #define FILE_OPEN_BY_FILE_ID 0x00002000 4914 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 4915 #define FILE_NO_COMPRESSION 0x00008000 4916 #if (NTDDI_VERSION >= NTDDI_WIN7) 4917 #define FILE_OPEN_REQUIRING_OPLOCK 0x00010000 4918 #define FILE_DISALLOW_EXCLUSIVE 0x00020000 4919 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ 4920 #define FILE_RESERVE_OPFILTER 0x00100000 4921 #define FILE_OPEN_REPARSE_POINT 0x00200000 4922 #define FILE_OPEN_NO_RECALL 0x00400000 4923 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 4924 4925 #define FILE_SHARE_READ 0x00000001 4926 #define FILE_SHARE_WRITE 0x00000002 4927 #define FILE_SHARE_DELETE 0x00000004 4928 #define FILE_SHARE_VALID_FLAGS 0x00000007 4929 #define FILE_ATTRIBUTE_READONLY 0x00000001 4930 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 4931 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 4932 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 4933 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 4934 #define FILE_ATTRIBUTE_DEVICE 0x00000040 4935 #define FILE_ATTRIBUTE_NORMAL 0x00000080 4936 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 4937 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 4938 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 4939 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800 4940 #define FILE_ATTRIBUTE_OFFLINE 0x00001000 4941 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 4942 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 4943 #define FILE_ATTRIBUTE_VIRTUAL 0x00010000 4944 #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 4945 #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 4946 #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 4947 #define FILE_NOTIFY_CHANGE_SIZE 0x00000008 4948 #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 4949 #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 4950 #define FILE_NOTIFY_CHANGE_CREATION 0x00000040 4951 #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 4952 #define FILE_ACTION_ADDED 0x00000001 4953 #define FILE_ACTION_REMOVED 0x00000002 4954 #define FILE_ACTION_MODIFIED 0x00000003 4955 #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 4956 #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 4957 #define MAILSLOT_NO_MESSAGE ((DWORD)-1) 4958 #define MAILSLOT_WAIT_FOREVER ((DWORD)-1) 4959 #define FILE_CASE_SENSITIVE_SEARCH 0x00000001 4960 #define FILE_CASE_PRESERVED_NAMES 0x00000002 4961 #define FILE_UNICODE_ON_DISK 0x00000004 4962 #define FILE_PERSISTENT_ACLS 0x00000008 4963 #define FILE_FILE_COMPRESSION 0x00000010 4964 #define FILE_VOLUME_QUOTAS 0x00000020 4965 #define FILE_SUPPORTS_SPARSE_FILES 0x00000040 4966 #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 4967 #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 4968 #define FILE_VOLUME_IS_COMPRESSED 0x00008000 4969 #define FILE_SUPPORTS_OBJECT_IDS 0x00010000 4970 #define FILE_SUPPORTS_ENCRYPTION 0x00020000 4971 #define FILE_NAMED_STREAMS 0x00040000 4972 #define FILE_READ_ONLY_VOLUME 0x00080000 4973 #define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 4974 #define FILE_SUPPORTS_TRANSACTIONS 0x00200000 4975 #define FILE_SUPPORTS_HARD_LINKS 0x00400000 4976 #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 4977 #define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 4978 #define FILE_SUPPORTS_USN_JOURNAL 0x02000000 4979 #define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 4980 4981 typedef struct FILE_ID_128 { 4982 BYTE Identifier[16]; 4983 } FILE_ID_128, *PFILE_ID_128; 4984 4985 typedef struct _FILE_NOTIFY_INFORMATION { 4986 DWORD NextEntryOffset; 4987 DWORD Action; 4988 DWORD FileNameLength; 4989 WCHAR FileName[1]; 4990 } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION; 4991 4992 typedef union _FILE_SEGMENT_ELEMENT { 4993 PVOID64 Buffer; 4994 ULONGLONG Alignment; 4995 } FILE_SEGMENT_ELEMENT,*PFILE_SEGMENT_ELEMENT; 4996 4997 typedef struct _REPARSE_GUID_DATA_BUFFER { 4998 DWORD ReparseTag; 4999 WORD ReparseDataLength; 5000 WORD Reserved; 5001 GUID ReparseGuid; 5002 struct { 5003 BYTE DataBuffer[1]; 5004 } GenericReparseBuffer; 5005 } REPARSE_GUID_DATA_BUFFER,*PREPARSE_GUID_DATA_BUFFER; 5006 5007 #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER,GenericReparseBuffer) 5008 5009 #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 *1024) 5010 5011 #define SYMLINK_FLAG_RELATIVE 1 5012 5013 #define IO_REPARSE_TAG_RESERVED_ZERO (0) 5014 #define IO_REPARSE_TAG_RESERVED_ONE (1) 5015 5016 #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE 5017 5018 #define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000)) 5019 #define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000)) 5020 5021 #define IO_REPARSE_TAG_MOUNT_POINT (__MSABI_LONG(0xA0000003)) 5022 #define IO_REPARSE_TAG_HSM (__MSABI_LONG(0xC0000004)) 5023 #define IO_REPARSE_TAG_HSM2 (__MSABI_LONG(0x80000006)) 5024 #define IO_REPARSE_TAG_SIS (__MSABI_LONG(0x80000007)) 5025 #define IO_REPARSE_TAG_WIM (__MSABI_LONG(0x80000008)) 5026 #define IO_REPARSE_TAG_CSV (__MSABI_LONG(0x80000009)) 5027 #define IO_REPARSE_TAG_DFS (__MSABI_LONG(0x8000000A)) 5028 #define IO_REPARSE_TAG_FILTER_MANAGER (__MSABI_LONG(0x8000000B)) 5029 #define IO_REPARSE_TAG_DFSR (__MSABI_LONG(0x80000012)) 5030 #define IO_REPARSE_TAG_SYMLINK (__MSABI_LONG(0xA000000C)) 5031 #define IO_REPARSE_TAG_IIS_CACHE (__MSABI_LONG(0xA0000010)) 5032 #define IO_REPARSE_TAG_DRIVE_EXTENDER (__MSABI_LONG(0x80000005)) 5033 #define IO_REPARSE_TAG_DEDUP (__MSABI_LONG(0x80000013)) 5034 #define IO_REPARSE_TAG_NFS (__MSABI_LONG(0x80000014)) 5035 5036 #if _WIN32_WINNT >= 0x0602 5037 #define SCRUB_DATA_INPUT_FLAG_RESUME 0x00000001 5038 #define SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC 0x00000002 5039 #define SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA 0x00000004 5040 5041 #define SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE 0x00000001 5042 #define SCRUB_DATA_OUTPUT_FLAG_NON_USER_DATA_RANGE 0x00010000 5043 5044 typedef struct _SCRUB_DATA_INPUT { 5045 DWORD Size; 5046 DWORD Flags; 5047 DWORD MaximumIos; 5048 DWORD Reserved[17]; 5049 BYTE ResumeContext[816]; 5050 } SCRUB_DATA_INPUT,*PSCRUB_DATA_INPUT; 5051 5052 typedef struct _SCRUB_DATA_OUTPUT { 5053 DWORD Size; 5054 DWORD Flags; 5055 DWORD Status; 5056 ULONGLONG ErrorFileOffset; 5057 ULONGLONG ErrorLength; 5058 ULONGLONG NumberOfBytesRepaired; 5059 ULONGLONG NumberOfBytesFailed; 5060 ULONGLONG InternalFileReference; 5061 DWORD Reserved[6]; 5062 BYTE ResumeContext[816]; 5063 } SCRUB_DATA_OUTPUT,*PSCRUB_DATA_OUTPUT; 5064 #endif 5065 5066 #define IO_COMPLETION_MODIFY_STATE 0x0002 5067 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 5068 #define DUPLICATE_CLOSE_SOURCE 0x00000001 5069 #define DUPLICATE_SAME_ACCESS 0x00000002 5070 5071 #define POWERBUTTON_ACTION_INDEX_NOTHING 0 5072 #define POWERBUTTON_ACTION_INDEX_SLEEP 1 5073 #define POWERBUTTON_ACTION_INDEX_HIBERNATE 2 5074 #define POWERBUTTON_ACTION_INDEX_SHUTDOWN 3 5075 5076 #define POWERBUTTON_ACTION_VALUE_NOTHING 0 5077 #define POWERBUTTON_ACTION_VALUE_SLEEP 2 5078 #define POWERBUTTON_ACTION_VALUE_HIBERNATE 3 5079 #define POWERBUTTON_ACTION_VALUE_SHUTDOWN 6 5080 5081 #define PERFSTATE_POLICY_CHANGE_IDEAL 0 5082 #define PERFSTATE_POLICY_CHANGE_SINGLE 1 5083 #define PERFSTATE_POLICY_CHANGE_ROCKET 2 5084 #define PERFSTATE_POLICY_CHANGE_MAX PERFSTATE_POLICY_CHANGE_ROCKET 5085 5086 #define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0 5087 #define PROCESSOR_PERF_BOOST_POLICY_MAX 100 5088 5089 #define PROCESSOR_PERF_BOOST_MODE_DISABLED 0 5090 #define PROCESSOR_PERF_BOOST_MODE_ENABLED 1 5091 #define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 2 5092 #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 3 5093 #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 4 5094 #define PROCESSOR_PERF_BOOST_MODE_MAX PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 5095 5096 #define CORE_PARKING_POLICY_CHANGE_IDEAL 0 5097 #define CORE_PARKING_POLICY_CHANGE_SINGLE 1 5098 #define CORE_PARKING_POLICY_CHANGE_ROCKET 2 5099 #define CORE_PARKING_POLICY_CHANGE_MULTISTEP 3 5100 #define CORE_PARKING_POLICY_CHANGE_MAX CORE_PARKING_POLICY_CHANGE_MULTISTEP 5101 5102 #define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0 5103 #define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1 5104 5105 DEFINE_GUID (GUID_MAX_POWER_SAVINGS, 0xa1841308, 0x3541, 0x4fab, 0xbc, 0x81, 0xf7, 0x15, 0x56, 0xf2, 0x0b, 0x4a); 5106 DEFINE_GUID (GUID_MIN_POWER_SAVINGS, 0x8c5e7fda, 0xe8bf, 0x4a96, 0x9a, 0x85, 0xa6, 0xe2, 0x3a, 0x8c, 0x63, 0x5c); 5107 DEFINE_GUID (GUID_TYPICAL_POWER_SAVINGS, 0x381b4222, 0xf694, 0x41f0, 0x96, 0x85, 0xff, 0x5b, 0xb2, 0x60, 0xdf, 0x2e); 5108 DEFINE_GUID (NO_SUBGROUP_GUID, 0xfea3413e, 0x7e05, 0x4911, 0x9a, 0x71, 0x70, 0x03, 0x31, 0xf1, 0xc2, 0x94); 5109 DEFINE_GUID (ALL_POWERSCHEMES_GUID, 0x68a1e95e, 0x13ea, 0x41e1, 0x80, 0x11, 0x0c, 0x49, 0x6c, 0xa4, 0x90, 0xb0); 5110 DEFINE_GUID (GUID_POWERSCHEME_PERSONALITY, 0x245d8541, 0x3943, 0x4422, 0xb0, 0x25, 0x13, 0xa7, 0x84, 0xf6, 0x79, 0xb7); 5111 DEFINE_GUID (GUID_ACTIVE_POWERSCHEME, 0x31f9f286, 0x5084, 0x42fe, 0xb7, 0x20, 0x2b, 0x02, 0x64, 0x99, 0x37, 0x63); 5112 DEFINE_GUID (GUID_IDLE_RESILIENCY_SUBGROUP, 0x2e601130, 0x5351, 0x4d9d, 0x8e, 0x4, 0x25, 0x29, 0x66, 0xba, 0xd0, 0x54); 5113 DEFINE_GUID (GUID_IDLE_RESILIENCY_PERIOD, 0xc42b79aa, 0xaa3a, 0x484b, 0xa9, 0x8f, 0x2c, 0xf3, 0x2a, 0xa9, 0xa, 0x28); 5114 DEFINE_GUID (GUID_DISK_COALESCING_POWERDOWN_TIMEOUT, 0xc36f0eb4, 0x2988, 0x4a70, 0x8e, 0xee, 0x8, 0x84, 0xfc, 0x2c, 0x24, 0x33); 5115 DEFINE_GUID (GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT, 0x3166bc41, 0x7e98, 0x4e03, 0xb3, 0x4e, 0xec, 0xf, 0x5f, 0x2b, 0x21, 0x8e); 5116 DEFINE_GUID (GUID_VIDEO_SUBGROUP, 0x7516b95f, 0xf776, 0x4464, 0x8c, 0x53, 0x06, 0x16, 0x7f, 0x40, 0xcc, 0x99); 5117 DEFINE_GUID (GUID_VIDEO_POWERDOWN_TIMEOUT, 0x3c0bc021, 0xc8a8, 0x4e07, 0xa9, 0x73, 0x6b, 0x14, 0xcb, 0xcb, 0x2b, 0x7e); 5118 DEFINE_GUID (GUID_VIDEO_ANNOYANCE_TIMEOUT, 0x82dbcf2d, 0xcd67, 0x40c5, 0xbf, 0xdc, 0x9f, 0x1a, 0x5c, 0xcd, 0x46, 0x63); 5119 DEFINE_GUID (GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE, 0xeed904df, 0xb142, 0x4183, 0xb1, 0x0b, 0x5a, 0x11, 0x97, 0xa3, 0x78, 0x64); 5120 DEFINE_GUID (GUID_VIDEO_DIM_TIMEOUT, 0x17aaa29b, 0x8b43, 0x4b94, 0xaa, 0xfe, 0x35, 0xf6, 0x4d, 0xaa, 0xf1, 0xee); 5121 DEFINE_GUID (GUID_VIDEO_ADAPTIVE_POWERDOWN, 0x90959d22, 0xd6a1, 0x49b9, 0xaf, 0x93, 0xbc, 0xe8, 0x85, 0xad, 0x33, 0x5b); 5122 DEFINE_GUID (GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xe6, 0xe5, 0xa1, 0x7e, 0xbd, 0x1a, 0xea); 5123 DEFINE_GUID (GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS, __MSABI_LONG(0xaded5e82), 0xb909, 0x4619, 0x99, 0x49, 0xf5, 0xd7, 0x1d, 0xac, 0x0b, 0xcb); 5124 DEFINE_GUID (GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS, 0xf1fbfde2, 0xa960, 0x4165, 0x9f, 0x88, 0x50, 0x66, 0x79, 0x11, 0xce, 0x96); 5125 DEFINE_GUID (GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS, 0x8ffee2c6, 0x2d01, 0x46be, 0xad, 0xb9, 0x39, 0x8a, 0xdd, 0xc5, 0xb4, 0xff); 5126 DEFINE_GUID (GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS, 0xfbd9aa66, 0x9553, 0x4097, 0xba, 0x44, 0xed, 0x6e, 0x9d, 0x65, 0xea, 0xb8); 5127 DEFINE_GUID (GUID_CONSOLE_DISPLAY_STATE, 0x6fe69556, 0x704a, 0x47a0, 0x8f, 0x24, 0xc2, 0x8d, 0x93, 0x6f, 0xda, 0x47); 5128 DEFINE_GUID (GUID_ALLOW_DISPLAY_REQUIRED, 0xa9ceb8da, 0xcd46, 0x44fb, 0xa9, 0x8b, 0x02, 0xaf, 0x69, 0xde, 0x46, 0x23); 5129 DEFINE_GUID (GUID_VIDEO_CONSOLE_LOCK_TIMEOUT, 0x8ec4b3a5, 0x6868, 0x48c2, 0xbe, 0x75, 0x4f, 0x30, 0x44, 0xbe, 0x88, 0xa7); 5130 DEFINE_GUID (GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP, 0x8619b916, 0xe004, 0x4dd8, 0x9b, 0x66, 0xda, 0xe8, 0x6f, 0x80, 0x66, 0x98); 5131 DEFINE_GUID (GUID_NON_ADAPTIVE_INPUT_TIMEOUT, 0x5adbbfbc, 0x74e, 0x4da1, 0xba, 0x38, 0xdb, 0x8b, 0x36, 0xb2, 0xc8, 0xf3); 5132 DEFINE_GUID (GUID_DISK_SUBGROUP, 0x0012ee47, 0x9041, 0x4b5d, 0x9b, 0x77, 0x53, 0x5f, 0xba, 0x8b, 0x14, 0x42); 5133 DEFINE_GUID (GUID_DISK_POWERDOWN_TIMEOUT, 0x6738e2c4, 0xe8a5, 0x4a42, 0xb1, 0x6a, 0xe0, 0x40, 0xe7, 0x69, 0x75, 0x6e); 5134 DEFINE_GUID (GUID_DISK_IDLE_TIMEOUT, 0x58e39ba8, 0xb8e6, 0x4ef6, 0x90, 0xd0, 0x89, 0xae, 0x32, 0xb2, 0x58, 0xd6); 5135 DEFINE_GUID (GUID_DISK_BURST_IGNORE_THRESHOLD, 0x80e3c60e, 0xbb94, 0x4ad8, 0xbb, 0xe0, 0x0d, 0x31, 0x95, 0xef, 0xc6, 0x63); 5136 DEFINE_GUID (GUID_DISK_ADAPTIVE_POWERDOWN, 0x396a32e1, 0x499a, 0x40b2, 0x91, 0x24, 0xa9, 0x6a, 0xfe, 0x70, 0x76, 0x67); 5137 DEFINE_GUID (GUID_SLEEP_SUBGROUP, 0x238c9fa8, 0x0aad, 0x41ed, 0x83, 0xf4, 0x97, 0xbe, 0x24, 0x2c, 0x8f, 0x20); 5138 DEFINE_GUID (GUID_SLEEP_IDLE_THRESHOLD, 0x81cd32e0, 0x7833, 0x44f3, 0x87, 0x37, 0x70, 0x81, 0xf3, 0x8d, 0x1f, 0x70); 5139 DEFINE_GUID (GUID_STANDBY_TIMEOUT, 0x29f6c1db, 0x86da, 0x48c5, 0x9f, 0xdb, 0xf2, 0xb6, 0x7b, 0x1f, 0x44, 0xda); 5140 DEFINE_GUID (GUID_UNATTEND_SLEEP_TIMEOUT, 0x7bc4a2f9, 0xd8fc, 0x4469, 0xb0, 0x7b, 0x33, 0xeb, 0x78, 0x5a, 0xac, 0xa0); 5141 DEFINE_GUID (GUID_HIBERNATE_TIMEOUT, 0x9d7815a6, 0x7ee4, 0x497e, 0x88, 0x88, 0x51, 0x5a, 0x05, 0xf0, 0x23, 0x64); 5142 DEFINE_GUID (GUID_HIBERNATE_FASTS4_POLICY, 0x94ac6d29, 0x73ce, 0x41a6, 0x80, 0x9f, 0x63, 0x63, 0xba, 0x21, 0xb4, 0x7e); 5143 DEFINE_GUID (GUID_CRITICAL_POWER_TRANSITION, 0xb7a27025, 0xe569, 0x46c2, 0xa5, 0x04, 0x2b, 0x96, 0xca, 0xd2, 0x25, 0xa1); 5144 DEFINE_GUID (GUID_SYSTEM_AWAYMODE, 0x98a7f580, 0x01f7, 0x48aa, 0x9c, 0x0f, 0x44, 0x35, 0x2c, 0x29, 0xe5, 0xc0); 5145 DEFINE_GUID (GUID_ALLOW_AWAYMODE, 0x25dfa149, 0x5dd1, 0x4736, 0xb5, 0xab, 0xe8, 0xa3, 0x7b, 0x5b, 0x81, 0x87); 5146 DEFINE_GUID (GUID_ALLOW_STANDBY_STATES, 0xabfc2519, 0x3608, 0x4c2a, 0x94, 0xea, 0x17, 0x1b, 0x0e, 0xd5, 0x46, 0xab); 5147 DEFINE_GUID (GUID_ALLOW_RTC_WAKE, 0xbd3b718a, 0x0680, 0x4d9d, 0x8a, 0xb2, 0xe1, 0xd2, 0xb4, 0xac, 0x80, 0x6d); 5148 DEFINE_GUID (GUID_ALLOW_SYSTEM_REQUIRED, 0xa4b195f5, 0x8225, 0x47d8, 0x80, 0x12, 0x9d, 0x41, 0x36, 0x97, 0x86, 0xe2); 5149 DEFINE_GUID (GUID_SYSTEM_BUTTON_SUBGROUP, 0x4f971e89, 0xeebd, 0x4455, 0xa8, 0xde, 0x9e, 0x59, 0x04, 0x0e, 0x73, 0x47); 5150 DEFINE_GUID (GUID_POWERBUTTON_ACTION, 0x7648efa3, 0xdd9c, 0x4e3e, 0xb5, 0x66, 0x50, 0xf9, 0x29, 0x38, 0x62, 0x80); 5151 DEFINE_GUID (GUID_SLEEPBUTTON_ACTION, 0x96996bc0, 0xad50, 0x47ec, 0x92, 0x3b, 0x6f, 0x41, 0x87, 0x4d, 0xd9, 0xeb); 5152 DEFINE_GUID (GUID_USERINTERFACEBUTTON_ACTION, 0xa7066653, 0x8d6c, 0x40a8, 0x91, 0x0e, 0xa1, 0xf5, 0x4b, 0x84, 0xc7, 0xe5); 5153 DEFINE_GUID (GUID_LIDCLOSE_ACTION, 0x5ca83367, 0x6e45, 0x459f, 0xa2, 0x7b, 0x47, 0x6b, 0x1d, 0x01, 0xc9, 0x36); 5154 DEFINE_GUID (GUID_LIDOPEN_POWERSTATE, 0x99ff10e7, 0x23b1, 0x4c07, 0xa9, 0xd1, 0x5c, 0x32, 0x06, 0xd7, 0x41, 0xb4); 5155 DEFINE_GUID (GUID_BATTERY_SUBGROUP, 0xe73a048d, 0xbf27, 0x4f12, 0x97, 0x31, 0x8b, 0x20, 0x76, 0xe8, 0x89, 0x1f); 5156 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_0, 0x637ea02f, 0xbbcb, 0x4015, 0x8e, 0x2c, 0xa1, 0xc7, 0xb9, 0xc0, 0xb5, 0x46); 5157 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_0, 0x9a66d8d7, 0x4ff7, 0x4ef9, 0xb5, 0xa2, 0x5a, 0x32, 0x6c, 0xa2, 0xa4, 0x69); 5158 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_0, 0x5dbb7c9f, 0x38e9, 0x40d2, 0x97, 0x49, 0x4f, 0x8a, 0x0e, 0x9f, 0x64, 0x0f); 5159 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_1, 0xd8742dcb, 0x3e6a, 0x4b3c, 0xb3, 0xfe, 0x37, 0x46, 0x23, 0xcd, 0xcf, 0x06); 5160 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_1, 0x8183ba9a, 0xe910, 0x48da, 0x87, 0x69, 0x14, 0xae, 0x6d, 0xc1, 0x17, 0x0a); 5161 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_1, 0xbcded951, 0x187b, 0x4d05, 0xbc, 0xcc, 0xf7, 0xe5, 0x19, 0x60, 0xc2, 0x58); 5162 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_2, 0x421cba38, 0x1a8e, 0x4881, 0xac, 0x89, 0xe3, 0x3a, 0x8b, 0x04, 0xec, 0xe4); 5163 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_2, 0x07a07ca2, 0xadaf, 0x40d7, 0xb0, 0x77, 0x53, 0x3a, 0xad, 0xed, 0x1b, 0xfa); 5164 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_2, 0x7fd2f0c4, 0xfeb7, 0x4da3, 0x81, 0x17, 0xe3, 0xfb, 0xed, 0xc4, 0x65, 0x82); 5165 DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_3, 0x80472613, 0x9780, 0x455e, 0xb3, 0x08, 0x72, 0xd3, 0x00, 0x3c, 0xf2, 0xf8); 5166 DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_3, 0x58afd5a6, 0xc2dd, 0x47d2, 0x9f, 0xbf, 0xef, 0x70, 0xcc, 0x5c, 0x59, 0x65); 5167 DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_3, 0x73613ccf, 0xdbfa, 0x4279, 0x83, 0x56, 0x49, 0x35, 0xf6, 0xbf, 0x62, 0xf3); 5168 DEFINE_GUID (GUID_PROCESSOR_SETTINGS_SUBGROUP, 0x54533251, 0x82be, 0x4824, 0x96, 0xc1, 0x47, 0xb6, 0x0b, 0x74, 0x0d, 0x00); 5169 DEFINE_GUID (GUID_PROCESSOR_THROTTLE_POLICY, 0x57027304, 0x4af6, 0x4104, 0x92, 0x60, 0xe3, 0xd9, 0x52, 0x48, 0xfc, 0x36); 5170 DEFINE_GUID (GUID_PROCESSOR_THROTTLE_MAXIMUM, 0xbc5038f7, 0x23e0, 0x4960, 0x96, 0xda, 0x33, 0xab, 0xaf, 0x59, 0x35, 0xec); 5171 DEFINE_GUID (GUID_PROCESSOR_THROTTLE_MINIMUM, 0x893dee8e, 0x2bef, 0x41e0, 0x89, 0xc6, 0xb5, 0x5d, 0x09, 0x29, 0x96, 0x4c); 5172 DEFINE_GUID (GUID_PROCESSOR_ALLOW_THROTTLING, 0x3b04d4fd, 0x1cc7, 0x4f23, 0xab, 0x1c, 0xd1, 0x33, 0x78, 0x19, 0xc4, 0xbb); 5173 DEFINE_GUID (GUID_PROCESSOR_IDLESTATE_POLICY, 0x68f262a7, 0xf621, 0x4069, 0xb9, 0xa5, 0x48, 0x74, 0x16, 0x9b, 0xe2, 0x3c); 5174 DEFINE_GUID (GUID_PROCESSOR_PERFSTATE_POLICY, 0xbbdc3814, 0x18e9, 0x4463, 0x8a, 0x55, 0xd1, 0x97, 0x32, 0x7c, 0x45, 0xc0); 5175 DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_THRESHOLD, 0x06cadf0e, 0x64ed, 0x448a, 0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5d); 5176 DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_THRESHOLD, 0x12a0ab44, 0xfe28, 0x4fa9, 0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa6); 5177 DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_POLICY, 0x465e1f50, 0xb610, 0x473a, 0xab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x18); 5178 DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_POLICY, 0x40fbefc7, 0x2e9d, 0x4d25, 0xa1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc6); 5179 DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_TIME, 0x984cf492, 0x3bed, 0x4488, 0xa8, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xaa); 5180 DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_TIME, 0xd8edeb9b, 0x95cf, 0x4f95, 0xa7, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc8); 5181 DEFINE_GUID (GUID_PROCESSOR_PERF_TIME_CHECK, 0x4d2b0152, 0x7d5c, 0x498b, 0x88, 0xe2, 0x34, 0x34, 0x53, 0x92, 0xa2, 0xc5); 5182 DEFINE_GUID (GUID_PROCESSOR_PERF_BOOST_POLICY, 0x45bcc044, 0xd885, 0x43e2, 0x86, 0x5, 0xee, 0xe, 0xc6, 0xe9, 0x6b, 0x59); 5183 DEFINE_GUID (GUID_PROCESSOR_PERF_BOOST_MODE, 0xbe337238, 0xd82, 0x4146, 0xa9, 0x60, 0x4f, 0x37, 0x49, 0xd4, 0x70, 0xc7); 5184 DEFINE_GUID (GUID_PROCESSOR_IDLE_ALLOW_SCALING, 0x6c2993b0, 0x8f48, 0x481f, 0xbc, 0xc6, 0x0, 0xdd, 0x27, 0x42, 0xaa, 0x6); 5185 DEFINE_GUID (GUID_PROCESSOR_IDLE_DISABLE, 0x5d76a2ca, 0xe8c0, 0x402f, 0xa1, 0x33, 0x21, 0x58, 0x49, 0x2d, 0x58, 0xad); 5186 DEFINE_GUID (GUID_PROCESSOR_IDLE_STATE_MAXIMUM, 0x9943e905, 0x9a30, 0x4ec1, 0x9b, 0x99, 0x44, 0xdd, 0x3b, 0x76, 0xf7, 0xa2); 5187 DEFINE_GUID (GUID_PROCESSOR_IDLE_TIME_CHECK, 0xc4581c31, 0x89ab, 0x4597, 0x8e, 0x2b, 0x9c, 0x9c, 0xab, 0x44, 0xe, 0x6b); 5188 DEFINE_GUID (GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD, 0x4b92d758, 0x5a24, 0x4851, 0xa4, 0x70, 0x81, 0x5d, 0x78, 0xae, 0xe1, 0x19); 5189 DEFINE_GUID (GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD, 0x7b224883, 0xb3cc, 0x4d79, 0x81, 0x9f, 0x83, 0x74, 0x15, 0x2c, 0xbe, 0x7c); 5190 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD, 0xdf142941, 0x20f3, 0x4edf, 0x9a, 0x4a, 0x9c, 0x83, 0xd3, 0xd7, 0x17, 0xd1); 5191 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD, 0x68dd2f27, 0xa4ce, 0x4e11, 0x84, 0x87, 0x37, 0x94, 0xe4, 0x13, 0x5d, 0xfa); 5192 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY, 0xc7be0679, 0x2817, 0x4d69, 0x9d, 0x02, 0x51, 0x9a, 0x53, 0x7e, 0xd0, 0xc6); 5193 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY, 0x71021b41, 0xc749, 0x4d21, 0xbe, 0x74, 0xa0, 0x0f, 0x33, 0x5d, 0x58, 0x2b); 5194 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_MAX_CORES, 0xea062031, 0x0e34, 0x4ff1, 0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x28); 5195 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_MIN_CORES, 0x0cc5b647, 0xc1df, 0x4637, 0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x83); 5196 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME, 0x2ddd5a84, 0x5a71, 0x437e, 0x91, 0x2a, 0xdb, 0x0b, 0x8c, 0x78, 0x87, 0x32); 5197 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME, 0xdfd10d17, 0xd5eb, 0x45dd, 0x87, 0x7a, 0x9a, 0x34, 0xdd, 0xd1, 0x5c, 0x82); 5198 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR, 0x8f7b45e3, 0xc393, 0x480a, 0x87, 0x8c, 0xf6, 0x7a, 0xc3, 0xd0, 0x70, 0x82); 5199 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD, 0x5b33697b, 0xe89d, 0x4d38, 0xaa, 0x46, 0x9e, 0x7d, 0xfb, 0x7c, 0xd2, 0xf9); 5200 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING, 0xe70867f1, 0xfa2f, 0x4f4e, 0xae, 0xa1, 0x4d, 0x8a, 0x0b, 0xa2, 0x3b, 0x20); 5201 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR, 0x1299023c, 0xbc28, 0x4f0a, 0x81, 0xec, 0xd3, 0x29, 0x5a, 0x8d, 0x81, 0x5d); 5202 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD, 0x9ac18e92, 0xaa3c, 0x4e27, 0xb3, 0x07, 0x01, 0xae, 0x37, 0x30, 0x71, 0x29); 5203 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING, 0x8809c2d8, 0xb155, 0x42d4, 0xbc, 0xda, 0x0d, 0x34, 0x56, 0x51, 0xb1, 0xdb); 5204 DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD, 0x943c8cb6, 0x6f93, 0x4227, 0xad, 0x87, 0xe9, 0xa3, 0xfe, 0xec, 0x08, 0xd1); 5205 DEFINE_GUID (GUID_PROCESSOR_PARKING_CORE_OVERRIDE, 0xa55612aa, 0xf624, 0x42c6, 0xa4, 0x43, 0x73, 0x97, 0xd0, 0x64, 0xc0, 0x4f); 5206 DEFINE_GUID (GUID_PROCESSOR_PARKING_PERF_STATE, 0x447235c7, 0x6a8d, 0x4cc0, 0x8e, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2b); 5207 DEFINE_GUID (GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD, 0x2430ab6f, 0xa520, 0x44a2, 0x96, 0x01, 0xf7, 0xf2, 0x3b, 0x51, 0x34, 0xb1); 5208 DEFINE_GUID (GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD, 0xf735a673, 0x2066, 0x4f80, 0xa0, 0xc5, 0xdd, 0xee, 0x0c, 0xf1, 0xbf, 0x5d); 5209 DEFINE_GUID (GUID_PROCESSOR_PERF_HISTORY, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x0c, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x5f); 5210 DEFINE_GUID (GUID_PROCESSOR_PERF_LATENCY_HINT, 0x0822df31, 0x9c83, 0x441c, 0xa0, 0x79, 0x0d, 0xe4, 0xcf, 0x00, 0x9c, 0x7b); 5211 DEFINE_GUID (GUID_PROCESSOR_DISTRIBUTE_UTILITY, 0xe0007330, 0xf589, 0x42ed, 0xa4, 0x01, 0x5d, 0xdb, 0x10, 0xe7, 0x85, 0xd3); 5212 DEFINE_GUID (GUID_SYSTEM_COOLING_POLICY, 0x94d3a615, 0xa899, 0x4ac5, 0xae, 0x2b, 0xe4, 0xd8, 0xf6, 0x34, 0x36, 0x7f); 5213 DEFINE_GUID (GUID_LOCK_CONSOLE_ON_WAKE, 0x0e796bdb, 0x100d, 0x47d6, 0xa2, 0xd5, 0xf7, 0xd2, 0xda, 0xa5, 0x1f, 0x51); 5214 DEFINE_GUID (GUID_DEVICE_IDLE_POLICY, 0x4faab71a, 0x92e5, 0x4726, 0xb5, 0x31, 0x22, 0x45, 0x59, 0x67, 0x2d, 0x19); 5215 DEFINE_GUID (GUID_ACDC_POWER_SOURCE, 0x5d3e9a59, 0xe9d5, 0x4b00, 0xa6, 0xbd, 0xff, 0x34, 0xff, 0x51, 0x65, 0x48); 5216 DEFINE_GUID (GUID_LIDSWITCH_STATE_CHANGE, 0xba3e0f4d, 0xb817, 0x4094, 0xa2, 0xd1, 0xd5, 0x63, 0x79, 0xe6, 0xa0, 0xf3); 5217 DEFINE_GUID (GUID_BATTERY_PERCENTAGE_REMAINING, 0xa7ad8041, 0xb45a, 0x4cae, 0x87, 0xa3, 0xee, 0xcb, 0xb4, 0x68, 0xa9, 0xe1); 5218 DEFINE_GUID (GUID_GLOBAL_USER_PRESENCE, 0x786e8a1d, 0xb427, 0x4344, 0x92, 0x7, 0x9, 0xe7, 0xb, 0xdc, 0xbe, 0xa9); 5219 DEFINE_GUID (GUID_SESSION_DISPLAY_STATUS, 0x2b84c20e, 0xad23, 0x4ddf, 0x93, 0xdb, 0x5, 0xff, 0xbd, 0x7e, 0xfc, 0xa5); 5220 DEFINE_GUID (GUID_SESSION_USER_PRESENCE, 0x3c0f4548, 0xc03f, 0x4c4d, 0xb9, 0xf2, 0x23, 0x7e, 0xde, 0x68, 0x63, 0x76); 5221 DEFINE_GUID (GUID_IDLE_BACKGROUND_TASK, 0x515c31d8, 0xf734, 0x163d, 0xa0, 0xfd, 0x11, 0xa0, 0x8c, 0x91, 0xe8, 0xf1); 5222 DEFINE_GUID (GUID_BACKGROUND_TASK_NOTIFICATION, 0xcf23f240, 0x2a54, 0x48d8, 0xb1, 0x14, 0xde, 0x15, 0x18, 0xff, 0x05, 0x2e); 5223 DEFINE_GUID (GUID_APPLAUNCH_BUTTON, 0x1a689231, 0x7399, 0x4e9a, 0x8f, 0x99, 0xb7, 0x1f, 0x99, 0x9d, 0xb3, 0xfa); 5224 DEFINE_GUID (GUID_PCIEXPRESS_SETTINGS_SUBGROUP, 0x501a4d13, 0x42af, 0x4429, 0x9f, 0xd1, 0xa8, 0x21, 0x8c, 0x26, 0x8e, 0x20); 5225 DEFINE_GUID (GUID_PCIEXPRESS_ASPM_POLICY, 0xee12f906, 0xd277, 0x404b, 0xb6, 0xda, 0xe5, 0xfa, 0x1a, 0x57, 0x6d, 0xf5); 5226 DEFINE_GUID (GUID_ENABLE_SWITCH_FORCED_SHUTDOWN, 0x833a6b62, 0xdfa4, 0x46d1, 0x82, 0xf8, 0xe0, 0x9e, 0x34, 0xd0, 0x29, 0xd6); 5227 5228 typedef enum _SYSTEM_POWER_STATE { 5229 PowerSystemUnspecified = 0,PowerSystemWorking = 1,PowerSystemSleeping1 = 2,PowerSystemSleeping2 = 3,PowerSystemSleeping3 = 4,PowerSystemHibernate = 5,PowerSystemShutdown = 6,PowerSystemMaximum = 7 5230 } SYSTEM_POWER_STATE,*PSYSTEM_POWER_STATE; 5231 5232 #define POWER_SYSTEM_MAXIMUM 7 5233 5234 typedef enum { 5235 PowerActionNone = 0, PowerActionReserved, PowerActionSleep, PowerActionHibernate, 5236 PowerActionShutdown, PowerActionShutdownReset, PowerActionShutdownOff, 5237 PowerActionWarmEject 5238 } POWER_ACTION,*PPOWER_ACTION; 5239 5240 typedef enum _DEVICE_POWER_STATE { 5241 PowerDeviceUnspecified = 0, PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3, 5242 PowerDeviceMaximum 5243 } DEVICE_POWER_STATE,*PDEVICE_POWER_STATE; 5244 5245 typedef enum _MONITOR_DISPLAY_STATE { 5246 PowerMonitorOff = 0, PowerMonitorOn, PowerMonitorDim 5247 } MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE; 5248 5249 typedef enum _USER_ACTIVITY_PRESENCE { 5250 PowerUserPresent = 0, 5251 PowerUserNotPresent, 5252 PowerUserInactive, 5253 PowerUserMaximum, 5254 PowerUserInvalid = PowerUserMaximum 5255 } USER_ACTIVITY_PRESENCE,*PUSER_ACTIVITY_PRESENCE; 5256 5257 #define ES_SYSTEM_REQUIRED ((DWORD)0x00000001) 5258 #define ES_DISPLAY_REQUIRED ((DWORD)0x00000002) 5259 #define ES_USER_PRESENT ((DWORD)0x00000004) 5260 #define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040) 5261 #define ES_CONTINUOUS ((DWORD)0x80000000) 5262 5263 typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE; 5264 5265 typedef enum { 5266 LT_DONT_CARE,LT_LOWEST_LATENCY 5267 } LATENCY_TIME; 5268 5269 #define DIAGNOSTIC_REASON_VERSION 0 5270 #define POWER_REQUEST_CONTEXT_VERSION 0 5271 5272 #define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001 5273 #define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002 5274 #define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 5275 #define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003) 5276 5277 #define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001 5278 #define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002 5279 5280 typedef enum _POWER_REQUEST_TYPE { 5281 PowerRequestDisplayRequired, 5282 PowerRequestSystemRequired, 5283 PowerRequestAwayModeRequired, 5284 PowerRequestExecutionRequired 5285 } POWER_REQUEST_TYPE,*PPOWER_REQUEST_TYPE; 5286 5287 #define PDCAP_D0_SUPPORTED 0x00000001 5288 #define PDCAP_D1_SUPPORTED 0x00000002 5289 #define PDCAP_D2_SUPPORTED 0x00000004 5290 #define PDCAP_D3_SUPPORTED 0x00000008 5291 #define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010 5292 #define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020 5293 #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 5294 #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 5295 #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 5296 5297 typedef struct CM_Power_Data_s { 5298 DWORD PD_Size; 5299 DEVICE_POWER_STATE PD_MostRecentPowerState; 5300 DWORD PD_Capabilities; 5301 DWORD PD_D1Latency; 5302 DWORD PD_D2Latency; 5303 DWORD PD_D3Latency; 5304 DEVICE_POWER_STATE PD_PowerStateMapping[POWER_SYSTEM_MAXIMUM]; 5305 SYSTEM_POWER_STATE PD_DeepestSystemWake; 5306 } CM_POWER_DATA,*PCM_POWER_DATA; 5307 5308 typedef enum { 5309 SystemPowerPolicyAc, 5310 SystemPowerPolicyDc, 5311 VerifySystemPolicyAc, 5312 VerifySystemPolicyDc, 5313 SystemPowerCapabilities, 5314 SystemBatteryState, 5315 SystemPowerStateHandler, 5316 ProcessorStateHandler, 5317 SystemPowerPolicyCurrent, 5318 AdministratorPowerPolicy, 5319 SystemReserveHiberFile, 5320 ProcessorInformation, 5321 SystemPowerInformation, 5322 ProcessorStateHandler2, 5323 LastWakeTime, 5324 LastSleepTime, 5325 SystemExecutionState, 5326 SystemPowerStateNotifyHandler, 5327 ProcessorPowerPolicyAc, 5328 ProcessorPowerPolicyDc, 5329 VerifyProcessorPowerPolicyAc, 5330 VerifyProcessorPowerPolicyDc, 5331 ProcessorPowerPolicyCurrent, 5332 SystemPowerStateLogging, 5333 SystemPowerLoggingEntry, 5334 SetPowerSettingValue, 5335 NotifyUserPowerSetting, 5336 PowerInformationLevelUnused0, 5337 SystemMonitorHiberBootPowerOff, 5338 SystemVideoState, 5339 TraceApplicationPowerMessage, 5340 TraceApplicationPowerMessageEnd, 5341 ProcessorPerfStates, 5342 ProcessorIdleStates, 5343 ProcessorCap, 5344 SystemWakeSource, 5345 SystemHiberFileInformation, 5346 TraceServicePowerMessage, 5347 ProcessorLoad, 5348 PowerShutdownNotification, 5349 MonitorCapabilities, 5350 SessionPowerInit, 5351 SessionDisplayState, 5352 PowerRequestCreate, 5353 PowerRequestAction, 5354 GetPowerRequestList, 5355 ProcessorInformationEx, 5356 NotifyUserModeLegacyPowerEvent, 5357 GroupPark, 5358 ProcessorIdleDomains, 5359 WakeTimerList, 5360 SystemHiberFileSize, 5361 ProcessorIdleStatesHv, 5362 ProcessorPerfStatesHv, 5363 ProcessorPerfCapHv, 5364 ProcessorSetIdle, 5365 LogicalProcessorIdling, 5366 UserPresence, 5367 PowerSettingNotificationName, 5368 GetPowerSettingValue, 5369 IdleResiliency, 5370 SessionRITState, 5371 SessionConnectNotification, 5372 SessionPowerCleanup, 5373 SessionLockState, 5374 SystemHiberbootState, 5375 PlatformInformation, 5376 PdcInvocation, 5377 MonitorInvocation, 5378 FirmwareTableInformationRegistered, 5379 SetShutdownSelectedTime, 5380 SuspendResumeInvocation, 5381 PlmPowerRequestCreate, 5382 ScreenOff, 5383 CsDeviceNotification, 5384 PlatformRole, 5385 LastResumePerformance, 5386 DisplayBurst, 5387 ExitLatencySamplingPercentage, 5388 ApplyLowPowerScenarioSettings, 5389 PowerInformationLevelMaximum 5390 } POWER_INFORMATION_LEVEL; 5391 5392 typedef enum { 5393 UserNotPresent = 0, 5394 UserPresent = 1, 5395 UserUnknown = 0xff 5396 } POWER_USER_PRESENCE_TYPE,*PPOWER_USER_PRESENCE_TYPE; 5397 5398 typedef struct _POWER_USER_PRESENCE { 5399 POWER_USER_PRESENCE_TYPE UserPresence; 5400 } POWER_USER_PRESENCE,*PPOWER_USER_PRESENCE; 5401 5402 typedef struct _POWER_SESSION_CONNECT { 5403 BOOLEAN Connected; 5404 BOOLEAN Console; 5405 } POWER_SESSION_CONNECT,*PPOWER_SESSION_CONNECT; 5406 5407 typedef struct _POWER_SESSION_TIMEOUTS { 5408 DWORD InputTimeout; 5409 DWORD DisplayTimeout; 5410 } POWER_SESSION_TIMEOUTS,*PPOWER_SESSION_TIMEOUTS; 5411 5412 typedef struct _POWER_SESSION_RIT_STATE { 5413 BOOLEAN Active; 5414 DWORD LastInputTime; 5415 } POWER_SESSION_RIT_STATE,*PPOWER_SESSION_RIT_STATE; 5416 5417 typedef struct _POWER_SESSION_WINLOGON { 5418 DWORD SessionId; 5419 BOOLEAN Console; 5420 BOOLEAN Locked; 5421 } POWER_SESSION_WINLOGON,*PPOWER_SESSION_WINLOGON; 5422 5423 typedef struct _POWER_IDLE_RESILIENCY { 5424 DWORD CoalescingTimeout; 5425 DWORD IdleResiliencyPeriod; 5426 } POWER_IDLE_RESILIENCY,*PPOWER_IDLE_RESILIENCY; 5427 5428 typedef enum { 5429 MonitorRequestReasonUnknown, 5430 MonitorRequestReasonPowerButton, 5431 MonitorRequestReasonRemoteConnection, 5432 MonitorRequestReasonScMonitorpower, 5433 MonitorRequestReasonUserInput, 5434 MonitorRequestReasonAcDcDisplayBurst, 5435 MonitorRequestReasonUserDisplayBurst, 5436 MonitorRequestReasonPoSetSystemState, 5437 MonitorRequestReasonSetThreadExecutionState, 5438 MonitorRequestReasonFullWake, 5439 MonitorRequestReasonSessionUnlock, 5440 MonitorRequestReasonScreenOffRequest, 5441 MonitorRequestReasonIdleTimeout, 5442 MonitorRequestReasonPolicyChange, 5443 MonitorRequestReasonMax 5444 } POWER_MONITOR_REQUEST_REASON; 5445 5446 typedef struct _POWER_MONITOR_INVOCATION { 5447 BOOLEAN On; 5448 BOOLEAN Console; 5449 POWER_MONITOR_REQUEST_REASON RequestReason; 5450 } POWER_MONITOR_INVOCATION,*PPOWER_MONITOR_INVOCATION; 5451 5452 typedef struct _RESUME_PERFORMANCE { 5453 DWORD PostTimeMs; 5454 ULONGLONG TotalResumeTimeMs; 5455 ULONGLONG ResumeCompleteTimestamp; 5456 } RESUME_PERFORMANCE,*PRESUME_PERFORMANCE; 5457 5458 typedef enum { 5459 PoAc, 5460 PoDc, 5461 PoHot, 5462 PoConditionMaximum 5463 } SYSTEM_POWER_CONDITION; 5464 5465 typedef struct { 5466 DWORD Version; 5467 GUID Guid; 5468 SYSTEM_POWER_CONDITION PowerCondition; 5469 DWORD DataLength; 5470 BYTE Data[ANYSIZE_ARRAY]; 5471 } SET_POWER_SETTING_VALUE,*PSET_POWER_SETTING_VALUE; 5472 5473 #define POWER_SETTING_VALUE_VERSION (0x1) 5474 5475 typedef struct { 5476 GUID Guid; 5477 } NOTIFY_USER_POWER_SETTING,*PNOTIFY_USER_POWER_SETTING; 5478 5479 typedef struct _APPLICATIONLAUNCH_SETTING_VALUE { 5480 LARGE_INTEGER ActivationTime; 5481 DWORD Flags; 5482 DWORD ButtonInstanceID; 5483 } APPLICATIONLAUNCH_SETTING_VALUE,*PAPPLICATIONLAUNCH_SETTING_VALUE; 5484 5485 typedef enum _POWER_PLATFORM_ROLE { 5486 PlatformRoleUnspecified = 0, 5487 PlatformRoleDesktop, 5488 PlatformRoleMobile, 5489 PlatformRoleWorkstation, 5490 PlatformRoleEnterpriseServer, 5491 PlatformRoleSOHOServer, 5492 PlatformRoleAppliancePC, 5493 PlatformRolePerformanceServer, 5494 PlatformRoleSlate, 5495 PlatformRoleMaximum 5496 } POWER_PLATFORM_ROLE,*PPOWER_PLATFORM_ROLE; 5497 5498 typedef struct _POWER_PLATFORM_INFORMATION { 5499 BOOLEAN AoAc; 5500 } POWER_PLATFORM_INFORMATION,*PPOWER_PLATFORM_INFORMATION; 5501 5502 #define POWER_PLATFORM_ROLE_V1 (0x00000001) 5503 #define POWER_PLATFORM_ROLE_V1_MAX (PlatformRolePerformanceServer + 1) 5504 5505 #define POWER_PLATFORM_ROLE_V2 (0x00000002) 5506 #define POWER_PLATFORM_ROLE_V2_MAX (PlatformRoleSlate + 1) 5507 5508 #if _WIN32_WINNT >= 0x0602 5509 #define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V2 5510 #define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V2_MAX 5511 #else 5512 #define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V1 5513 #define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V1_MAX 5514 #endif 5515 5516 typedef struct { 5517 DWORD Granularity; 5518 DWORD Capacity; 5519 } BATTERY_REPORTING_SCALE,*PBATTERY_REPORTING_SCALE; 5520 5521 typedef struct { 5522 DWORD Frequency; 5523 DWORD Flags; 5524 DWORD PercentFrequency; 5525 } PPM_WMI_LEGACY_PERFSTATE,*PPPM_WMI_LEGACY_PERFSTATE; 5526 5527 typedef struct { 5528 DWORD Latency; 5529 DWORD Power; 5530 DWORD TimeCheck; 5531 BYTE PromotePercent; 5532 BYTE DemotePercent; 5533 BYTE StateType; 5534 BYTE Reserved; 5535 DWORD StateFlags; 5536 DWORD Context; 5537 DWORD IdleHandler; 5538 DWORD Reserved1; 5539 } PPM_WMI_IDLE_STATE,*PPPM_WMI_IDLE_STATE; 5540 5541 typedef struct { 5542 DWORD Type; 5543 DWORD Count; 5544 DWORD TargetState; 5545 DWORD OldState; 5546 DWORD64 TargetProcessors; 5547 PPM_WMI_IDLE_STATE State[ANYSIZE_ARRAY]; 5548 } PPM_WMI_IDLE_STATES,*PPPM_WMI_IDLE_STATES; 5549 5550 typedef struct { 5551 DWORD Type; 5552 DWORD Count; 5553 DWORD TargetState; 5554 DWORD OldState; 5555 PVOID TargetProcessors; 5556 PPM_WMI_IDLE_STATE State[ANYSIZE_ARRAY]; 5557 } PPM_WMI_IDLE_STATES_EX,*PPPM_WMI_IDLE_STATES_EX; 5558 5559 typedef struct { 5560 DWORD Frequency; 5561 DWORD Power; 5562 BYTE PercentFrequency; 5563 BYTE IncreaseLevel; 5564 BYTE DecreaseLevel; 5565 BYTE Type; 5566 DWORD IncreaseTime; 5567 DWORD DecreaseTime; 5568 DWORD64 Control; 5569 DWORD64 Status; 5570 DWORD HitCount; 5571 DWORD Reserved1; 5572 DWORD64 Reserved2; 5573 DWORD64 Reserved3; 5574 } PPM_WMI_PERF_STATE,*PPPM_WMI_PERF_STATE; 5575 5576 typedef struct { 5577 DWORD Count; 5578 DWORD MaxFrequency; 5579 DWORD CurrentState; 5580 DWORD MaxPerfState; 5581 DWORD MinPerfState; 5582 DWORD LowestPerfState; 5583 DWORD ThermalConstraint; 5584 BYTE BusyAdjThreshold; 5585 BYTE PolicyType; 5586 BYTE Type; 5587 BYTE Reserved; 5588 DWORD TimerInterval; 5589 DWORD64 TargetProcessors; 5590 DWORD PStateHandler; 5591 DWORD PStateContext; 5592 DWORD TStateHandler; 5593 DWORD TStateContext; 5594 DWORD FeedbackHandler; 5595 DWORD Reserved1; 5596 DWORD64 Reserved2; 5597 PPM_WMI_PERF_STATE State[ANYSIZE_ARRAY]; 5598 } PPM_WMI_PERF_STATES,*PPPM_WMI_PERF_STATES; 5599 5600 typedef struct { 5601 DWORD Count; 5602 DWORD MaxFrequency; 5603 DWORD CurrentState; 5604 DWORD MaxPerfState; 5605 DWORD MinPerfState; 5606 DWORD LowestPerfState; 5607 DWORD ThermalConstraint; 5608 BYTE BusyAdjThreshold; 5609 BYTE PolicyType; 5610 BYTE Type; 5611 BYTE Reserved; 5612 DWORD TimerInterval; 5613 PVOID TargetProcessors; 5614 DWORD PStateHandler; 5615 DWORD PStateContext; 5616 DWORD TStateHandler; 5617 DWORD TStateContext; 5618 DWORD FeedbackHandler; 5619 DWORD Reserved1; 5620 DWORD64 Reserved2; 5621 PPM_WMI_PERF_STATE State[ANYSIZE_ARRAY]; 5622 } PPM_WMI_PERF_STATES_EX,*PPPM_WMI_PERF_STATES_EX; 5623 5624 #define PROC_IDLE_BUCKET_COUNT 6 5625 #define PROC_IDLE_BUCKET_COUNT_EX 16 5626 5627 typedef struct { 5628 DWORD IdleTransitions; 5629 DWORD FailedTransitions; 5630 DWORD InvalidBucketIndex; 5631 DWORD64 TotalTime; 5632 DWORD IdleTimeBuckets[PROC_IDLE_BUCKET_COUNT]; 5633 } PPM_IDLE_STATE_ACCOUNTING,*PPPM_IDLE_STATE_ACCOUNTING; 5634 5635 typedef struct { 5636 DWORD StateCount; 5637 DWORD TotalTransitions; 5638 DWORD ResetCount; 5639 DWORD64 StartTime; 5640 PPM_IDLE_STATE_ACCOUNTING State[ANYSIZE_ARRAY]; 5641 } PPM_IDLE_ACCOUNTING,*PPPM_IDLE_ACCOUNTING; 5642 5643 typedef struct { 5644 DWORD64 TotalTimeUs; 5645 DWORD MinTimeUs; 5646 DWORD MaxTimeUs; 5647 DWORD Count; 5648 } PPM_IDLE_STATE_BUCKET_EX,*PPPM_IDLE_STATE_BUCKET_EX; 5649 5650 typedef struct { 5651 DWORD64 TotalTime; 5652 DWORD IdleTransitions; 5653 DWORD FailedTransitions; 5654 DWORD InvalidBucketIndex; 5655 DWORD MinTimeUs; 5656 DWORD MaxTimeUs; 5657 DWORD CancelledTransitions; 5658 PPM_IDLE_STATE_BUCKET_EX IdleTimeBuckets[PROC_IDLE_BUCKET_COUNT_EX]; 5659 } PPM_IDLE_STATE_ACCOUNTING_EX,*PPPM_IDLE_STATE_ACCOUNTING_EX; 5660 5661 typedef struct { 5662 DWORD StateCount; 5663 DWORD TotalTransitions; 5664 DWORD ResetCount; 5665 DWORD AbortCount; 5666 DWORD64 StartTime; 5667 PPM_IDLE_STATE_ACCOUNTING_EX State[ANYSIZE_ARRAY]; 5668 } PPM_IDLE_ACCOUNTING_EX,*PPPM_IDLE_ACCOUNTING_EX; 5669 5670 #define ACPI_PPM_SOFTWARE_ALL 0xfc 5671 #define ACPI_PPM_SOFTWARE_ANY 0xfd 5672 #define ACPI_PPM_HARDWARE_ALL 0xfe 5673 5674 #define MS_PPM_SOFTWARE_ALL 0x1 5675 5676 #define PPM_FIRMWARE_ACPI1C2 0x1 5677 #define PPM_FIRMWARE_ACPI1C3 0x2 5678 #define PPM_FIRMWARE_ACPI1TSTATES 0x4 5679 #define PPM_FIRMWARE_CST 0x8 5680 #define PPM_FIRMWARE_CSD 0x10 5681 #define PPM_FIRMWARE_PCT 0x20 5682 #define PPM_FIRMWARE_PSS 0x40 5683 #define PPM_FIRMWARE_XPSS 0x80 5684 #define PPM_FIRMWARE_PPC 0x100 5685 #define PPM_FIRMWARE_PSD 0x200 5686 #define PPM_FIRMWARE_PTC 0x400 5687 #define PPM_FIRMWARE_TSS 0x800 5688 #define PPM_FIRMWARE_TPC 0x1000 5689 #define PPM_FIRMWARE_TSD 0x2000 5690 #define PPM_FIRMWARE_PCCH 0x4000 5691 #define PPM_FIRMWARE_PCCP 0x8000 5692 #define PPM_FIRMWARE_OSC 0x10000 5693 #define PPM_FIRMWARE_PDC 0x20000 5694 #define PPM_FIRMWARE_CPC 0x40000 5695 5696 #define PPM_PERFORMANCE_IMPLEMENTATION_NONE 0 5697 #define PPM_PERFORMANCE_IMPLEMENTATION_PSTATES 1 5698 #define PPM_PERFORMANCE_IMPLEMENTATION_PCCV1 2 5699 #define PPM_PERFORMANCE_IMPLEMENTATION_CPPC 3 5700 #define PPM_PERFORMANCE_IMPLEMENTATION_PEP 4 5701 5702 #define PPM_IDLE_IMPLEMENTATION_NONE 0x0 5703 #define PPM_IDLE_IMPLEMENTATION_CSTATES 0x1 5704 #define PPM_IDLE_IMPLEMENTATION_PEP 0x2 5705 5706 typedef struct { 5707 DWORD State; 5708 DWORD Status; 5709 DWORD Latency; 5710 DWORD Speed; 5711 DWORD Processor; 5712 } PPM_PERFSTATE_EVENT,*PPPM_PERFSTATE_EVENT; 5713 5714 typedef struct { 5715 DWORD State; 5716 DWORD Latency; 5717 DWORD Speed; 5718 DWORD64 Processors; 5719 } PPM_PERFSTATE_DOMAIN_EVENT,*PPPM_PERFSTATE_DOMAIN_EVENT; 5720 5721 typedef struct { 5722 DWORD NewState; 5723 DWORD OldState; 5724 DWORD64 Processors; 5725 } PPM_IDLESTATE_EVENT,*PPPM_IDLESTATE_EVENT; 5726 5727 typedef struct { 5728 DWORD ThermalConstraint; 5729 DWORD64 Processors; 5730 } PPM_THERMALCHANGE_EVENT,*PPPM_THERMALCHANGE_EVENT; 5731 typedef struct { 5732 BYTE Mode; 5733 DWORD64 Processors; 5734 } PPM_THERMAL_POLICY_EVENT,*PPPM_THERMAL_POLICY_EVENT; 5735 5736 DEFINE_GUID (PPM_PERFSTATE_CHANGE_GUID, 0xa5b32ddd, 0x7f39, 0x4abc, 0xb8, 0x92, 0x90, 0xe, 0x43, 0xb5, 0x9e, 0xbb); 5737 DEFINE_GUID (PPM_PERFSTATE_DOMAIN_CHANGE_GUID, 0x995e6b7f, 0xd653, 0x497a, 0xb9, 0x78, 0x36, 0xa3, 0xc, 0x29, 0xbf, 0x1); 5738 DEFINE_GUID (PPM_IDLESTATE_CHANGE_GUID, 0x4838fe4f, 0xf71c, 0x4e51, 0x9e, 0xcc, 0x84, 0x30, 0xa7, 0xac, 0x4c, 0x6c); 5739 DEFINE_GUID (PPM_PERFSTATES_DATA_GUID, 0x5708cc20, 0x7d40, 0x4bf4, 0xb4, 0xaa, 0x2b, 0x01, 0x33, 0x8d, 0x01, 0x26); 5740 DEFINE_GUID (PPM_IDLESTATES_DATA_GUID, 0xba138e10, 0xe250, 0x4ad7, 0x86, 0x16, 0xcf, 0x1a, 0x7a, 0xd4, 0x10, 0xe7); 5741 DEFINE_GUID (PPM_IDLE_ACCOUNTING_GUID, 0xe2a26f78, 0xae07, 0x4ee0, 0xa3, 0x0f, 0xce, 0x54, 0xf5, 0x5a, 0x94, 0xcd); 5742 DEFINE_GUID (PPM_IDLE_ACCOUNTING_EX_GUID, 0xd67abd39, 0x81f8, 0x4a5e, 0x81, 0x52, 0x72, 0xe3, 0x1e, 0xc9, 0x12, 0xee); 5743 DEFINE_GUID (PPM_THERMALCONSTRAINT_GUID, 0xa852c2c8, 0x1a4c, 0x423b, 0x8c, 0x2c, 0xf3, 0x0d, 0x82, 0x93, 0x1a, 0x88); 5744 DEFINE_GUID (PPM_PERFMON_PERFSTATE_GUID, 0x7fd18652, 0xcfe, 0x40d2, 0xb0, 0xa1, 0xb, 0x6, 0x6a, 0x87, 0x75, 0x9e); 5745 DEFINE_GUID (PPM_THERMAL_POLICY_CHANGE_GUID, 0x48f377b8, 0x6880, 0x4c7b, 0x8b, 0xdc, 0x38, 0x1, 0x76, 0xc6, 0x65, 0x4d); 5746 5747 typedef struct { 5748 POWER_ACTION Action; 5749 DWORD Flags; 5750 DWORD EventCode; 5751 } POWER_ACTION_POLICY,*PPOWER_ACTION_POLICY; 5752 5753 #define POWER_ACTION_QUERY_ALLOWED 0x00000001 5754 #define POWER_ACTION_UI_ALLOWED 0x00000002 5755 #define POWER_ACTION_OVERRIDE_APPS 0x00000004 5756 #define POWER_ACTION_HIBERBOOT 0x00000008 5757 #define POWER_ACTION_PSEUDO_TRANSITION 0x08000000 5758 #define POWER_ACTION_LIGHTEST_FIRST 0x10000000 5759 #define POWER_ACTION_LOCK_CONSOLE 0x20000000 5760 #define POWER_ACTION_DISABLE_WAKES 0x40000000 5761 #define POWER_ACTION_CRITICAL 0x80000000 5762 5763 #define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001 5764 #define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002 5765 #define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004 5766 #define POWER_USER_NOTIFY_BUTTON 0x00000008 5767 #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 5768 #define POWER_USER_NOTIFY_FORCED_SHUTDOWN 0x00000020 5769 #define POWER_FORCE_TRIGGER_RESET 0x80000000 5770 5771 #define BATTERY_DISCHARGE_FLAGS_EVENTCODE_MASK 0x00000007 5772 #define BATTERY_DISCHARGE_FLAGS_ENABLE 0x80000000 5773 5774 #define DISCHARGE_POLICY_CRITICAL 0 5775 #define DISCHARGE_POLICY_LOW 1 5776 5777 #define NUM_DISCHARGE_POLICIES 4 5778 5779 #define PROCESSOR_IDLESTATE_POLICY_COUNT 0x3 5780 5781 typedef struct { 5782 DWORD TimeCheck; 5783 BYTE DemotePercent; 5784 BYTE PromotePercent; 5785 BYTE Spare[2]; 5786 } PROCESSOR_IDLESTATE_INFO,*PPROCESSOR_IDLESTATE_INFO; 5787 5788 typedef struct { 5789 BOOLEAN Enable; 5790 BYTE Spare[3]; 5791 DWORD BatteryLevel; 5792 POWER_ACTION_POLICY PowerPolicy; 5793 SYSTEM_POWER_STATE MinSystemState; 5794 } SYSTEM_POWER_LEVEL,*PSYSTEM_POWER_LEVEL; 5795 5796 typedef struct _SYSTEM_POWER_POLICY { 5797 DWORD Revision; 5798 POWER_ACTION_POLICY PowerButton; 5799 POWER_ACTION_POLICY SleepButton; 5800 POWER_ACTION_POLICY LidClose; 5801 SYSTEM_POWER_STATE LidOpenWake; 5802 DWORD Reserved; 5803 POWER_ACTION_POLICY Idle; 5804 DWORD IdleTimeout; 5805 BYTE IdleSensitivity; 5806 BYTE DynamicThrottle; 5807 BYTE Spare2[2]; 5808 SYSTEM_POWER_STATE MinSleep; 5809 SYSTEM_POWER_STATE MaxSleep; 5810 SYSTEM_POWER_STATE ReducedLatencySleep; 5811 DWORD WinLogonFlags; 5812 DWORD Spare3; 5813 DWORD DozeS4Timeout; 5814 DWORD BroadcastCapacityResolution; 5815 SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES]; 5816 DWORD VideoTimeout; 5817 BOOLEAN VideoDimDisplay; 5818 DWORD VideoReserved[3]; 5819 DWORD SpindownTimeout; 5820 BOOLEAN OptimizeForPower; 5821 BYTE FanThrottleTolerance; 5822 BYTE ForcedThrottle; 5823 BYTE MinThrottle; 5824 POWER_ACTION_POLICY OverThrottled; 5825 } SYSTEM_POWER_POLICY,*PSYSTEM_POWER_POLICY; 5826 5827 #define PO_THROTTLE_NONE 0 5828 #define PO_THROTTLE_CONSTANT 1 5829 #define PO_THROTTLE_DEGRADE 2 5830 #define PO_THROTTLE_ADAPTIVE 3 5831 #define PO_THROTTLE_MAXIMUM 4 5832 5833 typedef struct { 5834 WORD Revision; 5835 union { 5836 WORD AsWORD; 5837 __C89_NAMELESS struct { 5838 WORD AllowScaling : 1; 5839 WORD Disabled : 1; 5840 WORD Reserved : 14; 5841 } DUMMYSTRUCTNAME; 5842 } Flags; 5843 DWORD PolicyCount; 5844 PROCESSOR_IDLESTATE_INFO Policy[PROCESSOR_IDLESTATE_POLICY_COUNT]; 5845 } PROCESSOR_IDLESTATE_POLICY,*PPROCESSOR_IDLESTATE_POLICY; 5846 5847 typedef struct _PROCESSOR_POWER_POLICY_INFO { 5848 DWORD TimeCheck; 5849 DWORD DemoteLimit; 5850 DWORD PromoteLimit; 5851 BYTE DemotePercent; 5852 BYTE PromotePercent; 5853 BYTE Spare[2]; 5854 DWORD AllowDemotion:1; 5855 DWORD AllowPromotion:1; 5856 DWORD Reserved:30; 5857 } PROCESSOR_POWER_POLICY_INFO,*PPROCESSOR_POWER_POLICY_INFO; 5858 5859 typedef struct _PROCESSOR_POWER_POLICY { 5860 DWORD Revision; 5861 BYTE DynamicThrottle; 5862 BYTE Spare[3]; 5863 DWORD DisableCStates:1; 5864 DWORD Reserved:31; 5865 DWORD PolicyCount; 5866 PROCESSOR_POWER_POLICY_INFO Policy[3]; 5867 } PROCESSOR_POWER_POLICY,*PPROCESSOR_POWER_POLICY; 5868 5869 typedef struct { 5870 DWORD Revision; 5871 BYTE MaxThrottle; 5872 BYTE MinThrottle; 5873 BYTE BusyAdjThreshold; 5874 __C89_NAMELESS union { 5875 BYTE Spare; 5876 union { 5877 BYTE AsBYTE; 5878 __C89_NAMELESS struct { 5879 BYTE NoDomainAccounting : 1; 5880 BYTE IncreasePolicy: 2; 5881 BYTE DecreasePolicy: 2; 5882 BYTE Reserved : 3; 5883 } DUMMYSTRUCTNAME; 5884 } Flags; 5885 } DUMMYUNIONNAME; 5886 DWORD TimeCheck; 5887 DWORD IncreaseTime; 5888 DWORD DecreaseTime; 5889 DWORD IncreasePercent; 5890 DWORD DecreasePercent; 5891 } PROCESSOR_PERFSTATE_POLICY,*PPROCESSOR_PERFSTATE_POLICY; 5892 5893 typedef struct _ADMINISTRATOR_POWER_POLICY { 5894 SYSTEM_POWER_STATE MinSleep; 5895 SYSTEM_POWER_STATE MaxSleep; 5896 DWORD MinVideoTimeout; 5897 DWORD MaxVideoTimeout; 5898 DWORD MinSpindownTimeout; 5899 DWORD MaxSpindownTimeout; 5900 } ADMINISTRATOR_POWER_POLICY,*PADMINISTRATOR_POWER_POLICY; 5901 5902 typedef struct { 5903 BOOLEAN PowerButtonPresent; 5904 BOOLEAN SleepButtonPresent; 5905 BOOLEAN LidPresent; 5906 BOOLEAN SystemS1; 5907 BOOLEAN SystemS2; 5908 BOOLEAN SystemS3; 5909 BOOLEAN SystemS4; 5910 BOOLEAN SystemS5; 5911 BOOLEAN HiberFilePresent; 5912 BOOLEAN FullWake; 5913 BOOLEAN VideoDimPresent; 5914 BOOLEAN ApmPresent; 5915 BOOLEAN UpsPresent; 5916 BOOLEAN ThermalControl; 5917 BOOLEAN ProcessorThrottle; 5918 BYTE ProcessorMinThrottle; 5919 BYTE ProcessorMaxThrottle; 5920 BOOLEAN FastSystemS4; 5921 BYTE spare2[3]; 5922 BOOLEAN DiskSpinDown; 5923 BYTE spare3[8]; 5924 BOOLEAN SystemBatteriesPresent; 5925 BOOLEAN BatteriesAreShortTerm; 5926 BATTERY_REPORTING_SCALE BatteryScale[3]; 5927 SYSTEM_POWER_STATE AcOnLineWake; 5928 SYSTEM_POWER_STATE SoftLidWake; 5929 SYSTEM_POWER_STATE RtcWake; 5930 SYSTEM_POWER_STATE MinDeviceWakeState; 5931 SYSTEM_POWER_STATE DefaultLowLatencyWake; 5932 } SYSTEM_POWER_CAPABILITIES,*PSYSTEM_POWER_CAPABILITIES; 5933 5934 typedef struct { 5935 BOOLEAN AcOnLine; 5936 BOOLEAN BatteryPresent; 5937 BOOLEAN Charging; 5938 BOOLEAN Discharging; 5939 BOOLEAN Spare1[4]; 5940 DWORD MaxCapacity; 5941 DWORD RemainingCapacity; 5942 DWORD Rate; 5943 DWORD EstimatedTime; 5944 DWORD DefaultAlert1; 5945 DWORD DefaultAlert2; 5946 } SYSTEM_BATTERY_STATE,*PSYSTEM_BATTERY_STATE; 5947 5948 #include "pshpack4.h" 5949 5950 #define IMAGE_DOS_SIGNATURE 0x5A4D 5951 #define IMAGE_OS2_SIGNATURE 0x454E 5952 #define IMAGE_OS2_SIGNATURE_LE 0x454C 5953 #define IMAGE_VXD_SIGNATURE 0x454C 5954 #define IMAGE_NT_SIGNATURE 0x00004550 5955 5956 #include "pshpack2.h" 5957 5958 typedef struct _IMAGE_DOS_HEADER { 5959 WORD e_magic; 5960 WORD e_cblp; 5961 WORD e_cp; 5962 WORD e_crlc; 5963 WORD e_cparhdr; 5964 WORD e_minalloc; 5965 WORD e_maxalloc; 5966 WORD e_ss; 5967 WORD e_sp; 5968 WORD e_csum; 5969 WORD e_ip; 5970 WORD e_cs; 5971 WORD e_lfarlc; 5972 WORD e_ovno; 5973 WORD e_res[4]; 5974 WORD e_oemid; 5975 WORD e_oeminfo; 5976 WORD e_res2[10]; 5977 LONG e_lfanew; 5978 } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER; 5979 5980 typedef struct _IMAGE_OS2_HEADER { 5981 WORD ne_magic; 5982 CHAR ne_ver; 5983 CHAR ne_rev; 5984 WORD ne_enttab; 5985 WORD ne_cbenttab; 5986 LONG ne_crc; 5987 WORD ne_flags; 5988 WORD ne_autodata; 5989 WORD ne_heap; 5990 WORD ne_stack; 5991 LONG ne_csip; 5992 LONG ne_sssp; 5993 WORD ne_cseg; 5994 WORD ne_cmod; 5995 WORD ne_cbnrestab; 5996 WORD ne_segtab; 5997 WORD ne_rsrctab; 5998 WORD ne_restab; 5999 WORD ne_modtab; 6000 WORD ne_imptab; 6001 LONG ne_nrestab; 6002 WORD ne_cmovent; 6003 WORD ne_align; 6004 WORD ne_cres; 6005 BYTE ne_exetyp; 6006 BYTE ne_flagsothers; 6007 WORD ne_pretthunks; 6008 WORD ne_psegrefbytes; 6009 WORD ne_swaparea; 6010 WORD ne_expver; 6011 } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER; 6012 6013 typedef struct _IMAGE_VXD_HEADER { 6014 WORD e32_magic; 6015 BYTE e32_border; 6016 BYTE e32_worder; 6017 DWORD e32_level; 6018 WORD e32_cpu; 6019 WORD e32_os; 6020 DWORD e32_ver; 6021 DWORD e32_mflags; 6022 DWORD e32_mpages; 6023 DWORD e32_startobj; 6024 DWORD e32_eip; 6025 DWORD e32_stackobj; 6026 DWORD e32_esp; 6027 DWORD e32_pagesize; 6028 DWORD e32_lastpagesize; 6029 DWORD e32_fixupsize; 6030 DWORD e32_fixupsum; 6031 DWORD e32_ldrsize; 6032 DWORD e32_ldrsum; 6033 DWORD e32_objtab; 6034 DWORD e32_objcnt; 6035 DWORD e32_objmap; 6036 DWORD e32_itermap; 6037 DWORD e32_rsrctab; 6038 DWORD e32_rsrccnt; 6039 DWORD e32_restab; 6040 DWORD e32_enttab; 6041 DWORD e32_dirtab; 6042 DWORD e32_dircnt; 6043 DWORD e32_fpagetab; 6044 DWORD e32_frectab; 6045 DWORD e32_impmod; 6046 DWORD e32_impmodcnt; 6047 DWORD e32_impproc; 6048 DWORD e32_pagesum; 6049 DWORD e32_datapage; 6050 DWORD e32_preload; 6051 DWORD e32_nrestab; 6052 DWORD e32_cbnrestab; 6053 DWORD e32_nressum; 6054 DWORD e32_autodata; 6055 DWORD e32_debuginfo; 6056 DWORD e32_debuglen; 6057 DWORD e32_instpreload; 6058 DWORD e32_instdemand; 6059 DWORD e32_heapsize; 6060 BYTE e32_res3[12]; 6061 DWORD e32_winresoff; 6062 DWORD e32_winreslen; 6063 WORD e32_devid; 6064 WORD e32_ddkver; 6065 } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER; 6066 6067 #include "poppack.h" 6068 6069 typedef struct _IMAGE_FILE_HEADER { 6070 WORD Machine; 6071 WORD NumberOfSections; 6072 DWORD TimeDateStamp; 6073 DWORD PointerToSymbolTable; 6074 DWORD NumberOfSymbols; 6075 WORD SizeOfOptionalHeader; 6076 WORD Characteristics; 6077 } IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER; 6078 6079 #define IMAGE_SIZEOF_FILE_HEADER 20 6080 6081 #define IMAGE_FILE_RELOCS_STRIPPED 0x0001 6082 #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 6083 #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 6084 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 6085 #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 6086 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 6087 #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 6088 #define IMAGE_FILE_32BIT_MACHINE 0x0100 6089 #define IMAGE_FILE_DEBUG_STRIPPED 0x0200 6090 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 6091 #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 6092 #define IMAGE_FILE_SYSTEM 0x1000 6093 #define IMAGE_FILE_DLL 0x2000 6094 #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 6095 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 6096 6097 #define IMAGE_FILE_MACHINE_UNKNOWN 0 6098 #define IMAGE_FILE_MACHINE_I386 0x014c 6099 #define IMAGE_FILE_MACHINE_R3000 0x0162 6100 #define IMAGE_FILE_MACHINE_R4000 0x0166 6101 #define IMAGE_FILE_MACHINE_R10000 0x0168 6102 #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 6103 #define IMAGE_FILE_MACHINE_ALPHA 0x0184 6104 #define IMAGE_FILE_MACHINE_SH3 0x01a2 6105 #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3 6106 #define IMAGE_FILE_MACHINE_SH3E 0x01a4 6107 #define IMAGE_FILE_MACHINE_SH4 0x01a6 6108 #define IMAGE_FILE_MACHINE_SH5 0x01a8 6109 #define IMAGE_FILE_MACHINE_ARM 0x01c0 6110 #define IMAGE_FILE_MACHINE_ARMV7 0x01c4 6111 #define IMAGE_FILE_MACHINE_ARMNT 0x01c4 6112 #define IMAGE_FILE_MACHINE_ARM64 0xaa64 6113 #define IMAGE_FILE_MACHINE_THUMB 0x01c2 6114 #define IMAGE_FILE_MACHINE_AM33 0x01d3 6115 #define IMAGE_FILE_MACHINE_POWERPC 0x01F0 6116 #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 6117 #define IMAGE_FILE_MACHINE_IA64 0x0200 6118 #define IMAGE_FILE_MACHINE_MIPS16 0x0266 6119 #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 6120 #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 6121 #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 6122 #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 6123 #define IMAGE_FILE_MACHINE_TRICORE 0x0520 6124 #define IMAGE_FILE_MACHINE_CEF 0x0CEF 6125 #define IMAGE_FILE_MACHINE_EBC 0x0EBC 6126 #define IMAGE_FILE_MACHINE_AMD64 0x8664 6127 #define IMAGE_FILE_MACHINE_M32R 0x9041 6128 #define IMAGE_FILE_MACHINE_CEE 0xc0ee 6129 6130 typedef struct _IMAGE_DATA_DIRECTORY { 6131 DWORD VirtualAddress; 6132 DWORD Size; 6133 } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; 6134 6135 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 6136 6137 typedef struct _IMAGE_OPTIONAL_HEADER { 6138 6139 WORD Magic; 6140 BYTE MajorLinkerVersion; 6141 BYTE MinorLinkerVersion; 6142 DWORD SizeOfCode; 6143 DWORD SizeOfInitializedData; 6144 DWORD SizeOfUninitializedData; 6145 DWORD AddressOfEntryPoint; 6146 DWORD BaseOfCode; 6147 DWORD BaseOfData; 6148 DWORD ImageBase; 6149 DWORD SectionAlignment; 6150 DWORD FileAlignment; 6151 WORD MajorOperatingSystemVersion; 6152 WORD MinorOperatingSystemVersion; 6153 WORD MajorImageVersion; 6154 WORD MinorImageVersion; 6155 WORD MajorSubsystemVersion; 6156 WORD MinorSubsystemVersion; 6157 DWORD Win32VersionValue; 6158 DWORD SizeOfImage; 6159 DWORD SizeOfHeaders; 6160 DWORD CheckSum; 6161 WORD Subsystem; 6162 WORD DllCharacteristics; 6163 DWORD SizeOfStackReserve; 6164 DWORD SizeOfStackCommit; 6165 DWORD SizeOfHeapReserve; 6166 DWORD SizeOfHeapCommit; 6167 DWORD LoaderFlags; 6168 DWORD NumberOfRvaAndSizes; 6169 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 6170 } IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32; 6171 6172 typedef struct _IMAGE_ROM_OPTIONAL_HEADER { 6173 WORD Magic; 6174 BYTE MajorLinkerVersion; 6175 BYTE MinorLinkerVersion; 6176 DWORD SizeOfCode; 6177 DWORD SizeOfInitializedData; 6178 DWORD SizeOfUninitializedData; 6179 DWORD AddressOfEntryPoint; 6180 DWORD BaseOfCode; 6181 DWORD BaseOfData; 6182 DWORD BaseOfBss; 6183 DWORD GprMask; 6184 DWORD CprMask[4]; 6185 DWORD GpValue; 6186 } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER; 6187 6188 typedef struct _IMAGE_OPTIONAL_HEADER64 { 6189 WORD Magic; 6190 BYTE MajorLinkerVersion; 6191 BYTE MinorLinkerVersion; 6192 DWORD SizeOfCode; 6193 DWORD SizeOfInitializedData; 6194 DWORD SizeOfUninitializedData; 6195 DWORD AddressOfEntryPoint; 6196 DWORD BaseOfCode; 6197 ULONGLONG ImageBase; 6198 DWORD SectionAlignment; 6199 DWORD FileAlignment; 6200 WORD MajorOperatingSystemVersion; 6201 WORD MinorOperatingSystemVersion; 6202 WORD MajorImageVersion; 6203 WORD MinorImageVersion; 6204 WORD MajorSubsystemVersion; 6205 WORD MinorSubsystemVersion; 6206 DWORD Win32VersionValue; 6207 DWORD SizeOfImage; 6208 DWORD SizeOfHeaders; 6209 DWORD CheckSum; 6210 WORD Subsystem; 6211 WORD DllCharacteristics; 6212 ULONGLONG SizeOfStackReserve; 6213 ULONGLONG SizeOfStackCommit; 6214 ULONGLONG SizeOfHeapReserve; 6215 ULONGLONG SizeOfHeapCommit; 6216 DWORD LoaderFlags; 6217 DWORD NumberOfRvaAndSizes; 6218 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 6219 } IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64; 6220 6221 #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 6222 #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 6223 #define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224 6224 #define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240 6225 6226 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b 6227 #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b 6228 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 6229 6230 #ifdef _WIN64 6231 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; 6232 typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; 6233 #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 6234 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC 6235 #else /* _WIN64 */ 6236 typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; 6237 typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; 6238 #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 6239 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC 6240 #endif /* _WIN64 */ 6241 6242 typedef struct _IMAGE_NT_HEADERS64 { 6243 DWORD Signature; 6244 IMAGE_FILE_HEADER FileHeader; 6245 IMAGE_OPTIONAL_HEADER64 OptionalHeader; 6246 } IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64; 6247 6248 typedef struct _IMAGE_NT_HEADERS { 6249 DWORD Signature; 6250 IMAGE_FILE_HEADER FileHeader; 6251 IMAGE_OPTIONAL_HEADER32 OptionalHeader; 6252 } IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32; 6253 6254 typedef struct _IMAGE_ROM_HEADERS { 6255 IMAGE_FILE_HEADER FileHeader; 6256 IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; 6257 } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS; 6258 6259 #ifdef _WIN64 6260 typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; 6261 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; 6262 #else /* _WIN64 */ 6263 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; 6264 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; 6265 #endif /* _WIN64 */ 6266 6267 #define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader)) 6268 6269 #define IMAGE_SUBSYSTEM_UNKNOWN 0 6270 #define IMAGE_SUBSYSTEM_NATIVE 1 6271 #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 6272 #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 6273 #define IMAGE_SUBSYSTEM_OS2_CUI 5 6274 #define IMAGE_SUBSYSTEM_POSIX_CUI 7 6275 #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 6276 #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 6277 #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 6278 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 6279 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 6280 #define IMAGE_SUBSYSTEM_EFI_ROM 13 6281 #define IMAGE_SUBSYSTEM_XBOX 14 6282 #define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16 6283 6284 #define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020 6285 #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 6286 #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 6287 #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 6288 #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 6289 #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 6290 #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 6291 #define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000 6292 #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 6293 #define IMAGE_DLLCHARACTERISTICS_GUARD_CF 0x4000 6294 #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 6295 6296 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 6297 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 6298 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 6299 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 6300 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 6301 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 6302 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6 6303 #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 6304 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 6305 #define IMAGE_DIRECTORY_ENTRY_TLS 9 6306 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 6307 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 6308 #define IMAGE_DIRECTORY_ENTRY_IAT 12 6309 #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 6310 #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 6311 6312 typedef struct ANON_OBJECT_HEADER { 6313 WORD Sig1; 6314 WORD Sig2; 6315 WORD Version; 6316 WORD Machine; 6317 DWORD TimeDateStamp; 6318 CLSID ClassID; 6319 DWORD SizeOfData; 6320 } ANON_OBJECT_HEADER; 6321 6322 typedef struct ANON_OBJECT_HEADER_V2 { 6323 WORD Sig1; 6324 WORD Sig2; 6325 WORD Version; 6326 WORD Machine; 6327 DWORD TimeDateStamp; 6328 CLSID ClassID; 6329 DWORD SizeOfData; 6330 DWORD Flags; 6331 DWORD MetaDataSize; 6332 DWORD MetaDataOffset; 6333 } ANON_OBJECT_HEADER_V2; 6334 6335 typedef struct ANON_OBJECT_HEADER_BIGOBJ { 6336 WORD Sig1; 6337 WORD Sig2; 6338 WORD Version; 6339 WORD Machine; 6340 DWORD TimeDateStamp; 6341 CLSID ClassID; 6342 DWORD SizeOfData; 6343 DWORD Flags; 6344 DWORD MetaDataSize; 6345 DWORD MetaDataOffset; 6346 DWORD NumberOfSections; 6347 DWORD PointerToSymbolTable; 6348 DWORD NumberOfSymbols; 6349 } ANON_OBJECT_HEADER_BIGOBJ; 6350 6351 #define IMAGE_SIZEOF_SHORT_NAME 8 6352 6353 typedef struct _IMAGE_SECTION_HEADER { 6354 BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; 6355 union { 6356 DWORD PhysicalAddress; 6357 DWORD VirtualSize; 6358 } Misc; 6359 DWORD VirtualAddress; 6360 DWORD SizeOfRawData; 6361 DWORD PointerToRawData; 6362 DWORD PointerToRelocations; 6363 DWORD PointerToLinenumbers; 6364 WORD NumberOfRelocations; 6365 WORD NumberOfLinenumbers; 6366 DWORD Characteristics; 6367 } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; 6368 6369 #define IMAGE_SIZEOF_SECTION_HEADER 40 6370 6371 #define IMAGE_SCN_TYPE_NO_PAD 0x00000008 6372 6373 #define IMAGE_SCN_CNT_CODE 0x00000020 6374 #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 6375 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 6376 #define IMAGE_SCN_LNK_OTHER 0x00000100 6377 #define IMAGE_SCN_LNK_INFO 0x00000200 6378 #define IMAGE_SCN_LNK_REMOVE 0x00000800 6379 #define IMAGE_SCN_LNK_COMDAT 0x00001000 6380 #define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000 6381 #define IMAGE_SCN_GPREL 0x00008000 6382 #define IMAGE_SCN_MEM_FARDATA 0x00008000 6383 #define IMAGE_SCN_MEM_PURGEABLE 0x00020000 6384 #define IMAGE_SCN_MEM_16BIT 0x00020000 6385 #define IMAGE_SCN_MEM_LOCKED 0x00040000 6386 #define IMAGE_SCN_MEM_PRELOAD 0x00080000 6387 6388 #define IMAGE_SCN_ALIGN_1BYTES 0x00100000 6389 #define IMAGE_SCN_ALIGN_2BYTES 0x00200000 6390 #define IMAGE_SCN_ALIGN_4BYTES 0x00300000 6391 #define IMAGE_SCN_ALIGN_8BYTES 0x00400000 6392 #define IMAGE_SCN_ALIGN_16BYTES 0x00500000 6393 #define IMAGE_SCN_ALIGN_32BYTES 0x00600000 6394 #define IMAGE_SCN_ALIGN_64BYTES 0x00700000 6395 #define IMAGE_SCN_ALIGN_128BYTES 0x00800000 6396 #define IMAGE_SCN_ALIGN_256BYTES 0x00900000 6397 #define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 6398 #define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 6399 #define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 6400 #define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 6401 #define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 6402 6403 #define IMAGE_SCN_ALIGN_MASK 0x00F00000 6404 6405 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 6406 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 6407 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 6408 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 6409 #define IMAGE_SCN_MEM_SHARED 0x10000000 6410 #define IMAGE_SCN_MEM_EXECUTE 0x20000000 6411 #define IMAGE_SCN_MEM_READ 0x40000000 6412 #define IMAGE_SCN_MEM_WRITE 0x80000000 6413 6414 #define IMAGE_SCN_SCALE_INDEX 0x00000001 6415 6416 #include "pshpack2.h" 6417 typedef struct _IMAGE_SYMBOL { 6418 union { 6419 BYTE ShortName[8]; 6420 struct { 6421 DWORD Short; 6422 DWORD Long; 6423 } Name; 6424 DWORD LongName[2]; 6425 } N; 6426 DWORD Value; 6427 SHORT SectionNumber; 6428 WORD Type; 6429 BYTE StorageClass; 6430 BYTE NumberOfAuxSymbols; 6431 } IMAGE_SYMBOL; 6432 typedef IMAGE_SYMBOL UNALIGNED *PIMAGE_SYMBOL; 6433 6434 #define IMAGE_SIZEOF_SYMBOL 18 6435 6436 typedef struct _IMAGE_SYMBOL_EX { 6437 union { 6438 BYTE ShortName[8]; 6439 struct { 6440 DWORD Short; 6441 DWORD Long; 6442 } Name; 6443 DWORD LongName[2]; 6444 } N; 6445 DWORD Value; 6446 LONG SectionNumber; 6447 WORD Type; 6448 BYTE StorageClass; 6449 BYTE NumberOfAuxSymbols; 6450 } IMAGE_SYMBOL_EX,UNALIGNED *PIMAGE_SYMBOL_EX; 6451 6452 #define IMAGE_SYM_UNDEFINED (SHORT)0 6453 #define IMAGE_SYM_ABSOLUTE (SHORT)-1 6454 #define IMAGE_SYM_DEBUG (SHORT)-2 6455 #define IMAGE_SYM_SECTION_MAX 0xFEFF 6456 #define IMAGE_SYM_SECTION_MAX_EX MAXLONG 6457 6458 #define IMAGE_SYM_TYPE_NULL 0x0000 6459 #define IMAGE_SYM_TYPE_VOID 0x0001 6460 #define IMAGE_SYM_TYPE_CHAR 0x0002 6461 #define IMAGE_SYM_TYPE_SHORT 0x0003 6462 #define IMAGE_SYM_TYPE_INT 0x0004 6463 #define IMAGE_SYM_TYPE_LONG 0x0005 6464 #define IMAGE_SYM_TYPE_FLOAT 0x0006 6465 #define IMAGE_SYM_TYPE_DOUBLE 0x0007 6466 #define IMAGE_SYM_TYPE_STRUCT 0x0008 6467 #define IMAGE_SYM_TYPE_UNION 0x0009 6468 #define IMAGE_SYM_TYPE_ENUM 0x000A 6469 #define IMAGE_SYM_TYPE_MOE 0x000B 6470 #define IMAGE_SYM_TYPE_BYTE 0x000C 6471 #define IMAGE_SYM_TYPE_WORD 0x000D 6472 #define IMAGE_SYM_TYPE_UINT 0x000E 6473 #define IMAGE_SYM_TYPE_DWORD 0x000F 6474 #define IMAGE_SYM_TYPE_PCODE 0x8000 6475 6476 #define IMAGE_SYM_DTYPE_NULL 0 6477 #define IMAGE_SYM_DTYPE_POINTER 1 6478 #define IMAGE_SYM_DTYPE_FUNCTION 2 6479 #define IMAGE_SYM_DTYPE_ARRAY 3 6480 6481 #define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE)-1 6482 #define IMAGE_SYM_CLASS_NULL 0x0000 6483 #define IMAGE_SYM_CLASS_AUTOMATIC 0x0001 6484 #define IMAGE_SYM_CLASS_EXTERNAL 0x0002 6485 #define IMAGE_SYM_CLASS_STATIC 0x0003 6486 #define IMAGE_SYM_CLASS_REGISTER 0x0004 6487 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005 6488 #define IMAGE_SYM_CLASS_LABEL 0x0006 6489 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007 6490 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008 6491 #define IMAGE_SYM_CLASS_ARGUMENT 0x0009 6492 #define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A 6493 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B 6494 #define IMAGE_SYM_CLASS_UNION_TAG 0x000C 6495 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D 6496 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E 6497 #define IMAGE_SYM_CLASS_ENUM_TAG 0x000F 6498 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010 6499 #define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011 6500 #define IMAGE_SYM_CLASS_BIT_FIELD 0x0012 6501 #define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044 6502 #define IMAGE_SYM_CLASS_BLOCK 0x0064 6503 #define IMAGE_SYM_CLASS_FUNCTION 0x0065 6504 #define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066 6505 #define IMAGE_SYM_CLASS_FILE 0x0067 6506 #define IMAGE_SYM_CLASS_SECTION 0x0068 6507 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069 6508 #define IMAGE_SYM_CLASS_CLR_TOKEN 0x006B 6509 6510 #define N_BTMASK 0x000F 6511 #define N_TMASK 0x0030 6512 #define N_TMASK1 0x00C0 6513 #define N_TMASK2 0x00F0 6514 #define N_BTSHFT 4 6515 #define N_TSHIFT 2 6516 6517 #define BTYPE(x) ((x) & N_BTMASK) 6518 6519 #ifndef ISPTR 6520 #define ISPTR(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_POINTER << N_BTSHFT)) 6521 #endif 6522 6523 #ifndef ISFCN 6524 #define ISFCN(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT)) 6525 #endif 6526 6527 #ifndef ISARY 6528 #define ISARY(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT)) 6529 #endif 6530 6531 #ifndef ISTAG 6532 #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG) 6533 #endif 6534 6535 #ifndef INCREF 6536 #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK)) 6537 #endif 6538 #ifndef DECREF 6539 #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK)) 6540 #endif 6541 6542 #include <pshpack2.h> 6543 typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF { 6544 BYTE bAuxType; 6545 BYTE bReserved; 6546 DWORD SymbolTableIndex; 6547 BYTE rgbReserved[12]; 6548 } IMAGE_AUX_SYMBOL_TOKEN_DEF,UNALIGNED *PIMAGE_AUX_SYMBOL_TOKEN_DEF; 6549 #include <poppack.h> 6550 6551 typedef union _IMAGE_AUX_SYMBOL { 6552 struct { 6553 DWORD TagIndex; 6554 union { 6555 struct { 6556 WORD Linenumber; 6557 WORD Size; 6558 } LnSz; 6559 DWORD TotalSize; 6560 } Misc; 6561 union { 6562 struct { 6563 DWORD PointerToLinenumber; 6564 DWORD PointerToNextFunction; 6565 } Function; 6566 struct { 6567 WORD Dimension[4]; 6568 } Array; 6569 } FcnAry; 6570 WORD TvIndex; 6571 } Sym; 6572 struct { 6573 BYTE Name[IMAGE_SIZEOF_SYMBOL]; 6574 } File; 6575 struct { 6576 DWORD Length; 6577 WORD NumberOfRelocations; 6578 WORD NumberOfLinenumbers; 6579 DWORD CheckSum; 6580 SHORT Number; 6581 BYTE Selection; 6582 } Section; 6583 IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; 6584 struct { 6585 DWORD crc; 6586 BYTE rgbReserved[14]; 6587 } CRC; 6588 } IMAGE_AUX_SYMBOL,UNALIGNED *PIMAGE_AUX_SYMBOL; 6589 6590 typedef union _IMAGE_AUX_SYMBOL_EX { 6591 struct { 6592 DWORD WeakDefaultSymIndex; 6593 DWORD WeakSearchType; 6594 BYTE rgbReserved[12]; 6595 } Sym; 6596 struct { 6597 BYTE Name[sizeof (IMAGE_SYMBOL_EX)]; 6598 } File; 6599 struct { 6600 DWORD Length; 6601 WORD NumberOfRelocations; 6602 WORD NumberOfLinenumbers; 6603 DWORD CheckSum; 6604 SHORT Number; 6605 BYTE Selection; 6606 BYTE bReserved; 6607 SHORT HighNumber; 6608 BYTE rgbReserved[2]; 6609 } Section; 6610 __C89_NAMELESS struct { 6611 IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; 6612 BYTE rgbReserved[2]; 6613 }; 6614 struct { 6615 DWORD crc; 6616 BYTE rgbReserved[16]; 6617 } CRC; 6618 } IMAGE_AUX_SYMBOL_EX,UNALIGNED *PIMAGE_AUX_SYMBOL_EX; 6619 6620 #define IMAGE_SIZEOF_AUX_SYMBOL 18 6621 6622 typedef enum IMAGE_AUX_SYMBOL_TYPE { 6623 IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1 6624 } IMAGE_AUX_SYMBOL_TYPE; 6625 6626 #define IMAGE_COMDAT_SELECT_NODUPLICATES 1 6627 #define IMAGE_COMDAT_SELECT_ANY 2 6628 #define IMAGE_COMDAT_SELECT_SAME_SIZE 3 6629 #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 6630 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 6631 #define IMAGE_COMDAT_SELECT_LARGEST 6 6632 #define IMAGE_COMDAT_SELECT_NEWEST 7 6633 6634 #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 6635 #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 6636 #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 6637 6638 typedef struct _IMAGE_RELOCATION { 6639 __C89_NAMELESS union { 6640 DWORD VirtualAddress; 6641 DWORD RelocCount; 6642 } DUMMYUNIONNAME; 6643 DWORD SymbolTableIndex; 6644 WORD Type; 6645 } IMAGE_RELOCATION; 6646 typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION; 6647 6648 #define IMAGE_SIZEOF_RELOCATION 10 6649 6650 #define IMAGE_REL_I386_ABSOLUTE 0x0000 6651 #define IMAGE_REL_I386_DIR16 0x0001 6652 #define IMAGE_REL_I386_REL16 0x0002 6653 #define IMAGE_REL_I386_DIR32 0x0006 6654 #define IMAGE_REL_I386_DIR32NB 0x0007 6655 #define IMAGE_REL_I386_SEG12 0x0009 6656 #define IMAGE_REL_I386_SECTION 0x000A 6657 #define IMAGE_REL_I386_SECREL 0x000B 6658 #define IMAGE_REL_I386_TOKEN 0x000C 6659 #define IMAGE_REL_I386_SECREL7 0x000D 6660 #define IMAGE_REL_I386_REL32 0x0014 6661 6662 #define IMAGE_REL_MIPS_ABSOLUTE 0x0000 6663 #define IMAGE_REL_MIPS_REFHALF 0x0001 6664 #define IMAGE_REL_MIPS_REFWORD 0x0002 6665 #define IMAGE_REL_MIPS_JMPADDR 0x0003 6666 #define IMAGE_REL_MIPS_REFHI 0x0004 6667 #define IMAGE_REL_MIPS_REFLO 0x0005 6668 #define IMAGE_REL_MIPS_GPREL 0x0006 6669 #define IMAGE_REL_MIPS_LITERAL 0x0007 6670 #define IMAGE_REL_MIPS_SECTION 0x000A 6671 #define IMAGE_REL_MIPS_SECREL 0x000B 6672 #define IMAGE_REL_MIPS_SECRELLO 0x000C 6673 #define IMAGE_REL_MIPS_SECRELHI 0x000D 6674 #define IMAGE_REL_MIPS_TOKEN 0x000E 6675 #define IMAGE_REL_MIPS_JMPADDR16 0x0010 6676 #define IMAGE_REL_MIPS_REFWORDNB 0x0022 6677 #define IMAGE_REL_MIPS_PAIR 0x0025 6678 6679 #define IMAGE_REL_ALPHA_ABSOLUTE 0x0000 6680 #define IMAGE_REL_ALPHA_REFLONG 0x0001 6681 #define IMAGE_REL_ALPHA_REFQUAD 0x0002 6682 #define IMAGE_REL_ALPHA_GPREL32 0x0003 6683 #define IMAGE_REL_ALPHA_LITERAL 0x0004 6684 #define IMAGE_REL_ALPHA_LITUSE 0x0005 6685 #define IMAGE_REL_ALPHA_GPDISP 0x0006 6686 #define IMAGE_REL_ALPHA_BRADDR 0x0007 6687 #define IMAGE_REL_ALPHA_HINT 0x0008 6688 #define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009 6689 #define IMAGE_REL_ALPHA_REFHI 0x000A 6690 #define IMAGE_REL_ALPHA_REFLO 0x000B 6691 #define IMAGE_REL_ALPHA_PAIR 0x000C 6692 #define IMAGE_REL_ALPHA_MATCH 0x000D 6693 #define IMAGE_REL_ALPHA_SECTION 0x000E 6694 #define IMAGE_REL_ALPHA_SECREL 0x000F 6695 #define IMAGE_REL_ALPHA_REFLONGNB 0x0010 6696 #define IMAGE_REL_ALPHA_SECRELLO 0x0011 6697 #define IMAGE_REL_ALPHA_SECRELHI 0x0012 6698 #define IMAGE_REL_ALPHA_REFQ3 0x0013 6699 #define IMAGE_REL_ALPHA_REFQ2 0x0014 6700 #define IMAGE_REL_ALPHA_REFQ1 0x0015 6701 #define IMAGE_REL_ALPHA_GPRELLO 0x0016 6702 #define IMAGE_REL_ALPHA_GPRELHI 0x0017 6703 6704 #define IMAGE_REL_PPC_ABSOLUTE 0x0000 6705 #define IMAGE_REL_PPC_ADDR64 0x0001 6706 #define IMAGE_REL_PPC_ADDR32 0x0002 6707 #define IMAGE_REL_PPC_ADDR24 0x0003 6708 #define IMAGE_REL_PPC_ADDR16 0x0004 6709 #define IMAGE_REL_PPC_ADDR14 0x0005 6710 #define IMAGE_REL_PPC_REL24 0x0006 6711 #define IMAGE_REL_PPC_REL14 0x0007 6712 #define IMAGE_REL_PPC_TOCREL16 0x0008 6713 #define IMAGE_REL_PPC_TOCREL14 0x0009 6714 #define IMAGE_REL_PPC_ADDR32NB 0x000A 6715 #define IMAGE_REL_PPC_SECREL 0x000B 6716 #define IMAGE_REL_PPC_SECTION 0x000C 6717 #define IMAGE_REL_PPC_IFGLUE 0x000D 6718 #define IMAGE_REL_PPC_IMGLUE 0x000E 6719 #define IMAGE_REL_PPC_SECREL16 0x000F 6720 #define IMAGE_REL_PPC_REFHI 0x0010 6721 #define IMAGE_REL_PPC_REFLO 0x0011 6722 #define IMAGE_REL_PPC_PAIR 0x0012 6723 #define IMAGE_REL_PPC_SECRELLO 0x0013 6724 #define IMAGE_REL_PPC_SECRELHI 0x0014 6725 #define IMAGE_REL_PPC_GPREL 0x0015 6726 #define IMAGE_REL_PPC_TOKEN 0x0016 6727 #define IMAGE_REL_PPC_TYPEMASK 0x00FF 6728 #define IMAGE_REL_PPC_NEG 0x0100 6729 #define IMAGE_REL_PPC_BRTAKEN 0x0200 6730 #define IMAGE_REL_PPC_BRNTAKEN 0x0400 6731 #define IMAGE_REL_PPC_TOCDEFN 0x0800 6732 6733 #define IMAGE_REL_SH3_ABSOLUTE 0x0000 6734 #define IMAGE_REL_SH3_DIRECT16 0x0001 6735 #define IMAGE_REL_SH3_DIRECT32 0x0002 6736 #define IMAGE_REL_SH3_DIRECT8 0x0003 6737 #define IMAGE_REL_SH3_DIRECT8_WORD 0x0004 6738 #define IMAGE_REL_SH3_DIRECT8_LONG 0x0005 6739 #define IMAGE_REL_SH3_DIRECT4 0x0006 6740 #define IMAGE_REL_SH3_DIRECT4_WORD 0x0007 6741 #define IMAGE_REL_SH3_DIRECT4_LONG 0x0008 6742 #define IMAGE_REL_SH3_PCREL8_WORD 0x0009 6743 #define IMAGE_REL_SH3_PCREL8_LONG 0x000A 6744 #define IMAGE_REL_SH3_PCREL12_WORD 0x000B 6745 #define IMAGE_REL_SH3_STARTOF_SECTION 0x000C 6746 #define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D 6747 #define IMAGE_REL_SH3_SECTION 0x000E 6748 #define IMAGE_REL_SH3_SECREL 0x000F 6749 #define IMAGE_REL_SH3_DIRECT32_NB 0x0010 6750 #define IMAGE_REL_SH3_GPREL4_LONG 0x0011 6751 #define IMAGE_REL_SH3_TOKEN 0x0012 6752 6753 #define IMAGE_REL_SHM_PCRELPT 0x0013 6754 #define IMAGE_REL_SHM_REFLO 0x0014 6755 #define IMAGE_REL_SHM_REFHALF 0x0015 6756 #define IMAGE_REL_SHM_RELLO 0x0016 6757 #define IMAGE_REL_SHM_RELHALF 0x0017 6758 #define IMAGE_REL_SHM_PAIR 0x0018 6759 6760 #define IMAGE_REL_SH_NOMODE 0x8000 6761 6762 #define IMAGE_REL_ARM_ABSOLUTE 0x0000 6763 #define IMAGE_REL_ARM_ADDR32 0x0001 6764 #define IMAGE_REL_ARM_ADDR32NB 0x0002 6765 #define IMAGE_REL_ARM_BRANCH24 0x0003 6766 #define IMAGE_REL_ARM_BRANCH11 0x0004 6767 #define IMAGE_REL_ARM_TOKEN 0x0005 6768 #define IMAGE_REL_ARM_GPREL12 0x0006 6769 #define IMAGE_REL_ARM_GPREL7 0x0007 6770 #define IMAGE_REL_ARM_BLX24 0x0008 6771 #define IMAGE_REL_ARM_BLX11 0x0009 6772 #define IMAGE_REL_ARM_SECTION 0x000E 6773 #define IMAGE_REL_ARM_SECREL 0x000F 6774 #define IMAGE_REL_ARM_MOV32A 0x0010 6775 #define IMAGE_REL_ARM_MOV32 0x0010 6776 #define IMAGE_REL_ARM_MOV32T 0x0011 6777 #define IMAGE_REL_THUMB_MOV32 0x0011 6778 #define IMAGE_REL_ARM_BRANCH20T 0x0012 6779 #define IMAGE_REL_THUMB_BRANCH20 0x0012 6780 #define IMAGE_REL_ARM_BRANCH24T 0x0014 6781 #define IMAGE_REL_THUMB_BRANCH24 0x0014 6782 #define IMAGE_REL_ARM_BLX23T 0x0015 6783 #define IMAGE_REL_THUMB_BLX23 0x0015 6784 6785 #define IMAGE_REL_AM_ABSOLUTE 0x0000 6786 #define IMAGE_REL_AM_ADDR32 0x0001 6787 #define IMAGE_REL_AM_ADDR32NB 0x0002 6788 #define IMAGE_REL_AM_CALL32 0x0003 6789 #define IMAGE_REL_AM_FUNCINFO 0x0004 6790 #define IMAGE_REL_AM_REL32_1 0x0005 6791 #define IMAGE_REL_AM_REL32_2 0x0006 6792 #define IMAGE_REL_AM_SECREL 0x0007 6793 #define IMAGE_REL_AM_SECTION 0x0008 6794 #define IMAGE_REL_AM_TOKEN 0x0009 6795 6796 #define IMAGE_REL_AMD64_ABSOLUTE 0x0000 6797 #define IMAGE_REL_AMD64_ADDR64 0x0001 6798 #define IMAGE_REL_AMD64_ADDR32 0x0002 6799 #define IMAGE_REL_AMD64_ADDR32NB 0x0003 6800 #define IMAGE_REL_AMD64_REL32 0x0004 6801 #define IMAGE_REL_AMD64_REL32_1 0x0005 6802 #define IMAGE_REL_AMD64_REL32_2 0x0006 6803 #define IMAGE_REL_AMD64_REL32_3 0x0007 6804 #define IMAGE_REL_AMD64_REL32_4 0x0008 6805 #define IMAGE_REL_AMD64_REL32_5 0x0009 6806 #define IMAGE_REL_AMD64_SECTION 0x000A 6807 #define IMAGE_REL_AMD64_SECREL 0x000B 6808 #define IMAGE_REL_AMD64_SECREL7 0x000C 6809 #define IMAGE_REL_AMD64_TOKEN 0x000D 6810 #define IMAGE_REL_AMD64_SREL32 0x000E 6811 #define IMAGE_REL_AMD64_PAIR 0x000F 6812 #define IMAGE_REL_AMD64_SSPAN32 0x0010 6813 6814 #define IMAGE_REL_IA64_ABSOLUTE 0x0000 6815 #define IMAGE_REL_IA64_IMM14 0x0001 6816 #define IMAGE_REL_IA64_IMM22 0x0002 6817 #define IMAGE_REL_IA64_IMM64 0x0003 6818 #define IMAGE_REL_IA64_DIR32 0x0004 6819 #define IMAGE_REL_IA64_DIR64 0x0005 6820 #define IMAGE_REL_IA64_PCREL21B 0x0006 6821 #define IMAGE_REL_IA64_PCREL21M 0x0007 6822 #define IMAGE_REL_IA64_PCREL21F 0x0008 6823 #define IMAGE_REL_IA64_GPREL22 0x0009 6824 #define IMAGE_REL_IA64_LTOFF22 0x000A 6825 #define IMAGE_REL_IA64_SECTION 0x000B 6826 #define IMAGE_REL_IA64_SECREL22 0x000C 6827 #define IMAGE_REL_IA64_SECREL64I 0x000D 6828 #define IMAGE_REL_IA64_SECREL32 0x000E 6829 6830 #define IMAGE_REL_IA64_DIR32NB 0x0010 6831 #define IMAGE_REL_IA64_SREL14 0x0011 6832 #define IMAGE_REL_IA64_SREL22 0x0012 6833 #define IMAGE_REL_IA64_SREL32 0x0013 6834 #define IMAGE_REL_IA64_UREL32 0x0014 6835 #define IMAGE_REL_IA64_PCREL60X 0x0015 6836 #define IMAGE_REL_IA64_PCREL60B 0x0016 6837 #define IMAGE_REL_IA64_PCREL60F 0x0017 6838 #define IMAGE_REL_IA64_PCREL60I 0x0018 6839 #define IMAGE_REL_IA64_PCREL60M 0x0019 6840 #define IMAGE_REL_IA64_IMMGPREL64 0x001A 6841 #define IMAGE_REL_IA64_TOKEN 0x001B 6842 #define IMAGE_REL_IA64_GPREL32 0x001C 6843 #define IMAGE_REL_IA64_ADDEND 0x001F 6844 6845 #define IMAGE_REL_CEF_ABSOLUTE 0x0000 6846 #define IMAGE_REL_CEF_ADDR32 0x0001 6847 #define IMAGE_REL_CEF_ADDR64 0x0002 6848 #define IMAGE_REL_CEF_ADDR32NB 0x0003 6849 #define IMAGE_REL_CEF_SECTION 0x0004 6850 #define IMAGE_REL_CEF_SECREL 0x0005 6851 #define IMAGE_REL_CEF_TOKEN 0x0006 6852 6853 #define IMAGE_REL_CEE_ABSOLUTE 0x0000 6854 #define IMAGE_REL_CEE_ADDR32 0x0001 6855 #define IMAGE_REL_CEE_ADDR64 0x0002 6856 #define IMAGE_REL_CEE_ADDR32NB 0x0003 6857 #define IMAGE_REL_CEE_SECTION 0x0004 6858 #define IMAGE_REL_CEE_SECREL 0x0005 6859 #define IMAGE_REL_CEE_TOKEN 0x0006 6860 6861 #define IMAGE_REL_M32R_ABSOLUTE 0x0000 6862 #define IMAGE_REL_M32R_ADDR32 0x0001 6863 #define IMAGE_REL_M32R_ADDR32NB 0x0002 6864 #define IMAGE_REL_M32R_ADDR24 0x0003 6865 #define IMAGE_REL_M32R_GPREL16 0x0004 6866 #define IMAGE_REL_M32R_PCREL24 0x0005 6867 #define IMAGE_REL_M32R_PCREL16 0x0006 6868 #define IMAGE_REL_M32R_PCREL8 0x0007 6869 #define IMAGE_REL_M32R_REFHALF 0x0008 6870 #define IMAGE_REL_M32R_REFHI 0x0009 6871 #define IMAGE_REL_M32R_REFLO 0x000A 6872 #define IMAGE_REL_M32R_PAIR 0x000B 6873 #define IMAGE_REL_M32R_SECTION 0x000C 6874 #define IMAGE_REL_M32R_SECREL32 0x000D 6875 #define IMAGE_REL_M32R_TOKEN 0x000E 6876 6877 #define IMAGE_REL_EBC_ABSOLUTE 0x0000 6878 #define IMAGE_REL_EBC_ADDR32NB 0x0001 6879 #define IMAGE_REL_EBC_REL32 0x0002 6880 #define IMAGE_REL_EBC_SECTION 0x0003 6881 #define IMAGE_REL_EBC_SECREL 0x0004 6882 6883 #define EXT_IMM64(Value,Address,Size,InstPos,ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) 6884 #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) 6885 6886 #define EMARCH_ENC_I17_IMM7B_INST_WORD_X 3 6887 #define EMARCH_ENC_I17_IMM7B_SIZE_X 7 6888 #define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 4 6889 #define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0 6890 6891 #define EMARCH_ENC_I17_IMM9D_INST_WORD_X 3 6892 #define EMARCH_ENC_I17_IMM9D_SIZE_X 9 6893 #define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 18 6894 #define EMARCH_ENC_I17_IMM9D_VAL_POS_X 7 6895 6896 #define EMARCH_ENC_I17_IMM5C_INST_WORD_X 3 6897 #define EMARCH_ENC_I17_IMM5C_SIZE_X 5 6898 #define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 13 6899 #define EMARCH_ENC_I17_IMM5C_VAL_POS_X 16 6900 6901 #define EMARCH_ENC_I17_IC_INST_WORD_X 3 6902 #define EMARCH_ENC_I17_IC_SIZE_X 1 6903 #define EMARCH_ENC_I17_IC_INST_WORD_POS_X 12 6904 #define EMARCH_ENC_I17_IC_VAL_POS_X 21 6905 6906 #define EMARCH_ENC_I17_IMM41a_INST_WORD_X 1 6907 #define EMARCH_ENC_I17_IMM41a_SIZE_X 10 6908 #define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 14 6909 #define EMARCH_ENC_I17_IMM41a_VAL_POS_X 22 6910 6911 #define EMARCH_ENC_I17_IMM41b_INST_WORD_X 1 6912 #define EMARCH_ENC_I17_IMM41b_SIZE_X 8 6913 #define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 24 6914 #define EMARCH_ENC_I17_IMM41b_VAL_POS_X 32 6915 6916 #define EMARCH_ENC_I17_IMM41c_INST_WORD_X 2 6917 #define EMARCH_ENC_I17_IMM41c_SIZE_X 23 6918 #define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0 6919 #define EMARCH_ENC_I17_IMM41c_VAL_POS_X 40 6920 6921 #define EMARCH_ENC_I17_SIGN_INST_WORD_X 3 6922 #define EMARCH_ENC_I17_SIGN_SIZE_X 1 6923 #define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 27 6924 #define EMARCH_ENC_I17_SIGN_VAL_POS_X 63 6925 6926 #define X3_OPCODE_INST_WORD_X 3 6927 #define X3_OPCODE_SIZE_X 4 6928 #define X3_OPCODE_INST_WORD_POS_X 28 6929 #define X3_OPCODE_SIGN_VAL_POS_X 0 6930 6931 #define X3_I_INST_WORD_X 3 6932 #define X3_I_SIZE_X 1 6933 #define X3_I_INST_WORD_POS_X 27 6934 #define X3_I_SIGN_VAL_POS_X 59 6935 6936 #define X3_D_WH_INST_WORD_X 3 6937 #define X3_D_WH_SIZE_X 3 6938 #define X3_D_WH_INST_WORD_POS_X 24 6939 #define X3_D_WH_SIGN_VAL_POS_X 0 6940 6941 #define X3_IMM20_INST_WORD_X 3 6942 #define X3_IMM20_SIZE_X 20 6943 #define X3_IMM20_INST_WORD_POS_X 4 6944 #define X3_IMM20_SIGN_VAL_POS_X 0 6945 6946 #define X3_IMM39_1_INST_WORD_X 2 6947 #define X3_IMM39_1_SIZE_X 23 6948 #define X3_IMM39_1_INST_WORD_POS_X 0 6949 #define X3_IMM39_1_SIGN_VAL_POS_X 36 6950 6951 #define X3_IMM39_2_INST_WORD_X 1 6952 #define X3_IMM39_2_SIZE_X 16 6953 #define X3_IMM39_2_INST_WORD_POS_X 16 6954 #define X3_IMM39_2_SIGN_VAL_POS_X 20 6955 6956 #define X3_P_INST_WORD_X 3 6957 #define X3_P_SIZE_X 4 6958 #define X3_P_INST_WORD_POS_X 0 6959 #define X3_P_SIGN_VAL_POS_X 0 6960 6961 #define X3_TMPLT_INST_WORD_X 0 6962 #define X3_TMPLT_SIZE_X 4 6963 #define X3_TMPLT_INST_WORD_POS_X 0 6964 #define X3_TMPLT_SIGN_VAL_POS_X 0 6965 6966 #define X3_BTYPE_QP_INST_WORD_X 2 6967 #define X3_BTYPE_QP_SIZE_X 9 6968 #define X3_BTYPE_QP_INST_WORD_POS_X 23 6969 #define X3_BTYPE_QP_INST_VAL_POS_X 0 6970 6971 #define X3_EMPTY_INST_WORD_X 1 6972 #define X3_EMPTY_SIZE_X 2 6973 #define X3_EMPTY_INST_WORD_POS_X 14 6974 #define X3_EMPTY_INST_VAL_POS_X 0 6975 6976 typedef struct _IMAGE_LINENUMBER { 6977 union { 6978 DWORD SymbolTableIndex; 6979 DWORD VirtualAddress; 6980 } Type; 6981 WORD Linenumber; 6982 } IMAGE_LINENUMBER; 6983 typedef IMAGE_LINENUMBER UNALIGNED *PIMAGE_LINENUMBER; 6984 6985 #define IMAGE_SIZEOF_LINENUMBER 6 6986 6987 #include "poppack.h" 6988 6989 typedef struct _IMAGE_BASE_RELOCATION { 6990 DWORD VirtualAddress; 6991 DWORD SizeOfBlock; 6992 } IMAGE_BASE_RELOCATION; 6993 typedef IMAGE_BASE_RELOCATION UNALIGNED *PIMAGE_BASE_RELOCATION; 6994 6995 #define IMAGE_SIZEOF_BASE_RELOCATION 8 6996 6997 #define IMAGE_REL_BASED_ABSOLUTE 0 6998 #define IMAGE_REL_BASED_HIGH 1 6999 #define IMAGE_REL_BASED_LOW 2 7000 #define IMAGE_REL_BASED_HIGHLOW 3 7001 #define IMAGE_REL_BASED_HIGHADJ 4 7002 #define IMAGE_REL_BASED_MIPS_JMPADDR 5 7003 #define IMAGE_REL_BASED_ARM_MOV32 5 7004 #define IMAGE_REL_BASED_THUMB_MOV32 7 7005 #define IMAGE_REL_BASED_MIPS_JMPADDR16 9 7006 #define IMAGE_REL_BASED_IA64_IMM64 9 7007 #define IMAGE_REL_BASED_DIR64 10 7008 7009 #define IMAGE_ARCHIVE_START_SIZE 8 7010 #define IMAGE_ARCHIVE_START "!<arch>\n" 7011 #define IMAGE_ARCHIVE_END "`\n" 7012 #define IMAGE_ARCHIVE_PAD "\n" 7013 #define IMAGE_ARCHIVE_LINKER_MEMBER "/ " 7014 #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " 7015 7016 typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { 7017 BYTE Name[16]; 7018 BYTE Date[12]; 7019 BYTE UserID[6]; 7020 BYTE GroupID[6]; 7021 BYTE Mode[8]; 7022 BYTE Size[10]; 7023 BYTE EndHeader[2]; 7024 } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER; 7025 7026 #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 7027 7028 typedef struct _IMAGE_EXPORT_DIRECTORY { 7029 DWORD Characteristics; 7030 DWORD TimeDateStamp; 7031 WORD MajorVersion; 7032 WORD MinorVersion; 7033 DWORD Name; 7034 DWORD Base; 7035 DWORD NumberOfFunctions; 7036 DWORD NumberOfNames; 7037 DWORD AddressOfFunctions; 7038 DWORD AddressOfNames; 7039 DWORD AddressOfNameOrdinals; 7040 } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY; 7041 7042 typedef struct _IMAGE_IMPORT_BY_NAME { 7043 WORD Hint; 7044 CHAR Name[1]; 7045 } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME; 7046 7047 #include "pshpack8.h" 7048 7049 typedef struct _IMAGE_THUNK_DATA64 { 7050 union { 7051 ULONGLONG ForwarderString; 7052 ULONGLONG Function; 7053 ULONGLONG Ordinal; 7054 ULONGLONG AddressOfData; 7055 } u1; 7056 } IMAGE_THUNK_DATA64; 7057 typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64; 7058 7059 #include "poppack.h" 7060 7061 typedef struct _IMAGE_THUNK_DATA32 { 7062 union { 7063 DWORD ForwarderString; 7064 DWORD Function; 7065 DWORD Ordinal; 7066 DWORD AddressOfData; 7067 } u1; 7068 } IMAGE_THUNK_DATA32; 7069 typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32; 7070 7071 #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ull 7072 #define IMAGE_ORDINAL_FLAG32 0x80000000 7073 #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffffull) 7074 #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) 7075 #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64)!=0) 7076 #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32)!=0) 7077 7078 typedef VOID (NTAPI *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved); 7079 7080 typedef struct _IMAGE_TLS_DIRECTORY64 { 7081 ULONGLONG StartAddressOfRawData; 7082 ULONGLONG EndAddressOfRawData; 7083 ULONGLONG AddressOfIndex; 7084 ULONGLONG AddressOfCallBacks; 7085 DWORD SizeOfZeroFill; 7086 DWORD Characteristics; 7087 } IMAGE_TLS_DIRECTORY64; 7088 typedef IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64; 7089 7090 typedef struct _IMAGE_TLS_DIRECTORY32 { 7091 DWORD StartAddressOfRawData; 7092 DWORD EndAddressOfRawData; 7093 DWORD AddressOfIndex; 7094 DWORD AddressOfCallBacks; 7095 DWORD SizeOfZeroFill; 7096 DWORD Characteristics; 7097 } IMAGE_TLS_DIRECTORY32; 7098 typedef IMAGE_TLS_DIRECTORY32 *PIMAGE_TLS_DIRECTORY32; 7099 7100 #ifdef _WIN64 7101 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64 7102 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal) 7103 typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; 7104 typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; 7105 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal) 7106 typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; 7107 typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY; 7108 #else /* _WIN64 */ 7109 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32 7110 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal) 7111 typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; 7112 typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; 7113 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal) 7114 typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; 7115 typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; 7116 #endif /* _WIN64 */ 7117 7118 typedef struct _IMAGE_IMPORT_DESCRIPTOR { 7119 __C89_NAMELESS union { 7120 DWORD Characteristics; 7121 DWORD OriginalFirstThunk; 7122 } DUMMYUNIONNAME; 7123 DWORD TimeDateStamp; 7124 7125 DWORD ForwarderChain; 7126 DWORD Name; 7127 DWORD FirstThunk; 7128 } IMAGE_IMPORT_DESCRIPTOR; 7129 typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR; 7130 7131 typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { 7132 DWORD TimeDateStamp; 7133 WORD OffsetModuleName; 7134 WORD NumberOfModuleForwarderRefs; 7135 } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR; 7136 7137 typedef struct _IMAGE_BOUND_FORWARDER_REF { 7138 DWORD TimeDateStamp; 7139 WORD OffsetModuleName; 7140 WORD Reserved; 7141 } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF; 7142 7143 typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR { 7144 union { 7145 DWORD AllAttributes; 7146 __C89_NAMELESS struct { 7147 DWORD RvaBased : 1; 7148 DWORD ReservedAttributes : 31; 7149 }; 7150 } Attributes; 7151 DWORD DllNameRVA; 7152 DWORD ModuleHandleRVA; 7153 DWORD ImportAddressTableRVA; 7154 DWORD ImportNameTableRVA; 7155 DWORD BoundImportAddressTableRVA; 7156 DWORD UnloadInformationTableRVA; 7157 DWORD TimeDateStamp; 7158 } IMAGE_DELAYLOAD_DESCRIPTOR,*PIMAGE_DELAYLOAD_DESCRIPTOR; 7159 typedef const IMAGE_DELAYLOAD_DESCRIPTOR *PCIMAGE_DELAYLOAD_DESCRIPTOR; 7160 7161 typedef struct _IMAGE_RESOURCE_DIRECTORY { 7162 DWORD Characteristics; 7163 DWORD TimeDateStamp; 7164 WORD MajorVersion; 7165 WORD MinorVersion; 7166 WORD NumberOfNamedEntries; 7167 WORD NumberOfIdEntries; 7168 } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY; 7169 7170 #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 7171 #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 7172 7173 typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { 7174 __C89_NAMELESS union { 7175 __C89_NAMELESS struct { 7176 DWORD NameOffset:31; 7177 DWORD NameIsString:1; 7178 } DUMMYSTRUCTNAME; 7179 DWORD Name; 7180 WORD Id; 7181 } DUMMYUNIONNAME; 7182 __C89_NAMELESS union { 7183 DWORD OffsetToData; 7184 __C89_NAMELESS struct { 7185 DWORD OffsetToDirectory:31; 7186 DWORD DataIsDirectory:1; 7187 } DUMMYSTRUCTNAME2; 7188 } DUMMYUNIONNAME2; 7189 } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY; 7190 7191 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { 7192 WORD Length; 7193 CHAR NameString[1]; 7194 } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING; 7195 7196 typedef struct _IMAGE_RESOURCE_DIR_STRING_U { 7197 WORD Length; 7198 WCHAR NameString[1]; 7199 } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U; 7200 7201 typedef struct _IMAGE_RESOURCE_DATA_ENTRY { 7202 DWORD OffsetToData; 7203 DWORD Size; 7204 DWORD CodePage; 7205 DWORD Reserved; 7206 } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY; 7207 7208 typedef struct { 7209 DWORD Size; 7210 DWORD TimeDateStamp; 7211 WORD MajorVersion; 7212 WORD MinorVersion; 7213 DWORD GlobalFlagsClear; 7214 DWORD GlobalFlagsSet; 7215 DWORD CriticalSectionDefaultTimeout; 7216 DWORD DeCommitFreeBlockThreshold; 7217 DWORD DeCommitTotalFreeThreshold; 7218 DWORD LockPrefixTable; 7219 DWORD MaximumAllocationSize; 7220 DWORD VirtualMemoryThreshold; 7221 DWORD ProcessHeapFlags; 7222 DWORD ProcessAffinityMask; 7223 WORD CSDVersion; 7224 WORD Reserved1; 7225 DWORD EditList; 7226 DWORD SecurityCookie; 7227 DWORD SEHandlerTable; 7228 DWORD SEHandlerCount; 7229 } IMAGE_LOAD_CONFIG_DIRECTORY32,*PIMAGE_LOAD_CONFIG_DIRECTORY32; 7230 7231 typedef struct { 7232 DWORD Size; 7233 DWORD TimeDateStamp; 7234 WORD MajorVersion; 7235 WORD MinorVersion; 7236 DWORD GlobalFlagsClear; 7237 DWORD GlobalFlagsSet; 7238 DWORD CriticalSectionDefaultTimeout; 7239 ULONGLONG DeCommitFreeBlockThreshold; 7240 ULONGLONG DeCommitTotalFreeThreshold; 7241 ULONGLONG LockPrefixTable; 7242 ULONGLONG MaximumAllocationSize; 7243 ULONGLONG VirtualMemoryThreshold; 7244 ULONGLONG ProcessAffinityMask; 7245 DWORD ProcessHeapFlags; 7246 WORD CSDVersion; 7247 WORD Reserved1; 7248 ULONGLONG EditList; 7249 ULONGLONG SecurityCookie; 7250 ULONGLONG SEHandlerTable; 7251 ULONGLONG SEHandlerCount; 7252 } IMAGE_LOAD_CONFIG_DIRECTORY64,*PIMAGE_LOAD_CONFIG_DIRECTORY64; 7253 7254 #ifdef _WIN64 7255 typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; 7256 typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; 7257 #else /* _WIN64 */ 7258 typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; 7259 typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; 7260 #endif /* _WIN64 */ 7261 7262 typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { 7263 DWORD FuncStart; 7264 DWORD PrologLen : 8; 7265 DWORD FuncLen : 22; 7266 DWORD ThirtyTwoBit : 1; 7267 DWORD ExceptionFlag : 1; 7268 } IMAGE_CE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; 7269 7270 typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { 7271 ULONGLONG BeginAddress; 7272 ULONGLONG EndAddress; 7273 ULONGLONG ExceptionHandler; 7274 ULONGLONG HandlerData; 7275 ULONGLONG PrologEndAddress; 7276 } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; 7277 7278 typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { 7279 DWORD BeginAddress; 7280 DWORD EndAddress; 7281 DWORD ExceptionHandler; 7282 DWORD HandlerData; 7283 DWORD PrologEndAddress; 7284 } IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; 7285 7286 typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY { 7287 DWORD BeginAddress; 7288 __C89_NAMELESS union { 7289 DWORD UnwindData; 7290 __C89_NAMELESS struct { 7291 DWORD Flag : 2; 7292 DWORD FunctionLength : 11; 7293 DWORD Ret : 2; 7294 DWORD H : 1; 7295 DWORD Reg : 3; 7296 DWORD R : 1; 7297 DWORD L : 1; 7298 DWORD C : 1; 7299 DWORD StackAdjust : 10; 7300 } DUMMYSTRUCTNAME; 7301 } DUMMYUNIONNAME; 7302 } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY; 7303 7304 typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY { 7305 DWORD BeginAddress; 7306 __C89_NAMELESS union { 7307 DWORD UnwindData; 7308 __C89_NAMELESS struct { 7309 DWORD Flag : 2; 7310 DWORD FunctionLength : 11; 7311 DWORD RegF : 3; 7312 DWORD RegI : 4; 7313 DWORD H : 1; 7314 DWORD CR : 2; 7315 DWORD FrameSize : 9; 7316 } DUMMYSTRUCTNAME; 7317 } DUMMYUNIONNAME; 7318 } IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY; 7319 7320 typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { 7321 DWORD BeginAddress; 7322 DWORD EndAddress; 7323 __C89_NAMELESS union { 7324 DWORD UnwindInfoAddress; 7325 DWORD UnwindData; 7326 } DUMMYUNIONNAME; 7327 } _IMAGE_RUNTIME_FUNCTION_ENTRY,*_PIMAGE_RUNTIME_FUNCTION_ENTRY; 7328 7329 typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY; 7330 typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY; 7331 7332 #if defined (_AXP64_) 7333 typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_AXP64_RUNTIME_FUNCTION_ENTRY; 7334 typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_AXP64_RUNTIME_FUNCTION_ENTRY; 7335 typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7336 typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7337 #elif defined (_ALPHA_) 7338 typedef IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7339 typedef PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7340 #elif defined (__arm__) 7341 typedef IMAGE_ARM_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7342 typedef PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7343 #else 7344 typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; 7345 typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; 7346 #endif 7347 7348 typedef struct _IMAGE_DEBUG_DIRECTORY { 7349 DWORD Characteristics; 7350 DWORD TimeDateStamp; 7351 WORD MajorVersion; 7352 WORD MinorVersion; 7353 DWORD Type; 7354 DWORD SizeOfData; 7355 DWORD AddressOfRawData; 7356 DWORD PointerToRawData; 7357 } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY; 7358 7359 #define IMAGE_DEBUG_TYPE_UNKNOWN 0 7360 #define IMAGE_DEBUG_TYPE_COFF 1 7361 #define IMAGE_DEBUG_TYPE_CODEVIEW 2 7362 #define IMAGE_DEBUG_TYPE_FPO 3 7363 #define IMAGE_DEBUG_TYPE_MISC 4 7364 #define IMAGE_DEBUG_TYPE_EXCEPTION 5 7365 #define IMAGE_DEBUG_TYPE_FIXUP 6 7366 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 7367 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 7368 #define IMAGE_DEBUG_TYPE_BORLAND 9 7369 #define IMAGE_DEBUG_TYPE_RESERVED10 10 7370 #define IMAGE_DEBUG_TYPE_CLSID 11 7371 7372 typedef struct _IMAGE_COFF_SYMBOLS_HEADER { 7373 DWORD NumberOfSymbols; 7374 DWORD LvaToFirstSymbol; 7375 DWORD NumberOfLinenumbers; 7376 DWORD LvaToFirstLinenumber; 7377 DWORD RvaToFirstByteOfCode; 7378 DWORD RvaToLastByteOfCode; 7379 DWORD RvaToFirstByteOfData; 7380 DWORD RvaToLastByteOfData; 7381 } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER; 7382 7383 #define FRAME_FPO 0 7384 #define FRAME_TRAP 1 7385 #define FRAME_TSS 2 7386 #define FRAME_NONFPO 3 7387 7388 typedef struct _FPO_DATA { 7389 DWORD ulOffStart; 7390 DWORD cbProcSize; 7391 DWORD cdwLocals; 7392 WORD cdwParams; 7393 WORD cbProlog : 8; 7394 WORD cbRegs : 3; 7395 WORD fHasSEH : 1; 7396 WORD fUseBP : 1; 7397 WORD reserved : 1; 7398 WORD cbFrame : 2; 7399 } FPO_DATA,*PFPO_DATA; 7400 #define SIZEOF_RFPO_DATA 16 7401 7402 #define IMAGE_DEBUG_MISC_EXENAME 1 7403 7404 typedef struct _IMAGE_DEBUG_MISC { 7405 DWORD DataType; 7406 DWORD Length; 7407 BOOLEAN Unicode; 7408 BYTE Reserved[3]; 7409 BYTE Data[1]; 7410 } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC; 7411 7412 typedef struct _IMAGE_FUNCTION_ENTRY { 7413 DWORD StartingAddress; 7414 DWORD EndingAddress; 7415 DWORD EndOfPrologue; 7416 } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY; 7417 7418 typedef struct _IMAGE_FUNCTION_ENTRY64 { 7419 ULONGLONG StartingAddress; 7420 ULONGLONG EndingAddress; 7421 __C89_NAMELESS union { 7422 ULONGLONG EndOfPrologue; 7423 ULONGLONG UnwindInfoAddress; 7424 } DUMMYUNIONNAME; 7425 } IMAGE_FUNCTION_ENTRY64,*PIMAGE_FUNCTION_ENTRY64; 7426 7427 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { 7428 WORD Signature; 7429 WORD Flags; 7430 WORD Machine; 7431 WORD Characteristics; 7432 DWORD TimeDateStamp; 7433 DWORD CheckSum; 7434 DWORD ImageBase; 7435 DWORD SizeOfImage; 7436 DWORD NumberOfSections; 7437 DWORD ExportedNamesSize; 7438 DWORD DebugDirectorySize; 7439 DWORD SectionAlignment; 7440 DWORD Reserved[2]; 7441 } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER; 7442 7443 typedef struct _NON_PAGED_DEBUG_INFO { 7444 WORD Signature; 7445 WORD Flags; 7446 DWORD Size; 7447 WORD Machine; 7448 WORD Characteristics; 7449 DWORD TimeDateStamp; 7450 DWORD CheckSum; 7451 DWORD SizeOfImage; 7452 ULONGLONG ImageBase; 7453 } NON_PAGED_DEBUG_INFO,*PNON_PAGED_DEBUG_INFO; 7454 7455 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 7456 #define NON_PAGED_DEBUG_SIGNATURE 0x494E 7457 7458 #define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 7459 #define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 7460 7461 typedef struct _ImageArchitectureHeader { 7462 unsigned int AmaskValue: 1; 7463 int Adummy1 : 7; 7464 unsigned int AmaskShift : 8; 7465 int Adummy2 : 16; 7466 DWORD FirstEntryRVA; 7467 } IMAGE_ARCHITECTURE_HEADER,*PIMAGE_ARCHITECTURE_HEADER; 7468 7469 typedef struct _ImageArchitectureEntry { 7470 DWORD FixupInstRVA; 7471 DWORD NewInst; 7472 } IMAGE_ARCHITECTURE_ENTRY,*PIMAGE_ARCHITECTURE_ENTRY; 7473 #include "poppack.h" 7474 7475 #define IMPORT_OBJECT_HDR_SIG2 0xffff 7476 7477 typedef struct IMPORT_OBJECT_HEADER { 7478 WORD Sig1; 7479 WORD Sig2; 7480 WORD Version; 7481 WORD Machine; 7482 DWORD TimeDateStamp; 7483 DWORD SizeOfData; 7484 __C89_NAMELESS union { 7485 WORD Ordinal; 7486 WORD Hint; 7487 }; 7488 WORD Type : 2; 7489 WORD NameType : 3; 7490 WORD Reserved : 11; 7491 } IMPORT_OBJECT_HEADER; 7492 7493 typedef enum IMPORT_OBJECT_TYPE { 7494 IMPORT_OBJECT_CODE = 0,IMPORT_OBJECT_DATA = 1,IMPORT_OBJECT_CONST = 2 7495 } IMPORT_OBJECT_TYPE; 7496 7497 typedef enum IMPORT_OBJECT_NAME_TYPE { 7498 IMPORT_OBJECT_ORDINAL = 0,IMPORT_OBJECT_NAME = 1,IMPORT_OBJECT_NAME_NO_PREFIX = 2,IMPORT_OBJECT_NAME_UNDECORATE = 3 7499 } IMPORT_OBJECT_NAME_TYPE; 7500 7501 #ifndef __IMAGE_COR20_HEADER_DEFINED__ 7502 #define __IMAGE_COR20_HEADER_DEFINED__ 7503 typedef enum ReplacesCorHdrNumericDefines { 7504 COMIMAGE_FLAGS_ILONLY = 0x00000001,COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004, 7505 COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,COR_VERSION_MAJOR_V2 = 2, 7506 COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,COR_VERSION_MINOR = 0,COR_DELETED_NAME_LENGTH = 8,COR_VTABLEGAP_NAME_LENGTH = 8, 7507 NATIVE_TYPE_MAX_CB = 1,COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE= 0xFF,IMAGE_COR_MIH_METHODRVA = 0x01,IMAGE_COR_MIH_EHRVA = 0x02, 7508 IMAGE_COR_MIH_BASICBLOCK = 0x08,COR_VTABLE_32BIT =0x01,COR_VTABLE_64BIT =0x02,COR_VTABLE_FROM_UNMANAGED = 0x04, 7509 COR_VTABLE_CALL_MOST_DERIVED = 0x10,IMAGE_COR_EATJ_THUNK_SIZE = 32,MAX_CLASS_NAME =1024,MAX_PACKAGE_NAME = 1024 7510 } ReplacesCorHdrNumericDefines; 7511 7512 typedef struct IMAGE_COR20_HEADER { 7513 DWORD cb; 7514 WORD MajorRuntimeVersion; 7515 WORD MinorRuntimeVersion; 7516 IMAGE_DATA_DIRECTORY MetaData; 7517 DWORD Flags; 7518 __C89_NAMELESS union { 7519 DWORD EntryPointToken; 7520 DWORD EntryPointRVA; 7521 } DUMMYUNIONNAME; 7522 IMAGE_DATA_DIRECTORY Resources; 7523 IMAGE_DATA_DIRECTORY StrongNameSignature; 7524 IMAGE_DATA_DIRECTORY CodeManagerTable; 7525 IMAGE_DATA_DIRECTORY VTableFixups; 7526 IMAGE_DATA_DIRECTORY ExportAddressTableJumps; 7527 IMAGE_DATA_DIRECTORY ManagedNativeHeader; 7528 } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER; 7529 #endif 7530 7531 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7532 NTSYSAPI WORD NTAPI RtlCaptureStackBackTrace (DWORD FramesToSkip, DWORD FramesToCapture, PVOID *BackTrace, PDWORD BackTraceHash); 7533 NTSYSAPI VOID NTAPI RtlCaptureContext (PCONTEXT ContextRecord); 7534 NTSYSAPI SIZE_T NTAPI RtlCompareMemory (const VOID *Source1, const VOID *Source2, SIZE_T Length); 7535 #if defined (__x86_64__) 7536 #if _WIN32_WINNT >= 0x0602 7537 NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd); 7538 NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount); 7539 NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable); 7540 #endif 7541 NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD64 BaseAddress); 7542 NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7543 NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (DWORD64 TableIdentifier, DWORD64 BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7544 NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7545 NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, DWORD64 ImageBase, DWORD64 ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PDWORD64 EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 7546 #endif 7547 #if defined (__arm__) 7548 #if _WIN32_WINNT >= 0x0602 7549 NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd); 7550 NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount); 7551 NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable); 7552 #endif 7553 NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD BaseAddress); 7554 NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7555 NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (DWORD TableIdentifier, DWORD BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7556 NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7557 NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, DWORD ImageBase, DWORD ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PDWORD EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 7558 #endif 7559 #if defined (__aarch64__) 7560 NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd); 7561 NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount); 7562 NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable); 7563 NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, ULONG_PTR BaseAddress); 7564 NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7565 NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (ULONG_PTR TableIdentifier, ULONG_PTR BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7566 NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7567 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); 7568 #endif 7569 #if defined (__ia64__) 7570 NTSYSAPI BOOLEAN NTAPI RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, ULONGLONG BaseAddress, ULONGLONG TargetGp); 7571 NTSYSAPI BOOLEAN NTAPI RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable); 7572 NTSYSAPI BOOLEAN NTAPI RtlInstallFunctionTableCallback (DWORD64 TableIdentifier, DWORD64 BaseAddress, DWORD Length, DWORD64 TargetGp, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll); 7573 NTSYSAPI VOID NTAPI RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord); 7574 NTSYSAPI ULONGLONG NTAPI RtlVirtualUnwind (ULONGLONG ImageBase, ULONGLONG ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PBOOLEAN InFunction, PFRAME_POINTERS EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 7575 #endif 7576 7577 #endif 7578 7579 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) 7580 NTSYSAPI VOID NTAPI RtlUnwind (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue); 7581 NTSYSAPI PVOID NTAPI RtlPcToFileHeader (PVOID PcValue, PVOID *BaseOfImage); 7582 #if defined (__x86_64__) 7583 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); 7584 NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7585 #endif 7586 #if defined (__arm__) 7587 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONG_PTR ControlPc, PDWORD ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); 7588 NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7589 #endif 7590 #if defined (__aarch64__) 7591 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONG_PTR ControlPc, PULONG_PTR ImageBase, PUNWIND_HISTORY_TABLE HistoryTable); 7592 NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7593 #endif 7594 #if defined (__ia64__) 7595 NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONGLONG ControlPc, PULONGLONG ImageBase, PULONGLONG TargetGp); 7596 NTSYSAPI VOID NTAPI RtlUnwindEx (FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable); 7597 #endif 7598 #endif 7599 7600 #include <string.h> 7601 7602 #ifndef _SLIST_HEADER_ 7603 #define _SLIST_HEADER_ 7604 7605 #if defined (_WIN64) 7606 typedef struct DECLSPEC_ALIGN (16) _SLIST_ENTRY { 7607 struct _SLIST_ENTRY *Next; 7608 } SLIST_ENTRY,*PSLIST_ENTRY; 7609 7610 typedef union DECLSPEC_ALIGN (16) _SLIST_HEADER { 7611 __C89_NAMELESS struct { 7612 ULONGLONG Alignment; 7613 ULONGLONG Region; 7614 } DUMMYSTRUCTNAME; 7615 struct { 7616 ULONGLONG Depth:16; 7617 ULONGLONG Sequence:9; 7618 ULONGLONG NextEntry:39; 7619 ULONGLONG HeaderType:1; 7620 ULONGLONG Init:1; 7621 ULONGLONG Reserved:59; 7622 ULONGLONG Region:3; 7623 } Header8; 7624 struct { 7625 ULONGLONG Depth:16; 7626 ULONGLONG Sequence:48; 7627 ULONGLONG HeaderType:1; 7628 ULONGLONG Reserved:3; 7629 ULONGLONG NextEntry:60; 7630 } HeaderX64; 7631 } SLIST_HEADER,*PSLIST_HEADER; 7632 #else /* _WIN64 */ 7633 typedef struct _SINGLE_LIST_ENTRY SLIST_ENTRY,*PSLIST_ENTRY; 7634 7635 typedef union _SLIST_HEADER { 7636 ULONGLONG Alignment; 7637 __C89_NAMELESS struct { 7638 SLIST_ENTRY Next; 7639 WORD Depth; 7640 WORD Sequence; 7641 } DUMMYSTRUCTNAME; 7642 } SLIST_HEADER,*PSLIST_HEADER; 7643 #endif /* _WIN64 */ 7644 7645 #endif /* _SLIST_HEADER_ */ 7646 7647 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7648 NTSYSAPI VOID NTAPI RtlInitializeSListHead (PSLIST_HEADER ListHead); 7649 NTSYSAPI PSLIST_ENTRY NTAPI RtlFirstEntrySList (const SLIST_HEADER *ListHead); 7650 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPopEntrySList (PSLIST_HEADER ListHead); 7651 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry); 7652 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushListSListEx (PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, DWORD Count); 7653 NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedFlushSList (PSLIST_HEADER ListHead); 7654 NTSYSAPI WORD NTAPI RtlQueryDepthSList (PSLIST_HEADER ListHead); 7655 #endif 7656 7657 #ifndef _RTL_RUN_ONCE_DEF 7658 #define _RTL_RUN_ONCE_DEF 1 7659 7660 typedef struct _RTL_RUN_ONCE { PVOID Ptr; } RTL_RUN_ONCE, *PRTL_RUN_ONCE; 7661 typedef DWORD (WINAPI *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *); 7662 7663 #define RTL_RUN_ONCE_INIT {0} 7664 #define RTL_RUN_ONCE_CHECK_ONLY __MSABI_LONG(1U) 7665 #define RTL_RUN_ONCE_ASYNC __MSABI_LONG(2U) 7666 #define RTL_RUN_ONCE_INIT_FAILED __MSABI_LONG(4U) 7667 #define RTL_RUN_ONCE_CTX_RESERVED_BITS 2 7668 #endif 7669 7670 typedef struct _RTL_BARRIER { 7671 DWORD Reserved1; 7672 DWORD Reserved2; 7673 ULONG_PTR Reserved3[2]; 7674 DWORD Reserved4; 7675 DWORD Reserved5; 7676 } RTL_BARRIER,*PRTL_BARRIER; 7677 7678 #define FAST_FAIL_LEGACY_GS_VIOLATION 0 7679 #define FAST_FAIL_VTGUARD_CHECK_FAILURE 1 7680 #define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 7681 #define FAST_FAIL_CORRUPT_LIST_ENTRY 3 7682 #define FAST_FAIL_INCORRECT_STACK 4 7683 #define FAST_FAIL_INVALID_ARG 5 7684 #define FAST_FAIL_GS_COOKIE_INIT 6 7685 #define FAST_FAIL_FATAL_APP_EXIT 7 7686 #define FAST_FAIL_RANGE_CHECK_FAILURE 8 7687 #define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 7688 #define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xffffffff 7689 7690 /* TODO: Check implementation of 7691 DECLSPEC_NORETURN VOID __fastfail (unsigned int); */ 7692 7693 #define HEAP_NO_SERIALIZE 0x00000001 7694 #define HEAP_GROWABLE 0x00000002 7695 #define HEAP_GENERATE_EXCEPTIONS 0x00000004 7696 #define HEAP_ZERO_MEMORY 0x00000008 7697 #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010 7698 #define HEAP_TAIL_CHECKING_ENABLED 0x00000020 7699 #define HEAP_FREE_CHECKING_ENABLED 0x00000040 7700 #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080 7701 #define HEAP_CREATE_ALIGN_16 0x00010000 7702 #define HEAP_CREATE_ENABLE_TRACING 0x00020000 7703 #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000 7704 #define HEAP_MAXIMUM_TAG 0x0FFF 7705 #define HEAP_PSEUDO_TAG_FLAG 0x8000 7706 #define HEAP_TAG_SHIFT 18 7707 /* Let this macro fail for non-desktop mode. AFAIU this should be better an inline-function ... */ 7708 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7709 #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b) + ((o) << 18))) 7710 #endif 7711 7712 #define IS_TEXT_UNICODE_ASCII16 0x0001 7713 #define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010 7714 7715 #define IS_TEXT_UNICODE_STATISTICS 0x0002 7716 #define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020 7717 7718 #define IS_TEXT_UNICODE_CONTROLS 0x0004 7719 #define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040 7720 7721 #define IS_TEXT_UNICODE_SIGNATURE 0x0008 7722 #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080 7723 7724 #define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100 7725 #define IS_TEXT_UNICODE_ODD_LENGTH 0x0200 7726 #define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400 7727 #define IS_TEXT_UNICODE_NULL_BYTES 0x1000 7728 7729 #define IS_TEXT_UNICODE_UNICODE_MASK 0x000F 7730 #define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0 7731 #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00 7732 #define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000 7733 7734 #define COMPRESSION_FORMAT_NONE (0x0000) 7735 #define COMPRESSION_FORMAT_DEFAULT (0x0001) 7736 #define COMPRESSION_FORMAT_LZNT1 (0x0002) 7737 #define COMPRESSION_FORMAT_XPRESS (0x0003) 7738 #define COMPRESSION_FORMAT_XPRESS_HUFF (0x0004) 7739 #define COMPRESSION_ENGINE_STANDARD (0x0000) 7740 #define COMPRESSION_ENGINE_MAXIMUM (0x0100) 7741 #define COMPRESSION_ENGINE_HIBER (0x0200) 7742 7743 #ifndef __CRT__NO_INLINE 7744 #if _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD) 7745 #define _MEMCPY_INLINE_ memcpy_inline(void * dst,const void * src,size_t size)7746 __CRT_INLINE PVOID __cdecl memcpy_inline(void *dst,const void *src,size_t size) { 7747 if(((char *)dst > (char *)src) && ((char *)dst < ((char *)src + size))) { 7748 __debugbreak(); 7749 } 7750 return memcpy(dst,src,size); 7751 } 7752 #define memcpy memcpy_inline 7753 #endif /* _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD) */ 7754 #endif /* !__CRT__NO_INLINE */ 7755 7756 #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) 7757 #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) 7758 #define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length)) 7759 #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) 7760 #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) 7761 7762 PVOID WINAPI RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt); 7763 7764 #if !defined (__CRT__NO_INLINE) && !defined (__WIDL__) RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt)7765 __CRT_INLINE PVOID WINAPI RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt) { 7766 volatile char *vptr =(volatile char *)ptr; 7767 #ifdef __x86_64 7768 __stosb((PBYTE)((DWORD64)vptr),0,cnt); 7769 #else 7770 while(cnt) { 7771 *vptr++ = 0; 7772 cnt--; 7773 } 7774 #endif /* __x86_64 */ 7775 return ptr; 7776 } 7777 #endif /* !__CRT__NO_INLINE // !__WIDL__ */ 7778 7779 typedef struct _MESSAGE_RESOURCE_ENTRY { 7780 WORD Length; 7781 WORD Flags; 7782 BYTE Text[1]; 7783 } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY; 7784 7785 #define SEF_DACL_AUTO_INHERIT 0x01 7786 #define SEF_SACL_AUTO_INHERIT 0x02 7787 #define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04 7788 #define SEF_AVOID_PRIVILEGE_CHECK 0x08 7789 #define SEF_AVOID_OWNER_CHECK 0x10 7790 #define SEF_DEFAULT_OWNER_FROM_PARENT 0x20 7791 #define SEF_DEFAULT_GROUP_FROM_PARENT 0x40 7792 #define SEF_MACL_NO_WRITE_UP 0x100 7793 #define SEF_MACL_NO_READ_UP 0x200 7794 #define SEF_MACL_NO_EXECUTE_UP 0x400 7795 #define SEF_AVOID_OWNER_RESTRICTION 0x1000 7796 7797 #define SEF_MACL_VALID_FLAGS (SEF_MACL_NO_WRITE_UP | SEF_MACL_NO_READ_UP | SEF_MACL_NO_EXECUTE_UP) 7798 7799 #define MESSAGE_RESOURCE_UNICODE 0x0001 7800 7801 typedef struct _MESSAGE_RESOURCE_BLOCK { 7802 DWORD LowId; 7803 DWORD HighId; 7804 DWORD OffsetToEntries; 7805 } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK; 7806 7807 typedef struct _MESSAGE_RESOURCE_DATA { 7808 DWORD NumberOfBlocks; 7809 MESSAGE_RESOURCE_BLOCK Blocks[1]; 7810 } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA; 7811 7812 typedef struct _OSVERSIONINFOA { 7813 DWORD dwOSVersionInfoSize; 7814 DWORD dwMajorVersion; 7815 DWORD dwMinorVersion; 7816 DWORD dwBuildNumber; 7817 DWORD dwPlatformId; 7818 CHAR szCSDVersion[128]; 7819 } OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA; 7820 7821 typedef struct _OSVERSIONINFOW { 7822 DWORD dwOSVersionInfoSize; 7823 DWORD dwMajorVersion; 7824 DWORD dwMinorVersion; 7825 DWORD dwBuildNumber; 7826 DWORD dwPlatformId; 7827 WCHAR szCSDVersion[128]; 7828 } OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW,RTL_OSVERSIONINFOW,*PRTL_OSVERSIONINFOW; 7829 7830 __MINGW_TYPEDEF_AW(OSVERSIONINFO) 7831 __MINGW_TYPEDEF_AW(POSVERSIONINFO) 7832 __MINGW_TYPEDEF_AW(LPOSVERSIONINFO) 7833 7834 typedef struct _OSVERSIONINFOEXA { 7835 DWORD dwOSVersionInfoSize; 7836 DWORD dwMajorVersion; 7837 DWORD dwMinorVersion; 7838 DWORD dwBuildNumber; 7839 DWORD dwPlatformId; 7840 CHAR szCSDVersion[128]; 7841 WORD wServicePackMajor; 7842 WORD wServicePackMinor; 7843 WORD wSuiteMask; 7844 BYTE wProductType; 7845 BYTE wReserved; 7846 } OSVERSIONINFOEXA,*POSVERSIONINFOEXA,*LPOSVERSIONINFOEXA; 7847 7848 typedef struct _OSVERSIONINFOEXW { 7849 DWORD dwOSVersionInfoSize; 7850 DWORD dwMajorVersion; 7851 DWORD dwMinorVersion; 7852 DWORD dwBuildNumber; 7853 DWORD dwPlatformId; 7854 WCHAR szCSDVersion[128]; 7855 WORD wServicePackMajor; 7856 WORD wServicePackMinor; 7857 WORD wSuiteMask; 7858 BYTE wProductType; 7859 BYTE wReserved; 7860 } OSVERSIONINFOEXW,*POSVERSIONINFOEXW,*LPOSVERSIONINFOEXW,RTL_OSVERSIONINFOEXW,*PRTL_OSVERSIONINFOEXW; 7861 7862 __MINGW_TYPEDEF_AW(OSVERSIONINFOEX) 7863 __MINGW_TYPEDEF_AW(POSVERSIONINFOEX) 7864 __MINGW_TYPEDEF_AW(LPOSVERSIONINFOEX) 7865 7866 #define VER_EQUAL 1 7867 #define VER_GREATER 2 7868 #define VER_GREATER_EQUAL 3 7869 #define VER_LESS 4 7870 #define VER_LESS_EQUAL 5 7871 #define VER_AND 6 7872 #define VER_OR 7 7873 7874 #define VER_CONDITION_MASK 7 7875 #define VER_NUM_BITS_PER_CONDITION_MASK 3 7876 7877 #define VER_MINORVERSION 0x0000001 7878 #define VER_MAJORVERSION 0x0000002 7879 #define VER_BUILDNUMBER 0x0000004 7880 #define VER_PLATFORMID 0x0000008 7881 #define VER_SERVICEPACKMINOR 0x0000010 7882 #define VER_SERVICEPACKMAJOR 0x0000020 7883 #define VER_SUITENAME 0x0000040 7884 #define VER_PRODUCT_TYPE 0x0000080 7885 7886 #define VER_NT_WORKSTATION 0x0000001 7887 #define VER_NT_DOMAIN_CONTROLLER 0x0000002 7888 #define VER_NT_SERVER 0x0000003 7889 7890 #define VER_PLATFORM_WIN32s 0 7891 #define VER_PLATFORM_WIN32_WINDOWS 1 7892 #define VER_PLATFORM_WIN32_NT 2 7893 7894 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7895 #if !defined (_WINBASE_) && !defined (__WIDL__) 7896 NTSYSAPI ULONGLONG NTAPI VerSetConditionMask (ULONGLONG ConditionMask, DWORD TypeMask, BYTE Condition); 7897 #endif 7898 7899 #define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_) = VerSetConditionMask((_m_),(_t_),(_c_))) 7900 7901 #if _WIN32_WINNT >= 0x0600 && !defined (__WIDL__) 7902 NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo (DWORD OSMajorVersion, DWORD OSMinorVersion, DWORD SpMajorVersion, DWORD SpMinorVersion, PDWORD ReturnedProductType); 7903 #endif 7904 #endif 7905 7906 #define RTL_UMS_VERSION (0x0100) 7907 7908 typedef enum _RTL_UMS_THREAD_INFO_CLASS { 7909 UmsThreadInvalidInfoClass = 0, 7910 UmsThreadUserContext, 7911 UmsThreadPriority, 7912 UmsThreadAffinity, 7913 UmsThreadTeb, 7914 UmsThreadIsSuspended, 7915 UmsThreadIsTerminated, 7916 UmsThreadMaxInfoClass 7917 } RTL_UMS_THREAD_INFO_CLASS,*PRTL_UMS_THREAD_INFO_CLASS; 7918 7919 typedef enum _RTL_UMS_SCHEDULER_REASON { 7920 UmsSchedulerStartup = 0, 7921 UmsSchedulerThreadBlocked, 7922 UmsSchedulerThreadYield, 7923 } RTL_UMS_SCHEDULER_REASON,*PRTL_UMS_SCHEDULER_REASON; 7924 7925 typedef VOID NTAPI RTL_UMS_SCHEDULER_ENTRY_POINT (RTL_UMS_SCHEDULER_REASON Reason, ULONG_PTR ActivationPayload, PVOID SchedulerParam); 7926 typedef RTL_UMS_SCHEDULER_ENTRY_POINT *PRTL_UMS_SCHEDULER_ENTRY_POINT; 7927 7928 #if _WIN32_WINNT >= 0x0602 7929 #ifndef IS_VALIDATION_ENABLED 7930 #define IS_VALIDATION_ENABLED(C, L) ((L) & (C)) 7931 #define VRL_PREDEFINED_CLASS_BEGIN (1) 7932 #define VRL_CUSTOM_CLASS_BEGIN (1 << 8) 7933 #define VRL_CLASS_CONSISTENCY (VRL_PREDEFINED_CLASS_BEGIN) 7934 #define VRL_ENABLE_KERNEL_BREAKS (1 << 31) 7935 #endif 7936 7937 #define CTMF_INCLUDE_APPCONTAINER __MSABI_LONG(0x1U) 7938 #define CTMF_VALID_FLAGS (CTMF_INCLUDE_APPCONTAINER) 7939 7940 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 7941 NTSYSAPI DWORD NTAPI RtlCrc32 (const void *Buffer, size_t Size, DWORD InitialCrc); 7942 NTSYSAPI ULONGLONG NTAPI RtlCrc64 (const void *Buffer, size_t Size, ULONGLONG InitialCrc); 7943 #endif 7944 #endif 7945 7946 typedef struct _RTL_CRITICAL_SECTION_DEBUG { 7947 WORD Type; 7948 WORD CreatorBackTraceIndex; 7949 struct _RTL_CRITICAL_SECTION *CriticalSection; 7950 LIST_ENTRY ProcessLocksList; 7951 DWORD EntryCount; 7952 DWORD ContentionCount; 7953 DWORD Flags; 7954 WORD CreatorBackTraceIndexHigh; 7955 WORD SpareWORD; 7956 } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG,RTL_RESOURCE_DEBUG,*PRTL_RESOURCE_DEBUG; 7957 7958 #define RTL_CRITSECT_TYPE 0 7959 #define RTL_RESOURCE_TYPE 1 7960 7961 #define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x01000000 7962 #define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x02000000 7963 #define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x04000000 7964 #define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x08000000 7965 #define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000 7966 #define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xff000000 7967 7968 #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))) 7969 7970 #define RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT 0x00000001 7971 7972 #include <pshpack8.h> 7973 typedef struct _RTL_CRITICAL_SECTION { 7974 PRTL_CRITICAL_SECTION_DEBUG DebugInfo; 7975 LONG LockCount; 7976 LONG RecursionCount; 7977 HANDLE OwningThread; 7978 HANDLE LockSemaphore; 7979 ULONG_PTR SpinCount; 7980 } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION; 7981 #include <poppack.h> 7982 7983 typedef struct _RTL_SRWLOCK { PVOID Ptr; } RTL_SRWLOCK,*PRTL_SRWLOCK; 7984 typedef struct _RTL_CONDITION_VARIABLE { PVOID Ptr; } RTL_CONDITION_VARIABLE,*PRTL_CONDITION_VARIABLE; 7985 7986 #define RTL_SRWLOCK_INIT {0} 7987 #define RTL_CONDITION_VARIABLE_INIT {0} 7988 7989 #define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 0x1 7990 7991 typedef VOID (NTAPI *PAPCFUNC) (ULONG_PTR Parameter); 7992 typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER) (struct _EXCEPTION_POINTERS *ExceptionInfo); 7993 7994 typedef enum _HEAP_INFORMATION_CLASS { 7995 HeapCompatibilityInformation, 7996 HeapEnableTerminationOnCorruption 7997 } HEAP_INFORMATION_CLASS; 7998 7999 typedef VOID (NTAPI *WORKERCALLBACKFUNC) (PVOID); 8000 typedef VOID (NTAPI *APC_CALLBACK_FUNCTION) (DWORD, PVOID, PVOID); 8001 typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN); 8002 typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK; 8003 typedef VOID (NTAPI *PFLS_CALLBACK_FUNCTION) (PVOID lpFlsData); 8004 typedef BOOLEAN (NTAPI *PSECURE_MEMORY_CACHE_CALLBACK) (PVOID Addr, SIZE_T Range); 8005 8006 #define WT_EXECUTEDEFAULT 0x00000000 8007 #define WT_EXECUTEINIOTHREAD 0x00000001 8008 #define WT_EXECUTEINUITHREAD 0x00000002 8009 #define WT_EXECUTEINWAITTHREAD 0x00000004 8010 #define WT_EXECUTEONLYONCE 0x00000008 8011 #define WT_EXECUTEINTIMERTHREAD 0x00000020 8012 #define WT_EXECUTELONGFUNCTION 0x00000010 8013 #define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040 8014 #define WT_EXECUTEINPERSISTENTTHREAD 0x00000080 8015 #define WT_TRANSFER_IMPERSONATION 0x00000100 8016 8017 #define WT_SET_MAX_THREADPOOL_THREADS(Flags, Limit) ((Flags) |= (Limit) << 16) 8018 8019 #define WT_EXECUTEDELETEWAIT 0x00000008 8020 #define WT_EXECUTEINLONGTHREAD 0x00000010 8021 8022 typedef enum _ACTIVATION_CONTEXT_INFO_CLASS { 8023 ActivationContextBasicInformation = 1, 8024 ActivationContextDetailedInformation = 2, 8025 AssemblyDetailedInformationInActivationContext = 3, 8026 FileInformationInAssemblyOfAssemblyInActivationContext = 4, 8027 RunlevelInformationInActivationContext = 5, 8028 CompatibilityInformationInActivationContext = 6, 8029 ActivationContextManifestResourceName = 7, 8030 MaxActivationContextInfoClass, 8031 AssemblyDetailedInformationInActivationContxt = 3, 8032 FileInformationInAssemblyOfAssemblyInActivationContxt = 4 8033 } ACTIVATION_CONTEXT_INFO_CLASS; 8034 8035 typedef enum { 8036 ACTCTX_RUN_LEVEL_UNSPECIFIED = 0, 8037 ACTCTX_RUN_LEVEL_AS_INVOKER, 8038 ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE, 8039 ACTCTX_RUN_LEVEL_REQUIRE_ADMIN, 8040 ACTCTX_RUN_LEVEL_NUMBERS 8041 } ACTCTX_REQUESTED_RUN_LEVEL; 8042 8043 typedef enum { 8044 ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0, 8045 ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS, 8046 ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION 8047 } ACTCTX_COMPATIBILITY_ELEMENT_TYPE; 8048 8049 typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX { 8050 DWORD ulAssemblyIndex; 8051 DWORD ulFileIndexInAssembly; 8052 } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX; 8053 8054 typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION { 8055 DWORD ulFlags; 8056 DWORD ulFilenameLength; 8057 DWORD ulPathLength; 8058 PCWSTR lpFileName; 8059 PCWSTR lpFilePath; 8060 } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION; 8061 8062 typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { 8063 DWORD ulFlags; 8064 DWORD ulEncodedAssemblyIdentityLength; 8065 DWORD ulManifestPathType; 8066 DWORD ulManifestPathLength; 8067 LARGE_INTEGER liManifestLastWriteTime; 8068 DWORD ulPolicyPathType; 8069 DWORD ulPolicyPathLength; 8070 LARGE_INTEGER liPolicyLastWriteTime; 8071 DWORD ulMetadataSatelliteRosterIndex; 8072 DWORD ulManifestVersionMajor; 8073 DWORD ulManifestVersionMinor; 8074 DWORD ulPolicyVersionMajor; 8075 DWORD ulPolicyVersionMinor; 8076 DWORD ulAssemblyDirectoryNameLength; 8077 PCWSTR lpAssemblyEncodedAssemblyIdentity; 8078 PCWSTR lpAssemblyManifestPath; 8079 PCWSTR lpAssemblyPolicyPath; 8080 PCWSTR lpAssemblyDirectoryName; 8081 DWORD ulFileCount; 8082 } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 8083 8084 typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION { 8085 DWORD ulFlags; 8086 ACTCTX_REQUESTED_RUN_LEVEL RunLevel; 8087 DWORD UiAccess; 8088 } ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION,*PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; 8089 8090 typedef struct _COMPATIBILITY_CONTEXT_ELEMENT { 8091 GUID Id; 8092 ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type; 8093 } COMPATIBILITY_CONTEXT_ELEMENT,*PCOMPATIBILITY_CONTEXT_ELEMENT; 8094 8095 /*Vista: {e2011457-1546-43c5-a5fe-008deee3d3f0}*/ 8096 /*Seven: {35138b9a-5d96-4fbd-8e2d-a2440225f93a}*/ 8097 typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION { 8098 DWORD ElementCount; 8099 COMPATIBILITY_CONTEXT_ELEMENT Elements[]; 8100 } ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION,*PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION; 8101 8102 #define MAX_SUPPORTED_OS_NUM (4) 8103 8104 typedef struct _SUPPORTED_OS_INFO { 8105 WORD OsCount; 8106 WORD MitigationExist; 8107 WORD OsList[MAX_SUPPORTED_OS_NUM]; 8108 } SUPPORTED_OS_INFO,*PSUPPORTED_OS_INFO; 8109 8110 typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION { 8111 DWORD dwFlags; 8112 DWORD ulFormatVersion; 8113 DWORD ulAssemblyCount; 8114 DWORD ulRootManifestPathType; 8115 DWORD ulRootManifestPathChars; 8116 DWORD ulRootConfigurationPathType; 8117 DWORD ulRootConfigurationPathChars; 8118 DWORD ulAppDirPathType; 8119 DWORD ulAppDirPathChars; 8120 PCWSTR lpRootManifestPath; 8121 PCWSTR lpRootConfigurationPath; 8122 PCWSTR lpAppDirPath; 8123 } ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION; 8124 8125 typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX; 8126 typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION; 8127 typedef const struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 8128 typedef const struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; 8129 typedef const struct _COMPATIBILITY_CONTEXT_ELEMENT *PCCOMPATIBILITY_CONTEXT_ELEMENT; 8130 typedef const struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION *PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION; 8131 typedef const struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION; 8132 8133 #define ACTIVATIONCONTEXTINFOCLASS ACTIVATION_CONTEXT_INFO_CLASS 8134 8135 #define ACTIVATION_CONTEXT_PATH_TYPE_NONE (1) 8136 #define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE (2) 8137 #define ACTIVATION_CONTEXT_PATH_TYPE_URL (3) 8138 #define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF (4) 8139 8140 #define _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION _ASSEMBLY_FILE_DETAILED_INFORMATION 8141 #define ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION 8142 #define PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PASSEMBLY_FILE_DETAILED_INFORMATION 8143 #define PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PCASSEMBLY_FILE_DETAILED_INFORMATION 8144 #define INVALID_OS_COUNT (0xffff) 8145 8146 #define CREATE_BOUNDARY_DESCRIPTOR_ADD_APPCONTAINER_SID 0x1 8147 8148 typedef VOID (NTAPI *RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); 8149 typedef VOID (NTAPI *RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved); 8150 typedef VOID (NTAPI *RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK)(PVOID AllocationBase,SIZE_T AllocationSize); 8151 8152 typedef struct _RTL_VERIFIER_THUNK_DESCRIPTOR { 8153 PCHAR ThunkName; 8154 PVOID ThunkOldAddress; 8155 PVOID ThunkNewAddress; 8156 } RTL_VERIFIER_THUNK_DESCRIPTOR,*PRTL_VERIFIER_THUNK_DESCRIPTOR; 8157 8158 typedef struct _RTL_VERIFIER_DLL_DESCRIPTOR { 8159 PWCHAR DllName; 8160 DWORD DllFlags; 8161 PVOID DllAddress; 8162 PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks; 8163 } RTL_VERIFIER_DLL_DESCRIPTOR,*PRTL_VERIFIER_DLL_DESCRIPTOR; 8164 8165 typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR { 8166 DWORD Length; 8167 PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls; 8168 RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback; 8169 RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback; 8170 PWSTR VerifierImage; 8171 DWORD VerifierFlags; 8172 DWORD VerifierDebug; 8173 PVOID RtlpGetStackTraceAddress; 8174 PVOID RtlpDebugPageHeapCreate; 8175 PVOID RtlpDebugPageHeapDestroy; 8176 RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback; 8177 } RTL_VERIFIER_PROVIDER_DESCRIPTOR,*PRTL_VERIFIER_PROVIDER_DESCRIPTOR; 8178 8179 #define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001 8180 #define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002 8181 #define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004 8182 #define RTL_VRF_FLG_STACK_CHECKS 0x00000008 8183 #define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010 8184 #define RTL_VRF_FLG_TLS_CHECKS 0x00000020 8185 #define RTL_VRF_FLG_DIRTY_STACKS 0x00000040 8186 #define RTL_VRF_FLG_RPC_CHECKS 0x00000080 8187 #define RTL_VRF_FLG_COM_CHECKS 0x00000100 8188 #define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200 8189 #define RTL_VRF_FLG_RACE_CHECKS 0x00000400 8190 #define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800 8191 #define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000 8192 #define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000 8193 #define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000 8194 #define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000 8195 #define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000 8196 #define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000 8197 #define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000 8198 #define RTL_VRF_FLG_LOCK_CHECKS 0x00040000 8199 8200 #define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000 8201 #define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000 8202 #define APPLICATION_VERIFIER_NO_BREAK 0x20000000 8203 #define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000 8204 8205 #define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001 8206 #define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002 8207 #define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003 8208 #define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004 8209 #define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005 8210 #define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006 8211 #define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007 8212 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008 8213 #define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009 8214 #define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A 8215 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B 8216 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C 8217 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D 8218 #define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E 8219 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F 8220 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010 8221 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011 8222 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012 8223 #define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013 8224 #define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014 8225 8226 #define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100 8227 #define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101 8228 #define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102 8229 8230 #define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200 8231 #define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201 8232 #define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202 8233 #define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203 8234 #define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204 8235 #define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205 8236 #define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206 8237 #define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207 8238 #define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208 8239 #define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209 8240 #define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210 8241 #define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211 8242 #define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212 8243 #define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213 8244 #define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214 8245 8246 #define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300 8247 #define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301 8248 #define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302 8249 #define APPLICATION_VERIFIER_NULL_HANDLE 0x0303 8250 #define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304 8251 8252 #define APPLICATION_VERIFIER_COM_ERROR 0x0400 8253 #define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401 8254 #define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402 8255 #define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403 8256 #define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404 8257 #define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405 8258 #define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406 8259 #define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407 8260 #define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408 8261 #define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409 8262 #define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A 8263 #define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B 8264 #define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C 8265 #define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D 8266 #define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E 8267 #define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F 8268 #define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410 8269 8270 #define APPLICATION_VERIFIER_RPC_ERROR 0x0500 8271 8272 #define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600 8273 #define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601 8274 #define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602 8275 #define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603 8276 #define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604 8277 #define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605 8278 #define APPLICATION_VERIFIER_PROBE_NULL 0x0606 8279 #define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607 8280 #define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618 8281 8282 #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)); } 8283 8284 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); 8285 NTSYSAPI DWORD NTAPI RtlSetHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength); 8286 NTSYSAPI DWORD NTAPI RtlQueryHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength,PSIZE_T ReturnLength); 8287 DWORD NTAPI RtlMultipleAllocateHeap(PVOID HeapHandle,DWORD Flags,SIZE_T Size,DWORD Count,PVOID *Array); 8288 DWORD NTAPI RtlMultipleFreeHeap(PVOID HeapHandle,DWORD Flags,DWORD Count,PVOID *Array); 8289 8290 typedef struct _HARDWARE_COUNTER_DATA { 8291 HARDWARE_COUNTER_TYPE Type; 8292 DWORD Reserved; 8293 DWORD64 Value; 8294 } HARDWARE_COUNTER_DATA,*PHARDWARE_COUNTER_DATA; 8295 8296 typedef struct _PERFORMANCE_DATA { 8297 WORD Size; 8298 BYTE Version; 8299 BYTE HwCountersCount; 8300 DWORD ContextSwitchCount; 8301 DWORD64 WaitReasonBitMap; 8302 DWORD64 CycleTime; 8303 DWORD RetryCount; 8304 DWORD Reserved; 8305 HARDWARE_COUNTER_DATA HwCounters[MAX_HW_COUNTERS]; 8306 } PERFORMANCE_DATA,*PPERFORMANCE_DATA; 8307 8308 #define PERFORMANCE_DATA_VERSION 1 8309 8310 #define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x00000001 8311 #define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x00000002 8312 8313 #define DLL_PROCESS_ATTACH 1 8314 #define DLL_THREAD_ATTACH 2 8315 #define DLL_THREAD_DETACH 3 8316 #define DLL_PROCESS_DETACH 0 8317 #define DLL_PROCESS_VERIFIER 4 8318 8319 #define EVENTLOG_SEQUENTIAL_READ 0x0001 8320 #define EVENTLOG_SEEK_READ 0x0002 8321 #define EVENTLOG_FORWARDS_READ 0x0004 8322 #define EVENTLOG_BACKWARDS_READ 0x0008 8323 8324 #define EVENTLOG_SUCCESS 0x0000 8325 #define EVENTLOG_ERROR_TYPE 0x0001 8326 #define EVENTLOG_WARNING_TYPE 0x0002 8327 #define EVENTLOG_INFORMATION_TYPE 0x0004 8328 #define EVENTLOG_AUDIT_SUCCESS 0x0008 8329 #define EVENTLOG_AUDIT_FAILURE 0x0010 8330 8331 #define EVENTLOG_START_PAIRED_EVENT 0x0001 8332 #define EVENTLOG_END_PAIRED_EVENT 0x0002 8333 #define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004 8334 #define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008 8335 #define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010 8336 8337 typedef struct _EVENTLOGRECORD { 8338 DWORD Length; 8339 DWORD Reserved; 8340 DWORD RecordNumber; 8341 DWORD TimeGenerated; 8342 DWORD TimeWritten; 8343 DWORD EventID; 8344 WORD EventType; 8345 WORD NumStrings; 8346 WORD EventCategory; 8347 WORD ReservedFlags; 8348 DWORD ClosingRecordNumber; 8349 DWORD StringOffset; 8350 DWORD UserSidLength; 8351 DWORD UserSidOffset; 8352 DWORD DataLength; 8353 DWORD DataOffset; 8354 } EVENTLOGRECORD,*PEVENTLOGRECORD; 8355 8356 #define MAXLOGICALLOGNAMESIZE 256 8357 8358 typedef struct _EVENTSFORLOGFILE { 8359 DWORD ulSize; 8360 WCHAR szLogicalLogFile[MAXLOGICALLOGNAMESIZE]; 8361 DWORD ulNumRecords; 8362 EVENTLOGRECORD pEventLogRecords[]; 8363 } EVENTSFORLOGFILE,*PEVENTSFORLOGFILE; 8364 8365 typedef struct _PACKEDEVENTINFO { 8366 DWORD ulSize; 8367 DWORD ulNumEventsForLogFile; 8368 DWORD ulOffsets[]; 8369 } PACKEDEVENTINFO,*PPACKEDEVENTINFO; 8370 8371 #define KEY_QUERY_VALUE (0x0001) 8372 #define KEY_SET_VALUE (0x0002) 8373 #define KEY_CREATE_SUB_KEY (0x0004) 8374 #define KEY_ENUMERATE_SUB_KEYS (0x0008) 8375 #define KEY_NOTIFY (0x0010) 8376 #define KEY_CREATE_LINK (0x0020) 8377 #define KEY_WOW64_64KEY (0x0100) 8378 #define KEY_WOW64_32KEY (0x0200) 8379 #define KEY_WOW64_RES (0x0300) 8380 8381 #define KEY_READ ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE)) 8382 #define KEY_WRITE ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)) 8383 #define KEY_EXECUTE ((KEY_READ) & (~SYNCHRONIZE)) 8384 #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)) 8385 #define REG_OPTION_RESERVED (__MSABI_LONG(0x00000000)) 8386 8387 #define REG_OPTION_NON_VOLATILE (__MSABI_LONG(0x00000000)) 8388 #define REG_OPTION_VOLATILE (__MSABI_LONG(0x00000001)) 8389 #define REG_OPTION_CREATE_LINK (__MSABI_LONG(0x00000002)) 8390 #define REG_OPTION_BACKUP_RESTORE (__MSABI_LONG(0x00000004)) 8391 #define REG_OPTION_OPEN_LINK (__MSABI_LONG(0x00000008)) 8392 #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) 8393 8394 #define REG_CREATED_NEW_KEY (__MSABI_LONG(0x00000001)) 8395 #define REG_OPENED_EXISTING_KEY (__MSABI_LONG(0x00000002)) 8396 8397 #define REG_STANDARD_FORMAT 1 8398 #define REG_LATEST_FORMAT 2 8399 #define REG_NO_COMPRESSION 4 8400 8401 #define REG_WHOLE_HIVE_VOLATILE (__MSABI_LONG(0x00000001)) 8402 #define REG_REFRESH_HIVE (__MSABI_LONG(0x00000002)) 8403 #define REG_NO_LAZY_FLUSH (__MSABI_LONG(0x00000004)) 8404 #define REG_FORCE_RESTORE (__MSABI_LONG(0x00000008)) 8405 #define REG_APP_HIVE (__MSABI_LONG(0x00000010)) 8406 #define REG_PROCESS_PRIVATE (__MSABI_LONG(0x00000020)) 8407 #define REG_START_JOURNAL (__MSABI_LONG(0x00000040)) 8408 #define REG_HIVE_EXACT_FILE_GROWTH (__MSABI_LONG(0x00000080)) 8409 #define REG_HIVE_NO_RM (__MSABI_LONG(0x00000100)) 8410 #define REG_HIVE_SINGLE_LOG (__MSABI_LONG(0x00000200)) 8411 #define REG_BOOT_HIVE (__MSABI_LONG(0x00000400)) 8412 8413 #define REG_FORCE_UNLOAD 1 8414 8415 #define REG_NOTIFY_CHANGE_NAME (__MSABI_LONG(0x00000001)) 8416 #define REG_NOTIFY_CHANGE_ATTRIBUTES (__MSABI_LONG(0x00000002)) 8417 #define REG_NOTIFY_CHANGE_LAST_SET (__MSABI_LONG(0x00000004)) 8418 #define REG_NOTIFY_CHANGE_SECURITY (__MSABI_LONG(0x00000008)) 8419 #define REG_NOTIFY_THREAD_AGNOSTIC (__MSABI_LONG(0x10000000)) 8420 8421 #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) 8422 8423 #define REG_NONE (0) 8424 #define REG_SZ (1) 8425 #define REG_EXPAND_SZ (2) 8426 #define REG_BINARY (3) 8427 #define REG_DWORD (4) 8428 #define REG_DWORD_LITTLE_ENDIAN (4) 8429 #define REG_DWORD_BIG_ENDIAN (5) 8430 #define REG_LINK (6) 8431 #define REG_MULTI_SZ (7) 8432 #define REG_RESOURCE_LIST (8) 8433 #define REG_FULL_RESOURCE_DESCRIPTOR (9) 8434 #define REG_RESOURCE_REQUIREMENTS_LIST (10) 8435 #define REG_QWORD (11) 8436 #define REG_QWORD_LITTLE_ENDIAN (11) 8437 8438 #define SERVICE_KERNEL_DRIVER 0x00000001 8439 #define SERVICE_FILE_SYSTEM_DRIVER 0x00000002 8440 #define SERVICE_ADAPTER 0x00000004 8441 #define SERVICE_RECOGNIZER_DRIVER 0x00000008 8442 8443 #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER) 8444 8445 #define SERVICE_WIN32_OWN_PROCESS 0x00000010 8446 #define SERVICE_WIN32_SHARE_PROCESS 0x00000020 8447 #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS) 8448 8449 #define SERVICE_INTERACTIVE_PROCESS 0x00000100 8450 8451 #define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS) 8452 8453 #define SERVICE_BOOT_START 0x00000000 8454 #define SERVICE_SYSTEM_START 0x00000001 8455 #define SERVICE_AUTO_START 0x00000002 8456 #define SERVICE_DEMAND_START 0x00000003 8457 #define SERVICE_DISABLED 0x00000004 8458 8459 #define SERVICE_ERROR_IGNORE 0x00000000 8460 #define SERVICE_ERROR_NORMAL 0x00000001 8461 #define SERVICE_ERROR_SEVERE 0x00000002 8462 #define SERVICE_ERROR_CRITICAL 0x00000003 8463 8464 typedef enum _CM_SERVICE_NODE_TYPE { 8465 DriverType = SERVICE_KERNEL_DRIVER,FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, 8466 Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,AdapterType = SERVICE_ADAPTER,RecognizerType = SERVICE_RECOGNIZER_DRIVER 8467 } SERVICE_NODE_TYPE; 8468 8469 typedef enum _CM_SERVICE_LOAD_TYPE { 8470 BootLoad = SERVICE_BOOT_START,SystemLoad = SERVICE_SYSTEM_START,AutoLoad = SERVICE_AUTO_START,DemandLoad = SERVICE_DEMAND_START, 8471 DisableLoad = SERVICE_DISABLED 8472 } SERVICE_LOAD_TYPE; 8473 8474 typedef enum _CM_ERROR_CONTROL_TYPE { 8475 IgnoreError = SERVICE_ERROR_IGNORE,NormalError = SERVICE_ERROR_NORMAL,SevereError = SERVICE_ERROR_SEVERE,CriticalError = SERVICE_ERROR_CRITICAL 8476 } SERVICE_ERROR_TYPE; 8477 8478 #define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001 8479 #define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002 8480 #define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004 8481 #define CM_SERVICE_SD_DISK_BOOT_LOAD 0x00000008 8482 #define CM_SERVICE_USB3_DISK_BOOT_LOAD 0x00000010 8483 #define CM_SERVICE_MEASURED_BOOT_LOAD 0x00000020 8484 #define CM_SERVICE_VERIFIER_BOOT_LOAD 0x00000040 8485 #define CM_SERVICE_WINPE_BOOT_LOAD 0x00000080 8486 8487 #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) 8488 8489 #ifndef _NTDDTAPE_WINNT_ 8490 #define _NTDDTAPE_WINNT_ 8491 8492 #define TAPE_ERASE_SHORT __MSABI_LONG(0) 8493 #define TAPE_ERASE_LONG __MSABI_LONG(1) 8494 8495 typedef struct _TAPE_ERASE { 8496 DWORD Type; 8497 BOOLEAN Immediate; 8498 } TAPE_ERASE,*PTAPE_ERASE; 8499 8500 #define TAPE_LOAD __MSABI_LONG(0) 8501 #define TAPE_UNLOAD __MSABI_LONG(1) 8502 #define TAPE_TENSION __MSABI_LONG(2) 8503 #define TAPE_LOCK __MSABI_LONG(3) 8504 #define TAPE_UNLOCK __MSABI_LONG(4) 8505 #define TAPE_FORMAT __MSABI_LONG(5) 8506 8507 typedef struct _TAPE_PREPARE { 8508 DWORD Operation; 8509 BOOLEAN Immediate; 8510 } TAPE_PREPARE,*PTAPE_PREPARE; 8511 8512 #define TAPE_SETMARKS __MSABI_LONG(0) 8513 #define TAPE_FILEMARKS __MSABI_LONG(1) 8514 #define TAPE_SHORT_FILEMARKS __MSABI_LONG(2) 8515 #define TAPE_LONG_FILEMARKS __MSABI_LONG(3) 8516 8517 typedef struct _TAPE_WRITE_MARKS { 8518 DWORD Type; 8519 DWORD Count; 8520 BOOLEAN Immediate; 8521 } TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS; 8522 8523 #define TAPE_ABSOLUTE_POSITION __MSABI_LONG(0) 8524 #define TAPE_LOGICAL_POSITION __MSABI_LONG(1) 8525 #define TAPE_PSEUDO_LOGICAL_POSITION __MSABI_LONG(2) 8526 8527 typedef struct _TAPE_GET_POSITION { 8528 DWORD Type; 8529 DWORD Partition; 8530 LARGE_INTEGER Offset; 8531 } TAPE_GET_POSITION,*PTAPE_GET_POSITION; 8532 8533 #define TAPE_REWIND __MSABI_LONG(0) 8534 #define TAPE_ABSOLUTE_BLOCK __MSABI_LONG(1) 8535 #define TAPE_LOGICAL_BLOCK __MSABI_LONG(2) 8536 #define TAPE_PSEUDO_LOGICAL_BLOCK __MSABI_LONG(3) 8537 #define TAPE_SPACE_END_OF_DATA __MSABI_LONG(4) 8538 #define TAPE_SPACE_RELATIVE_BLOCKS __MSABI_LONG(5) 8539 #define TAPE_SPACE_FILEMARKS __MSABI_LONG(6) 8540 #define TAPE_SPACE_SEQUENTIAL_FMKS __MSABI_LONG(7) 8541 #define TAPE_SPACE_SETMARKS __MSABI_LONG(8) 8542 #define TAPE_SPACE_SEQUENTIAL_SMKS __MSABI_LONG(9) 8543 8544 typedef struct _TAPE_SET_POSITION { 8545 DWORD Method; 8546 DWORD Partition; 8547 LARGE_INTEGER Offset; 8548 BOOLEAN Immediate; 8549 } TAPE_SET_POSITION,*PTAPE_SET_POSITION; 8550 8551 #define TAPE_DRIVE_FIXED 0x00000001 8552 #define TAPE_DRIVE_SELECT 0x00000002 8553 #define TAPE_DRIVE_INITIATOR 0x00000004 8554 8555 #define TAPE_DRIVE_ERASE_SHORT 0x00000010 8556 #define TAPE_DRIVE_ERASE_LONG 0x00000020 8557 #define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040 8558 #define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080 8559 #define TAPE_DRIVE_TAPE_CAPACITY 0x00000100 8560 #define TAPE_DRIVE_TAPE_REMAINING 0x00000200 8561 #define TAPE_DRIVE_FIXED_BLOCK 0x00000400 8562 #define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800 8563 #define TAPE_DRIVE_WRITE_PROTECT 0x00001000 8564 #define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000 8565 #define TAPE_DRIVE_ECC 0x00010000 8566 #define TAPE_DRIVE_COMPRESSION 0x00020000 8567 #define TAPE_DRIVE_PADDING 0x00040000 8568 #define TAPE_DRIVE_REPORT_SMKS 0x00080000 8569 #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000 8570 #define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000 8571 #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000 8572 #define TAPE_DRIVE_EJECT_MEDIA 0x01000000 8573 #define TAPE_DRIVE_CLEAN_REQUESTS 0x02000000 8574 #define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x04000000 8575 8576 #define TAPE_DRIVE_RESERVED_BIT 0x80000000 8577 8578 #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001 8579 #define TAPE_DRIVE_TENSION 0x80000002 8580 #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004 8581 #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008 8582 #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010 8583 8584 #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020 8585 #define TAPE_DRIVE_TENSION_IMMED 0x80000040 8586 #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080 8587 8588 #define TAPE_DRIVE_SET_ECC 0x80000100 8589 #define TAPE_DRIVE_SET_COMPRESSION 0x80000200 8590 #define TAPE_DRIVE_SET_PADDING 0x80000400 8591 #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800 8592 8593 #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000 8594 #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000 8595 #define TAPE_DRIVE_LOGICAL_BLK 0x80004000 8596 #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000 8597 8598 #define TAPE_DRIVE_END_OF_DATA 0x80010000 8599 #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000 8600 #define TAPE_DRIVE_FILEMARKS 0x80040000 8601 #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000 8602 8603 #define TAPE_DRIVE_SETMARKS 0x80100000 8604 #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000 8605 #define TAPE_DRIVE_REVERSE_POSITION 0x80400000 8606 #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000 8607 8608 #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000 8609 #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000 8610 #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000 8611 #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 8612 8613 #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 8614 #define TAPE_DRIVE_FORMAT 0xA0000000 8615 #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000 8616 #define TAPE_DRIVE_HIGH_FEATURES 0x80000000 8617 8618 typedef struct _TAPE_GET_DRIVE_PARAMETERS { 8619 BOOLEAN ECC; 8620 BOOLEAN Compression; 8621 BOOLEAN DataPadding; 8622 BOOLEAN ReportSetmarks; 8623 DWORD DefaultBlockSize; 8624 DWORD MaximumBlockSize; 8625 DWORD MinimumBlockSize; 8626 DWORD MaximumPartitionCount; 8627 DWORD FeaturesLow; 8628 DWORD FeaturesHigh; 8629 DWORD EOTWarningZoneSize; 8630 } TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS; 8631 8632 typedef struct _TAPE_SET_DRIVE_PARAMETERS { 8633 BOOLEAN ECC; 8634 BOOLEAN Compression; 8635 BOOLEAN DataPadding; 8636 BOOLEAN ReportSetmarks; 8637 DWORD EOTWarningZoneSize; 8638 } TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS; 8639 8640 typedef struct _TAPE_GET_MEDIA_PARAMETERS { 8641 LARGE_INTEGER Capacity; 8642 LARGE_INTEGER Remaining; 8643 DWORD BlockSize; 8644 DWORD PartitionCount; 8645 BOOLEAN WriteProtected; 8646 } TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS; 8647 8648 typedef struct _TAPE_SET_MEDIA_PARAMETERS { 8649 DWORD BlockSize; 8650 } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS; 8651 8652 #define TAPE_FIXED_PARTITIONS __MSABI_LONG(0) 8653 #define TAPE_SELECT_PARTITIONS __MSABI_LONG(1) 8654 #define TAPE_INITIATOR_PARTITIONS __MSABI_LONG(2) 8655 8656 typedef struct _TAPE_CREATE_PARTITION { 8657 DWORD Method; 8658 DWORD Count; 8659 DWORD Size; 8660 } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION; 8661 8662 #define TAPE_QUERY_DRIVE_PARAMETERS __MSABI_LONG(0) 8663 #define TAPE_QUERY_MEDIA_CAPACITY __MSABI_LONG(1) 8664 #define TAPE_CHECK_FOR_DRIVE_PROBLEM __MSABI_LONG(2) 8665 #define TAPE_QUERY_IO_ERROR_DATA __MSABI_LONG(3) 8666 #define TAPE_QUERY_DEVICE_ERROR_DATA __MSABI_LONG(4) 8667 8668 typedef struct _TAPE_WMI_OPERATIONS { 8669 DWORD Method; 8670 DWORD DataBufferSize; 8671 PVOID DataBuffer; 8672 } TAPE_WMI_OPERATIONS,*PTAPE_WMI_OPERATIONS; 8673 8674 typedef enum _TAPE_DRIVE_PROBLEM_TYPE { 8675 TapeDriveProblemNone,TapeDriveReadWriteWarning,TapeDriveReadWriteError,TapeDriveReadWarning,TapeDriveWriteWarning,TapeDriveReadError,TapeDriveWriteError,TapeDriveHardwareError,TapeDriveUnsupportedMedia,TapeDriveScsiConnectionError,TapeDriveTimetoClean,TapeDriveCleanDriveNow,TapeDriveMediaLifeExpired,TapeDriveSnappedTape 8676 } TAPE_DRIVE_PROBLEM_TYPE; 8677 #endif 8678 8679 typedef DWORD TP_VERSION,*PTP_VERSION; 8680 typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE,*PTP_CALLBACK_INSTANCE; 8681 typedef VOID (NTAPI *PTP_SIMPLE_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context); 8682 typedef struct _TP_POOL TP_POOL,*PTP_POOL; 8683 8684 typedef enum _TP_CALLBACK_PRIORITY { 8685 TP_CALLBACK_PRIORITY_HIGH, 8686 TP_CALLBACK_PRIORITY_NORMAL, 8687 TP_CALLBACK_PRIORITY_LOW, 8688 TP_CALLBACK_PRIORITY_INVALID, 8689 TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID 8690 } TP_CALLBACK_PRIORITY; 8691 8692 typedef struct _TP_POOL_STACK_INFORMATION { 8693 SIZE_T StackReserve; 8694 SIZE_T StackCommit; 8695 } TP_POOL_STACK_INFORMATION, *PTP_POOL_STACK_INFORMATION; 8696 8697 typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP,*PTP_CLEANUP_GROUP; 8698 typedef VOID (NTAPI *PTP_CLEANUP_GROUP_CANCEL_CALLBACK) (PVOID ObjectContext, PVOID CleanupContext); 8699 8700 #if _WIN32_WINNT >= 0x0601 8701 typedef struct _TP_CALLBACK_ENVIRON_V3 { 8702 TP_VERSION Version; 8703 PTP_POOL Pool; 8704 PTP_CLEANUP_GROUP CleanupGroup; 8705 PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback; 8706 PVOID RaceDll; 8707 struct _ACTIVATION_CONTEXT *ActivationContext; 8708 PTP_SIMPLE_CALLBACK FinalizationCallback; 8709 union { 8710 DWORD Flags; 8711 struct { 8712 DWORD LongFunction : 1; 8713 DWORD Persistent : 1; 8714 DWORD Private : 30; 8715 } s; 8716 } u; 8717 TP_CALLBACK_PRIORITY CallbackPriority; 8718 DWORD Size; 8719 } TP_CALLBACK_ENVIRON_V3; 8720 typedef TP_CALLBACK_ENVIRON_V3 TP_CALLBACK_ENVIRON, *PTP_CALLBACK_ENVIRON; 8721 #else 8722 typedef struct _TP_CALLBACK_ENVIRON_V1 { 8723 TP_VERSION Version; 8724 PTP_POOL Pool; 8725 PTP_CLEANUP_GROUP CleanupGroup; 8726 PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback; 8727 PVOID RaceDll; 8728 struct _ACTIVATION_CONTEXT *ActivationContext; 8729 PTP_SIMPLE_CALLBACK FinalizationCallback; 8730 union { 8731 DWORD Flags; 8732 struct { 8733 DWORD LongFunction : 1; 8734 DWORD Persistent : 1; 8735 DWORD Private : 30; 8736 } s; 8737 } u; 8738 } TP_CALLBACK_ENVIRON_V1; 8739 typedef TP_CALLBACK_ENVIRON_V1 TP_CALLBACK_ENVIRON,*PTP_CALLBACK_ENVIRON; 8740 #endif 8741 8742 typedef struct _TP_WORK TP_WORK,*PTP_WORK; 8743 typedef VOID (NTAPI *PTP_WORK_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work); 8744 typedef struct _TP_TIMER TP_TIMER,*PTP_TIMER; 8745 typedef VOID (NTAPI *PTP_TIMER_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_TIMER Timer); 8746 typedef DWORD TP_WAIT_RESULT; 8747 typedef struct _TP_WAIT TP_WAIT,*PTP_WAIT; 8748 typedef VOID (NTAPI *PTP_WAIT_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult); 8749 typedef struct _TP_IO TP_IO,*PTP_IO; 8750 8751 #if !defined (__WIDL__) TpInitializeCallbackEnviron(PTP_CALLBACK_ENVIRON cbe)8752 FORCEINLINE VOID TpInitializeCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { 8753 cbe->Pool = NULL; 8754 cbe->CleanupGroup = NULL; 8755 cbe->CleanupGroupCancelCallback = NULL; 8756 cbe->RaceDll = NULL; 8757 cbe->ActivationContext = NULL; 8758 cbe->FinalizationCallback = NULL; 8759 cbe->u.Flags = 0; 8760 #if _WIN32_WINNT < 0x0601 8761 cbe->Version = 1; 8762 #else 8763 cbe->Version = 3; 8764 cbe->CallbackPriority = TP_CALLBACK_PRIORITY_NORMAL; 8765 cbe->Size = sizeof (TP_CALLBACK_ENVIRON); 8766 #endif 8767 } TpSetCallbackThreadpool(PTP_CALLBACK_ENVIRON cbe,PTP_POOL pool)8768 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)8769 FORCEINLINE VOID TpSetCallbackCleanupGroup (PTP_CALLBACK_ENVIRON cbe, PTP_CLEANUP_GROUP cleanup_group, PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb) { 8770 cbe->CleanupGroup = cleanup_group; 8771 cbe->CleanupGroupCancelCallback = cleanup_group_cb; 8772 } TpSetCallbackActivationContext(PTP_CALLBACK_ENVIRON cbe,struct _ACTIVATION_CONTEXT * actx)8773 FORCEINLINE VOID TpSetCallbackActivationContext (PTP_CALLBACK_ENVIRON cbe, struct _ACTIVATION_CONTEXT *actx) { cbe->ActivationContext = actx; } TpSetCallbackNoActivationContext(PTP_CALLBACK_ENVIRON cbe)8774 FORCEINLINE VOID TpSetCallbackNoActivationContext (PTP_CALLBACK_ENVIRON cbe) { cbe->ActivationContext = (struct _ACTIVATION_CONTEXT *) (LONG_PTR) -1; } TpSetCallbackLongFunction(PTP_CALLBACK_ENVIRON cbe)8775 FORCEINLINE VOID TpSetCallbackLongFunction (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.LongFunction = 1; } TpSetCallbackRaceWithDll(PTP_CALLBACK_ENVIRON cbe,PVOID h)8776 FORCEINLINE VOID TpSetCallbackRaceWithDll (PTP_CALLBACK_ENVIRON cbe, PVOID h) { cbe->RaceDll = h; } TpSetCallbackFinalizationCallback(PTP_CALLBACK_ENVIRON cbe,PTP_SIMPLE_CALLBACK fini_cb)8777 FORCEINLINE VOID TpSetCallbackFinalizationCallback (PTP_CALLBACK_ENVIRON cbe, PTP_SIMPLE_CALLBACK fini_cb) { cbe->FinalizationCallback = fini_cb; } 8778 #if _WIN32_WINNT >= 0x0601 TpSetCallbackPriority(PTP_CALLBACK_ENVIRON cbe,TP_CALLBACK_PRIORITY prio)8779 FORCEINLINE VOID TpSetCallbackPriority (PTP_CALLBACK_ENVIRON cbe, TP_CALLBACK_PRIORITY prio) { cbe->CallbackPriority = prio; } 8780 #endif TpSetCallbackPersistent(PTP_CALLBACK_ENVIRON cbe)8781 FORCEINLINE VOID TpSetCallbackPersistent (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.Persistent = 1; } TpDestroyCallbackEnviron(PTP_CALLBACK_ENVIRON cbe)8782 FORCEINLINE VOID TpDestroyCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { UNREFERENCED_PARAMETER (cbe); } 8783 #endif 8784 8785 #if defined(__x86_64) && !defined (__WIDL__) 8786 struct _TEB *NtCurrentTeb(VOID); 8787 PVOID GetCurrentFiber(VOID); 8788 PVOID GetFiberData(VOID); NtCurrentTeb(VOID)8789 FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB,Self)); } GetCurrentFiber(VOID)8790 FORCEINLINE PVOID GetCurrentFiber(VOID) { return(PVOID)__readgsqword(FIELD_OFFSET(NT_TIB,FiberData)); } GetFiberData(VOID)8791 FORCEINLINE PVOID GetFiberData(VOID) { 8792 return *(PVOID *)GetCurrentFiber(); 8793 } 8794 #endif /* __x86_64 */ 8795 8796 #if defined (__arm__) && !defined (__WIDL__) 8797 struct _TEB *NtCurrentTeb (VOID); 8798 PVOID GetCurrentFiber (VOID); 8799 PVOID GetFiberData (VOID); NtCurrentTeb(VOID)8800 FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb; 8801 __asm ("mrc p15, 0, %0, c13, c0, 2" : "=r" (teb)); 8802 return teb; } GetCurrentFiber(VOID)8803 FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); } GetFiberData(VOID)8804 FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); } 8805 #endif /* arm */ 8806 8807 #if defined (__aarch64__) && !defined (__WIDL__) 8808 struct _TEB *NtCurrentTeb (VOID); 8809 PVOID GetCurrentFiber (VOID); 8810 PVOID GetFiberData (VOID); NtCurrentTeb(VOID)8811 FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb; 8812 __asm ("mov %0, x18" : "=r" (teb)); 8813 return teb; } GetCurrentFiber(VOID)8814 FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); } GetFiberData(VOID)8815 FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); } 8816 #endif /* aarch64 */ 8817 8818 #ifndef _NTTMAPI_ 8819 #define _NTTMAPI_ 8820 8821 #ifdef __cplusplus 8822 extern "C" { 8823 #endif 8824 8825 #include <ktmtypes.h> 8826 8827 #define TRANSACTIONMANAGER_QUERY_INFORMATION 0x00001 8828 #define TRANSACTIONMANAGER_SET_INFORMATION 0x00002 8829 #define TRANSACTIONMANAGER_RECOVER 0x00004 8830 #define TRANSACTIONMANAGER_RENAME 0x00008 8831 #define TRANSACTIONMANAGER_CREATE_RM 0x00010 8832 #define TRANSACTIONMANAGER_BIND_TRANSACTION 0x00020 8833 8834 #define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTIONMANAGER_QUERY_INFORMATION) 8835 #define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTIONMANAGER_SET_INFORMATION | TRANSACTIONMANAGER_RECOVER | TRANSACTIONMANAGER_RENAME | TRANSACTIONMANAGER_CREATE_RM) 8836 #define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE) 8837 #define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTIONMANAGER_GENERIC_READ | TRANSACTIONMANAGER_GENERIC_WRITE | TRANSACTIONMANAGER_GENERIC_EXECUTE | TRANSACTIONMANAGER_BIND_TRANSACTION) 8838 8839 #define TRANSACTION_QUERY_INFORMATION (0x0001) 8840 #define TRANSACTION_SET_INFORMATION (0x0002) 8841 #define TRANSACTION_ENLIST (0x0004) 8842 #define TRANSACTION_COMMIT (0x0008) 8843 #define TRANSACTION_ROLLBACK (0x0010) 8844 #define TRANSACTION_PROPAGATE (0x0020) 8845 #define TRANSACTION_RIGHT_RESERVED1 (0x0040) 8846 8847 #define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTION_QUERY_INFORMATION | SYNCHRONIZE) 8848 #define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_COMMIT | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE) 8849 #define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | TRANSACTION_COMMIT | TRANSACTION_ROLLBACK | SYNCHRONIZE) 8850 #define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTION_GENERIC_READ | TRANSACTION_GENERIC_WRITE | TRANSACTION_GENERIC_EXECUTE) 8851 #define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ | STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE) 8852 8853 #define RESOURCEMANAGER_QUERY_INFORMATION (0x0001) 8854 #define RESOURCEMANAGER_SET_INFORMATION (0x0002) 8855 #define RESOURCEMANAGER_RECOVER (0x0004) 8856 #define RESOURCEMANAGER_ENLIST (0x0008) 8857 #define RESOURCEMANAGER_GET_NOTIFICATION (0x0010) 8858 #define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020) 8859 #define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040) 8860 8861 #define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | RESOURCEMANAGER_QUERY_INFORMATION | SYNCHRONIZE) 8862 #define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | RESOURCEMANAGER_SET_INFORMATION | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_REGISTER_PROTOCOL | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE) 8863 #define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE) 8864 #define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | RESOURCEMANAGER_GENERIC_READ | RESOURCEMANAGER_GENERIC_WRITE | RESOURCEMANAGER_GENERIC_EXECUTE) 8865 8866 #define ENLISTMENT_QUERY_INFORMATION 1 8867 #define ENLISTMENT_SET_INFORMATION 2 8868 #define ENLISTMENT_RECOVER 4 8869 #define ENLISTMENT_SUBORDINATE_RIGHTS 8 8870 #define ENLISTMENT_SUPERIOR_RIGHTS 0x10 8871 8872 #define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ | ENLISTMENT_QUERY_INFORMATION) 8873 #define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | ENLISTMENT_SET_INFORMATION | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS) 8874 #define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS) 8875 #define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | ENLISTMENT_GENERIC_READ | ENLISTMENT_GENERIC_WRITE | ENLISTMENT_GENERIC_EXECUTE) 8876 8877 typedef enum _TRANSACTION_OUTCOME { 8878 TransactionOutcomeUndetermined = 1, 8879 TransactionOutcomeCommitted, 8880 TransactionOutcomeAborted, 8881 } TRANSACTION_OUTCOME; 8882 8883 typedef enum _TRANSACTION_STATE { 8884 TransactionStateNormal = 1, 8885 TransactionStateIndoubt, 8886 TransactionStateCommittedNotify, 8887 } TRANSACTION_STATE; 8888 8889 typedef struct _TRANSACTION_BASIC_INFORMATION { 8890 GUID TransactionId; 8891 DWORD State; 8892 DWORD Outcome; 8893 } TRANSACTION_BASIC_INFORMATION,*PTRANSACTION_BASIC_INFORMATION; 8894 8895 typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION { 8896 GUID TmIdentity; 8897 LARGE_INTEGER VirtualClock; 8898 } TRANSACTIONMANAGER_BASIC_INFORMATION,*PTRANSACTIONMANAGER_BASIC_INFORMATION; 8899 8900 typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION { 8901 GUID LogIdentity; 8902 } TRANSACTIONMANAGER_LOG_INFORMATION,*PTRANSACTIONMANAGER_LOG_INFORMATION; 8903 8904 typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION { 8905 DWORD LogPathLength; 8906 WCHAR LogPath[1]; 8907 } TRANSACTIONMANAGER_LOGPATH_INFORMATION,*PTRANSACTIONMANAGER_LOGPATH_INFORMATION; 8908 8909 typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION { 8910 ULONGLONG LastRecoveredLsn; 8911 } TRANSACTIONMANAGER_RECOVERY_INFORMATION,*PTRANSACTIONMANAGER_RECOVERY_INFORMATION; 8912 8913 typedef struct _TRANSACTIONMANAGER_OLDEST_INFORMATION { 8914 GUID OldestTransactionGuid; 8915 } TRANSACTIONMANAGER_OLDEST_INFORMATION,*PTRANSACTIONMANAGER_OLDEST_INFORMATION; 8916 8917 typedef struct _TRANSACTION_PROPERTIES_INFORMATION { 8918 DWORD IsolationLevel; 8919 DWORD IsolationFlags; 8920 LARGE_INTEGER Timeout; 8921 DWORD Outcome; 8922 DWORD DescriptionLength; 8923 WCHAR Description[1]; 8924 } TRANSACTION_PROPERTIES_INFORMATION,*PTRANSACTION_PROPERTIES_INFORMATION; 8925 8926 typedef struct _TRANSACTION_BIND_INFORMATION { 8927 HANDLE TmHandle; 8928 } TRANSACTION_BIND_INFORMATION,*PTRANSACTION_BIND_INFORMATION; 8929 8930 typedef struct _TRANSACTION_ENLISTMENT_PAIR { 8931 GUID EnlistmentId; 8932 GUID ResourceManagerId; 8933 } TRANSACTION_ENLISTMENT_PAIR,*PTRANSACTION_ENLISTMENT_PAIR; 8934 8935 typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION { 8936 DWORD NumberOfEnlistments; 8937 TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1]; 8938 } TRANSACTION_ENLISTMENTS_INFORMATION,*PTRANSACTION_ENLISTMENTS_INFORMATION; 8939 8940 typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION { 8941 TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair; 8942 } TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION,*PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION; 8943 8944 typedef struct _RESOURCEMANAGER_BASIC_INFORMATION { 8945 GUID ResourceManagerId; 8946 DWORD DescriptionLength; 8947 WCHAR Description[1]; 8948 } RESOURCEMANAGER_BASIC_INFORMATION,*PRESOURCEMANAGER_BASIC_INFORMATION; 8949 8950 typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION { 8951 HANDLE IoCompletionPortHandle; 8952 ULONG_PTR CompletionKey; 8953 } RESOURCEMANAGER_COMPLETION_INFORMATION,*PRESOURCEMANAGER_COMPLETION_INFORMATION; 8954 8955 typedef enum _TRANSACTION_INFORMATION_CLASS { 8956 TransactionBasicInformation, 8957 TransactionPropertiesInformation, 8958 TransactionEnlistmentInformation, 8959 TransactionSuperiorEnlistmentInformation, 8960 TransactionBindInformation, 8961 TransactionDTCPrivateInformation 8962 } TRANSACTION_INFORMATION_CLASS; 8963 8964 typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS { 8965 TransactionManagerBasicInformation, 8966 TransactionManagerLogInformation, 8967 TransactionManagerLogPathInformation, 8968 TransactionManagerOnlineProbeInformation = 3, 8969 TransactionManagerRecoveryInformation = 4, 8970 TransactionManagerOldestTransactionInformation = 5 8971 } TRANSACTIONMANAGER_INFORMATION_CLASS; 8972 8973 typedef enum _RESOURCEMANAGER_INFORMATION_CLASS { 8974 ResourceManagerBasicInformation, 8975 ResourceManagerCompletionInformation 8976 } RESOURCEMANAGER_INFORMATION_CLASS; 8977 8978 typedef struct _ENLISTMENT_BASIC_INFORMATION { 8979 GUID EnlistmentId; 8980 GUID TransactionId; 8981 GUID ResourceManagerId; 8982 } ENLISTMENT_BASIC_INFORMATION,*PENLISTMENT_BASIC_INFORMATION; 8983 8984 typedef struct _ENLISTMENT_CRM_INFORMATION { 8985 GUID CrmTransactionManagerId; 8986 GUID CrmResourceManagerId; 8987 GUID CrmEnlistmentId; 8988 } ENLISTMENT_CRM_INFORMATION,*PENLISTMENT_CRM_INFORMATION; 8989 8990 typedef enum _ENLISTMENT_INFORMATION_CLASS { 8991 EnlistmentBasicInformation, 8992 EnlistmentRecoveryInformation, 8993 EnlistmentCrmInformation 8994 } ENLISTMENT_INFORMATION_CLASS; 8995 8996 typedef struct _TRANSACTION_LIST_ENTRY { 8997 /*UOW*/ GUID UOW; 8998 } TRANSACTION_LIST_ENTRY,*PTRANSACTION_LIST_ENTRY; 8999 9000 typedef struct _TRANSACTION_LIST_INFORMATION { 9001 DWORD NumberOfTransactions; 9002 TRANSACTION_LIST_ENTRY TransactionInformation[1]; 9003 } TRANSACTION_LIST_INFORMATION,*PTRANSACTION_LIST_INFORMATION; 9004 9005 typedef enum _KTMOBJECT_TYPE { 9006 KTMOBJECT_TRANSACTION, 9007 KTMOBJECT_TRANSACTION_MANAGER, 9008 KTMOBJECT_RESOURCE_MANAGER, 9009 KTMOBJECT_ENLISTMENT, 9010 KTMOBJECT_INVALID 9011 } KTMOBJECT_TYPE,*PKTMOBJECT_TYPE; 9012 9013 typedef struct _KTMOBJECT_CURSOR { 9014 GUID LastQuery; 9015 DWORD ObjectIdCount; 9016 GUID ObjectIds[1]; 9017 } KTMOBJECT_CURSOR,*PKTMOBJECT_CURSOR; 9018 9019 #ifdef __cplusplus 9020 } 9021 #endif 9022 9023 #endif 9024 9025 /* Field Names From (See _fields_ section) 9026 * FIXME: Verify these against documentation 9027 * -- These documentation describes Win32 Constants and Structures in Python -- 9028 * Constants - http://packages.python.org/winappdbg/winappdbg.win32.context_i386-pysrc.html 9029 * WOW64_FLOATING_SAVE_AREA - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_FLOATING_SAVE_AREA-class.html 9030 * WOW64_CONTEXT - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_CONTEXT-class.html 9031 */ 9032 9033 #define WOW64_CONTEXT_i386 0x00010000 9034 #define WOW64_CONTEXT_i486 0x00010000 9035 #define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000001)) 9036 #define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000002)) 9037 #define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000004)) 9038 #define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008)) 9039 #define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010)) 9040 #define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020)) 9041 #define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS) 9042 #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) 9043 9044 #define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040)) 9045 9046 #define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000 9047 #define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000 9048 #define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000 9049 #define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000 9050 9051 #define WOW64_SIZE_OF_80387_REGISTERS 80 9052 #define WOW64_MAXIMUM_SUPPORTED_EXTENSION 512 9053 9054 typedef struct _WOW64_FLOATING_SAVE_AREA { 9055 DWORD ControlWord; 9056 DWORD StatusWord; 9057 DWORD TagWord; 9058 DWORD ErrorOffset; 9059 DWORD ErrorSelector; 9060 DWORD DataOffset; 9061 DWORD DataSelector; 9062 BYTE RegisterArea[WOW64_SIZE_OF_80387_REGISTERS]; 9063 DWORD Cr0NpxState; 9064 } WOW64_FLOATING_SAVE_AREA, *PWOW64_FLOATING_SAVE_AREA; 9065 9066 #include "pshpack4.h" 9067 typedef struct _WOW64_CONTEXT { 9068 DWORD ContextFlags; 9069 DWORD Dr0; 9070 DWORD Dr1; 9071 DWORD Dr2; 9072 DWORD Dr3; 9073 DWORD Dr6; 9074 DWORD Dr7; 9075 WOW64_FLOATING_SAVE_AREA FloatSave; 9076 DWORD SegGs; 9077 DWORD SegFs; 9078 DWORD SegEs; 9079 DWORD SegDs; 9080 DWORD Edi; 9081 DWORD Esi; 9082 DWORD Ebx; 9083 DWORD Edx; 9084 DWORD Ecx; 9085 DWORD Eax; 9086 DWORD Ebp; 9087 DWORD Eip; 9088 DWORD SegCs; 9089 DWORD EFlags; 9090 DWORD Esp; 9091 DWORD SegSs; 9092 BYTE ExtendedRegisters[WOW64_MAXIMUM_SUPPORTED_EXTENSION]; 9093 } WOW64_CONTEXT, *PWOW64_CONTEXT; 9094 #include "poppack.h" 9095 9096 typedef struct _WOW64_LDT_ENTRY { 9097 WORD LimitLow; 9098 WORD BaseLow; 9099 __C89_NAMELESS union { 9100 struct { 9101 BYTE BaseMid; 9102 BYTE Flags1; 9103 BYTE Flags2; 9104 BYTE BaseHi; 9105 } Bytes; 9106 struct { 9107 DWORD BaseMid :8; 9108 DWORD Type :5; 9109 DWORD Dpl :2; 9110 DWORD Pres :1; 9111 DWORD LimitHi :4; 9112 DWORD Sys :1; 9113 DWORD Reserved_0 :1; 9114 DWORD Default_Big :1; 9115 DWORD Granularity :1; 9116 DWORD BaseHi :8; 9117 } Bits; 9118 } HighWord; 9119 } WOW64_LDT_ENTRY, *PWOW64_LDT_ENTRY; 9120 9121 typedef struct _WOW64_DESCRIPTOR_TABLE_ENTRY { 9122 DWORD Selector; 9123 WOW64_LDT_ENTRY Descriptor; 9124 } WOW64_DESCRIPTOR_TABLE_ENTRY,*PWOW64_DESCRIPTOR_TABLE_ENTRY; 9125 9126 #if (_WIN32_WINNT >= 0x0601) 9127 9128 #ifndef ___PROCESSOR_NUMBER_DEFINED 9129 #define ___PROCESSOR_NUMBER_DEFINED 9130 typedef struct _PROCESSOR_NUMBER { 9131 WORD Group; 9132 BYTE Number; 9133 BYTE Reserved; 9134 } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; 9135 9136 #define ALL_PROCESSOR_GROUPS 0xffff 9137 #endif /* !___PROCESSOR_NUMBER_DEFINED */ 9138 9139 #endif /*(_WIN32_WINNT >= 0x0601)*/ 9140 9141 #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION (1) 9142 #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION (2) 9143 #define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION (3) 9144 #define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION (4) 9145 #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION (5) 9146 #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION (6) 9147 #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION (7) 9148 #define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE (8) 9149 #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES (9) 9150 #define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS (10) 9151 #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11) 9152 9153 #ifdef __cplusplus 9154 } 9155 #endif 9156 9157 #endif /* _WINNT_ */ 9158 9159