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