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