| winnt.h (6.3.9600.17415-Windows 8.1) | | winnt.h (10.0.10586.306-Windows 10 1511 10586.494) |
| | |
| skipping to change at line 23 | | skipping to change at line 23 |
| | |
| Revision History: | | Revision History: |
| | |
| --*/ | | --*/ |
| | |
| #ifndef _WINNT_ | | #ifndef _WINNT_ |
| #define _WINNT_ | | #define _WINNT_ |
| | |
| #if _MSC_VER >= 1200 | | #if _MSC_VER >= 1200 |
| #pragma warning(push) | | #pragma warning(push) |
|
| | #pragma warning(disable:4668) // #if not_defined treated as #if 0 |
| | #pragma warning(disable:4820) // padded added |
| #endif | | #endif |
|
| | #pragma warning(disable:4200) // nonstandard extension used : zero-sized array i
n struct/union |
| #pragma warning(disable:4201) // named type definition in parentheses | | #pragma warning(disable:4201) // named type definition in parentheses |
| #pragma warning(disable:4214) // bit field types other than int | | #pragma warning(disable:4214) // bit field types other than int |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| extern "C" { | | extern "C" { |
| #endif | | #endif |
| | |
| #include <ctype.h> | | #include <ctype.h> |
| #include <winapifamily.h> | | #include <winapifamily.h> |
| #define ANYSIZE_ARRAY 1 | | #define ANYSIZE_ARRAY 1 |
| | |
| skipping to change at line 97 | | skipping to change at line 100 |
| #endif | | #endif |
| | |
| // begin_ntoshvp | | // begin_ntoshvp |
| | |
| #if defined(_M_MRX000) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) && define
d(ENABLE_RESTRICTED) | | #if defined(_M_MRX000) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) && define
d(ENABLE_RESTRICTED) |
| #define RESTRICTED_POINTER __restrict | | #define RESTRICTED_POINTER __restrict |
| #else | | #else |
| #define RESTRICTED_POINTER | | #define RESTRICTED_POINTER |
| #endif | | #endif |
| | |
|
| #if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA6
4) || defined(_M_AMD64) || defined(_M_ARM) | | #if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA6
4) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_ARM64) |
| #define ALIGNMENT_MACHINE | | #define ALIGNMENT_MACHINE |
| #define UNALIGNED __unaligned | | #define UNALIGNED __unaligned |
| #if defined(_WIN64) | | #if defined(_WIN64) |
| #define UNALIGNED64 __unaligned | | #define UNALIGNED64 __unaligned |
| #else | | #else |
| #define UNALIGNED64 | | #define UNALIGNED64 |
| #endif | | #endif |
| #else | | #else |
| #undef ALIGNMENT_MACHINE | | #undef ALIGNMENT_MACHINE |
| #define UNALIGNED | | #define UNALIGNED |
| | |
| skipping to change at line 142 | | skipping to change at line 145 |
| FIELD_OFFSET( struct { char x; t test; }, test ) | | FIELD_OFFSET( struct { char x; t test; }, test ) |
| #endif | | #endif |
| | |
| // | | // |
| // Note: RC_INVOKED is checked in PROBE_ALIGNMENT to maintain compatibility with
previous | | // Note: RC_INVOKED is checked in PROBE_ALIGNMENT to maintain compatibility with
previous |
| // versions of the SDK which did not block inclusion in an .RC file. | | // versions of the SDK which did not block inclusion in an .RC file. |
| // | | // |
| | |
| #if defined(_AMD64_) || defined(_X86_) | | #if defined(_AMD64_) || defined(_X86_) |
| #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) | | #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) |
|
| #elif defined(_IA64_) || defined(_ARM_) | | #elif defined(_IA64_) || defined(_ARM_) || defined(_ARM64_) |
| #define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( _s ) > TYPE_ALIGNMENT( DWORD ) ? | | |
| \ | | // |
| TYPE_ALIGNMENT( _s ) : TYPE_ALIGNMENT( DWORD )) | | // TODO: WOWXX - Unblock ARM. Make all alignment checks DWORD for now. |
| | // |
| | |
| | #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) |
| #elif !defined(RC_INVOKED) | | #elif !defined(RC_INVOKED) |
| #error "No Target Architecture" | | #error "No Target Architecture" |
| #endif | | #endif |
| | |
|
| #if defined(_WIN64) | | // |
| | // Define PROBE_ALIGNMENT32 to be the same as PROBE_ALIGNMENT on x86, so that |
| | // code hosting x86 under WoW can handle x86's maximum garanteed alignment. |
| | // |
| | |
| #define PROBE_ALIGNMENT32( _s ) TYPE_ALIGNMENT( DWORD ) | | #define PROBE_ALIGNMENT32( _s ) TYPE_ALIGNMENT( DWORD ) |
| | |
|
| #endif | | |
| | | |
| // begin_ntoshvp | | // begin_ntoshvp |
| | |
| // | | // |
| // C_ASSERT() can be used to perform many compile-time assertions: | | // C_ASSERT() can be used to perform many compile-time assertions: |
| // type sizes, field offsets, etc. | | // type sizes, field offsets, etc. |
| // | | // |
| // An assertion failure results in error C2118: negative subscript. | | // An assertion failure results in error C2118: negative subscript. |
| // | | // |
| | |
| #ifndef SORTPP_PASS | | #ifndef SORTPP_PASS |
| #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] | | #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] |
| #else | | #else |
| #define C_ASSERT(e) /* nothing */ | | #define C_ASSERT(e) /* nothing */ |
| #endif | | #endif |
| | |
| #include <basetsd.h> | | #include <basetsd.h> |
| | |
|
| #if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM
)) && !defined(MIDL_PASS) | | #if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM
) || defined(_M_ARM64)) && !defined(MIDL_PASS) |
| #define DECLSPEC_IMPORT __declspec(dllimport) | | #define DECLSPEC_IMPORT __declspec(dllimport) |
| #else | | #else |
| #define DECLSPEC_IMPORT | | #define DECLSPEC_IMPORT |
| #endif | | #endif |
| | |
| #ifndef DECLSPEC_NORETURN | | #ifndef DECLSPEC_NORETURN |
| #if (_MSC_VER >= 1200) && !defined(MIDL_PASS) | | #if (_MSC_VER >= 1200) && !defined(MIDL_PASS) |
| #define DECLSPEC_NORETURN __declspec(noreturn) | | #define DECLSPEC_NORETURN __declspec(noreturn) |
| #else | | #else |
| #define DECLSPEC_NORETURN | | #define DECLSPEC_NORETURN |
| | |
| skipping to change at line 256 | | skipping to change at line 264 |
| #endif | | #endif |
| | |
| #ifndef DECLSPEC_ADDRSAFE | | #ifndef DECLSPEC_ADDRSAFE |
| #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) | | #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) |
| #define DECLSPEC_ADDRSAFE __declspec(address_safe) | | #define DECLSPEC_ADDRSAFE __declspec(address_safe) |
| #else | | #else |
| #define DECLSPEC_ADDRSAFE | | #define DECLSPEC_ADDRSAFE |
| #endif | | #endif |
| #endif | | #endif |
| | |
|
| | #ifndef DECLSPEC_SAFEBUFFERS |
| | #if (_MSC_VER >= 1600) |
| | #define DECLSPEC_SAFEBUFFERS __declspec(safebuffers) |
| | #else |
| | #define DECLSPEC_SAFEBUFFERS |
| | #endif |
| | #endif |
| | |
| #ifndef DECLSPEC_NOINLINE | | #ifndef DECLSPEC_NOINLINE |
| #if (_MSC_VER >= 1300) | | #if (_MSC_VER >= 1300) |
| #define DECLSPEC_NOINLINE __declspec(noinline) | | #define DECLSPEC_NOINLINE __declspec(noinline) |
| #else | | #else |
| #define DECLSPEC_NOINLINE | | #define DECLSPEC_NOINLINE |
| #endif | | #endif |
| #endif | | #endif |
| | |
| #ifndef DECLSPEC_SAFEBUFFERS | | #ifndef DECLSPEC_SAFEBUFFERS |
| #if (_MSC_VER >= 1300) | | #if (_MSC_VER >= 1300) |
| #define DECLSPEC_SAFEBUFFERS __declspec(safebuffers) | | #define DECLSPEC_SAFEBUFFERS __declspec(safebuffers) |
| #else | | #else |
| #define DECLSPEC_SAFEBUFFERS | | #define DECLSPEC_SAFEBUFFERS |
| #endif | | #endif |
| #endif | | #endif |
| | |
| #ifndef DECLSPEC_GUARDNOCF | | #ifndef DECLSPEC_GUARDNOCF |
|
| #if (_MSC_FULL_VER >= 170065501) | | #if (_MSC_FULL_VER >= 170065501) || defined(_D1VERSIONLKG171_) |
| #define DECLSPEC_GUARDNOCF __declspec(guard(nocf)) | | #define DECLSPEC_GUARDNOCF __declspec(guard(nocf)) |
| #else | | #else |
| #define DECLSPEC_GUARDNOCF | | #define DECLSPEC_GUARDNOCF |
| #endif | | #endif |
| #endif | | #endif |
| | |
|
| | #ifndef DECLSPEC_GUARD_SUPPRESS |
| | #if (_MSC_FULL_VER >= 181040116) || defined(_D1VERSIONLKG171_) |
| | #define DECLSPEC_GUARD_SUPPRESS __declspec(guard(suppress)) |
| | #else |
| | #define DECLSPEC_GUARD_SUPPRESS |
| | #endif |
| | #endif |
| | |
| // begin_ntoshvp | | // begin_ntoshvp |
| | |
| #ifndef FORCEINLINE | | #ifndef FORCEINLINE |
| #if (_MSC_VER >= 1200) | | #if (_MSC_VER >= 1200) |
| #define FORCEINLINE __forceinline | | #define FORCEINLINE __forceinline |
| #else | | #else |
| #define FORCEINLINE __inline | | #define FORCEINLINE __inline |
| #endif | | #endif |
| #endif | | #endif |
| | |
| | |
| skipping to change at line 303 | | skipping to change at line 327 |
| | |
| #define CFORCEINLINE FORCEINLINE | | #define CFORCEINLINE FORCEINLINE |
| | |
| // | | // |
| // STKFORCEINLINE: __forceinline required for correctness due to counting stack | | // STKFORCEINLINE: __forceinline required for correctness due to counting stack |
| // frames for a stack trace being captured. | | // frames for a stack trace being captured. |
| // | | // |
| | |
| #define STKFORCEINLINE FORCEINLINE | | #define STKFORCEINLINE FORCEINLINE |
| | |
|
| #define ICEFORCEINLINE FORCEINLINE | | // |
| | // PFORCEINLINE: __forceinline required for performance. |
| | // |
| | |
| | #ifndef PFORCEINLINE |
| | #define PFORCEINLINE FORCEINLINE |
| | #endif |
| | |
| // end_ntoshvp | | // end_ntoshvp |
| | |
| #ifndef DECLSPEC_DEPRECATED | | #ifndef DECLSPEC_DEPRECATED |
| #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) | | #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) |
| #define DECLSPEC_DEPRECATED __declspec(deprecated) | | #define DECLSPEC_DEPRECATED __declspec(deprecated) |
| #define DEPRECATE_SUPPORTED | | #define DEPRECATE_SUPPORTED |
| #else | | #else |
| #define DECLSPEC_DEPRECATED | | #define DECLSPEC_DEPRECATED |
| #undef DEPRECATE_SUPPORTED | | #undef DEPRECATE_SUPPORTED |
| | |
| skipping to change at line 559 | | skipping to change at line 589 |
| // Structure to represent a group-specific affinity, such as that of a | | // Structure to represent a group-specific affinity, such as that of a |
| // thread. Specifies the group number and the affinity within that group. | | // thread. Specifies the group number and the affinity within that group. |
| // | | // |
| | |
| typedef struct _GROUP_AFFINITY { | | typedef struct _GROUP_AFFINITY { |
| KAFFINITY Mask; | | KAFFINITY Mask; |
| WORD Group; | | WORD Group; |
| WORD Reserved[3]; | | WORD Reserved[3]; |
| } GROUP_AFFINITY, *PGROUP_AFFINITY; | | } GROUP_AFFINITY, *PGROUP_AFFINITY; |
| | |
|
| | #if defined(_WIN64) |
| | |
| | #define MAXIMUM_PROC_PER_GROUP 64 |
| | |
| | #else |
| | |
| | #define MAXIMUM_PROC_PER_GROUP 32 |
| | |
| | #endif |
| | |
| | #define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP |
| | |
| // begin_ntoshvp | | // begin_ntoshvp |
| | |
| // | | // |
| // Handle to an Object | | // Handle to an Object |
| // | | // |
| | |
| #ifdef STRICT | | #ifdef STRICT |
| typedef void *HANDLE; | | typedef void *HANDLE; |
| #if 0 && (_MSC_VER > 1000) | | #if 0 && (_MSC_VER > 1000) |
| #define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name | | #define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name |
| | |
| skipping to change at line 604 | | skipping to change at line 646 |
| #ifdef __midl | | #ifdef __midl |
| typedef LONG HRESULT; | | typedef LONG HRESULT; |
| #else | | #else |
| typedef _Return_type_success_(return >= 0) long HRESULT; | | typedef _Return_type_success_(return >= 0) long HRESULT; |
| #endif // __midl | | #endif // __midl |
| #endif // !_HRESULT_DEFINED | | #endif // !_HRESULT_DEFINED |
| | |
| // end_ntoshvp | | // end_ntoshvp |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
|
| #define EXTERN_C extern "C" | | #define EXTERN_C extern "C" |
| | #define EXTERN_C_START extern "C" { |
| | #define EXTERN_C_END } |
| #else | | #else |
|
| #define EXTERN_C extern | | #define EXTERN_C extern |
| | #define EXTERN_C_START |
| | #define EXTERN_C_END |
| #endif | | #endif |
| | |
| #if defined(_WIN32) || defined(_MPPC_) | | #if defined(_WIN32) || defined(_MPPC_) |
| | |
| // Win32 doesn't support __export | | // Win32 doesn't support __export |
| | |
| #ifdef _68K_ | | #ifdef _68K_ |
| #define STDMETHODCALLTYPE __cdecl | | #define STDMETHODCALLTYPE __cdecl |
| #else | | #else |
| #define STDMETHODCALLTYPE __stdcall | | #define STDMETHODCALLTYPE __stdcall |
| | |
| skipping to change at line 808 | | skipping to change at line 854 |
| typedef ULONGLONG DWORDLONG; | | typedef ULONGLONG DWORDLONG; |
| typedef DWORDLONG *PDWORDLONG; | | typedef DWORDLONG *PDWORDLONG; |
| | |
| // | | // |
| // Define operations to logically shift an int64 by 0..31 bits and to multiply | | // Define operations to logically shift an int64 by 0..31 bits and to multiply |
| // 32-bits by 32-bits to form a 64-bit product. | | // 32-bits by 32-bits to form a 64-bit product. |
| // | | // |
| | |
| #if defined(MIDL_PASS) || defined(RC_INVOKED) || defined(_M_CEE_PURE) \ | | #if defined(MIDL_PASS) || defined(RC_INVOKED) || defined(_M_CEE_PURE) \ |
| || defined(_68K_) || defined(_MPPC_) \ | | || defined(_68K_) || defined(_MPPC_) \ |
|
| || defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM) | | || defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_AR
M64) |
| | |
| // | | // |
| // Midl does not understand inline assembler. Therefore, the Rtl functions | | // Midl does not understand inline assembler. Therefore, the Rtl functions |
| // are used for shifts by 0..31 and multiplies of 32-bits times 32-bits to | | // are used for shifts by 0..31 and multiplies of 32-bits times 32-bits to |
| // form a 64-bit product. | | // form a 64-bit product. |
| // | | // |
| // | | // |
| // IA64 and AMD64 have native 64-bit operations that are just as fast as their | | // IA64 and AMD64 have native 64-bit operations that are just as fast as their |
| // 32-bit counter parts. Therefore, the int64 data type is used directly to form | | // 32-bit counter parts. Therefore, the int64 data type is used directly to form |
| // shifts of 0..31 and multiplies of 32-bits times 32-bits to form a 64-bit | | // shifts of 0..31 and multiplies of 32-bits times 32-bits to form a 64-bit |
| | |
| skipping to change at line 1157 | | skipping to change at line 1203 |
| // | | // |
| // We never even call RtlpNumberOf, we just take the size of dereferencing its r
eturn type. | | // We never even call RtlpNumberOf, we just take the size of dereferencing its r
eturn type. |
| // We do not even implement RtlpNumberOf, we just decare it. | | // We do not even implement RtlpNumberOf, we just decare it. |
| // | | // |
| // Attempts to pass pointers instead of arrays to this macro result in compile t
ime errors. | | // Attempts to pass pointers instead of arrays to this macro result in compile t
ime errors. |
| // That is the point. | | // That is the point. |
| // | | // |
| | |
| // end_ntndis end_ntminiport | | // end_ntndis end_ntminiport |
| | |
|
| #pragma region Application Family | | #pragma region Application Family or OneCore Family |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| // begin_ntndis begin_ntminiport | | // begin_ntndis begin_ntminiport |
| | |
| extern "C++" // templates cannot be declared to have 'C' linkage | | extern "C++" // templates cannot be declared to have 'C' linkage |
| template <typename T, size_t N> | | template <typename T, size_t N> |
| char (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N]; | | char (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N]; |
| | |
| // end_ntndis end_ntminiport | | // end_ntndis end_ntminiport |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
| // begin_ntndis begin_ntminiport | | // begin_ntndis begin_ntminiport |
| | |
| #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A))) | | #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A))) |
| | |
| // | | // |
| // This does not work with: | | // This does not work with: |
| // | | // |
| // void Foo() | | // void Foo() |
| | |
| skipping to change at line 1436 | | skipping to change at line 1482 |
| #define PRODUCT_CORE_N 0x00000062 | | #define PRODUCT_CORE_N 0x00000062 |
| #define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063 | | #define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063 |
| #define PRODUCT_CORE_SINGLELANGUAGE 0x00000064 | | #define PRODUCT_CORE_SINGLELANGUAGE 0x00000064 |
| #define PRODUCT_CORE 0x00000065 | | #define PRODUCT_CORE 0x00000065 |
| #define PRODUCT_PROFESSIONAL_WMC 0x00000067 | | #define PRODUCT_PROFESSIONAL_WMC 0x00000067 |
| #define PRODUCT_MOBILE_CORE 0x00000068 | | #define PRODUCT_MOBILE_CORE 0x00000068 |
| #define PRODUCT_EMBEDDED_INDUSTRY_EVAL 0x00000069 | | #define PRODUCT_EMBEDDED_INDUSTRY_EVAL 0x00000069 |
| #define PRODUCT_EMBEDDED_INDUSTRY_E_EVAL 0x0000006A | | #define PRODUCT_EMBEDDED_INDUSTRY_E_EVAL 0x0000006A |
| #define PRODUCT_EMBEDDED_EVAL 0x0000006B | | #define PRODUCT_EMBEDDED_EVAL 0x0000006B |
| #define PRODUCT_EMBEDDED_E_EVAL 0x0000006C | | #define PRODUCT_EMBEDDED_E_EVAL 0x0000006C |
|
| #define PRODUCT_CORE_SERVER 0x0000006D | | #define PRODUCT_NANO_SERVER 0x0000006D |
| #define PRODUCT_CLOUD_STORAGE_SERVER 0x0000006E | | #define PRODUCT_CLOUD_STORAGE_SERVER 0x0000006E |
| #define PRODUCT_CORE_CONNECTED 0x0000006F | | #define PRODUCT_CORE_CONNECTED 0x0000006F |
| #define PRODUCT_PROFESSIONAL_STUDENT 0x00000070 | | #define PRODUCT_PROFESSIONAL_STUDENT 0x00000070 |
| #define PRODUCT_CORE_CONNECTED_N 0x00000071 | | #define PRODUCT_CORE_CONNECTED_N 0x00000071 |
| #define PRODUCT_PROFESSIONAL_STUDENT_N 0x00000072 | | #define PRODUCT_PROFESSIONAL_STUDENT_N 0x00000072 |
| #define PRODUCT_CORE_CONNECTED_SINGLELANGUAGE 0x00000073 | | #define PRODUCT_CORE_CONNECTED_SINGLELANGUAGE 0x00000073 |
| #define PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC 0x00000074 | | #define PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC 0x00000074 |
|
| | #define PRODUCT_CONNECTED_CAR 0x00000075 |
| | #define PRODUCT_INDUSTRY_HANDHELD 0x00000076 |
| | #define PRODUCT_PPI_PRO 0x00000077 |
| | #define PRODUCT_ARM64_SERVER 0x00000078 |
| | #define PRODUCT_EDUCATION 0x00000079 |
| | #define PRODUCT_EDUCATION_N 0x0000007A |
| | #define PRODUCT_IOTUAP 0x0000007B |
| | #define PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER 0x0000007C |
| | #define PRODUCT_ENTERPRISE_S 0x0000007D |
| | #define PRODUCT_ENTERPRISE_S_N 0x0000007E |
| | #define PRODUCT_PROFESSIONAL_S 0x0000007F |
| | #define PRODUCT_PROFESSIONAL_S_N 0x00000080 |
| | #define PRODUCT_ENTERPRISE_S_EVALUATION 0x00000081 |
| | #define PRODUCT_ENTERPRISE_S_N_EVALUATION 0x00000082 |
| | #define PRODUCT_HOLOGRAPHIC 0x00000087 |
| | |
| #define PRODUCT_UNLICENSED 0xABCDABCD | | #define PRODUCT_UNLICENSED 0xABCDABCD |
| | |
| #include <sdkddkver.h> | | #include <sdkddkver.h> |
| | |
| // | | // |
| // Language IDs. | | // Language IDs. |
| // | | // |
| // Note that the named locale APIs (eg GetLocaleInfoEx) are preferred. | | // Note that the named locale APIs (eg GetLocaleInfoEx) are preferred. |
| // | | // |
| | |
| skipping to change at line 2057 | | skipping to change at line 2118 |
| // Use UNREFERENCED_PARAMETER() if a parameter will never be referenced. | | // Use UNREFERENCED_PARAMETER() if a parameter will never be referenced. |
| // | | // |
| // DBG_UNREFERENCED_PARAMETER and DBG_UNREFERENCED_LOCAL_VARIABLE will | | // DBG_UNREFERENCED_PARAMETER and DBG_UNREFERENCED_LOCAL_VARIABLE will |
| // eventually be made into a null macro to help determine whether there | | // eventually be made into a null macro to help determine whether there |
| // is unfinished work. | | // is unfinished work. |
| // | | // |
| | |
| // begin_ntoshvp | | // begin_ntoshvp |
| | |
| #if ! defined(lint) | | #if ! defined(lint) |
|
| | |
| | #ifdef _PREFAST_ |
| | |
| | void _Prefast_unreferenced_parameter_impl_(const char*, ...); |
| | #define UNREFERENCED_PARAMETER(P) _Prefast_unreferenced_parameter_impl_ |
| | ("PREfast", (P)) |
| | #define DBG_UNREFERENCED_PARAMETER(P) _Prefast_unreferenced_parameter_impl_ |
| | ("PREfast", (P)) |
| | #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) _Prefast_unreferenced_parameter_impl_ |
| | ("PREfast", (V)) |
| | |
| | #else // _PREFAST_ |
| | |
| #define UNREFERENCED_PARAMETER(P) (P) | | #define UNREFERENCED_PARAMETER(P) (P) |
| #define DBG_UNREFERENCED_PARAMETER(P) (P) | | #define DBG_UNREFERENCED_PARAMETER(P) (P) |
| #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V) | | #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V) |
| | |
|
| | #endif // _PREFAST_ |
| | |
| #else // lint | | #else // lint |
| | |
| // Note: lint -e530 says don't complain about uninitialized variables for | | // Note: lint -e530 says don't complain about uninitialized variables for |
| // this varible. Error 527 has to do with unreachable code. | | // this varible. Error 527 has to do with unreachable code. |
| // -restore restores checking to the -save state | | // -restore restores checking to the -save state |
| | |
| #define UNREFERENCED_PARAMETER(P) \ | | #define UNREFERENCED_PARAMETER(P) \ |
| /*lint -save -e527 -e530 */ \ | | /*lint -save -e527 -e530 */ \ |
| { \ | | { \ |
| (P) = (P); \ | | (P) = (P); \ |
| | |
| skipping to change at line 2148 | | skipping to change at line 2221 |
| { | | { |
| typedef INT16 type; | | typedef INT16 type; |
| }; | | }; |
| | |
| template <> | | template <> |
| struct _ENUM_FLAG_INTEGER_FOR_SIZE<4> | | struct _ENUM_FLAG_INTEGER_FOR_SIZE<4> |
| { | | { |
| typedef INT32 type; | | typedef INT32 type; |
| }; | | }; |
| | |
|
| | template <> |
| | struct _ENUM_FLAG_INTEGER_FOR_SIZE<8> |
| | { |
| | typedef INT64 type; |
| | }; |
| | |
| // used as an approximation of std::underlying_type<T> | | // used as an approximation of std::underlying_type<T> |
| template <class T> | | template <class T> |
| struct _ENUM_FLAG_SIZED_INTEGER | | struct _ENUM_FLAG_SIZED_INTEGER |
| { | | { |
| typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type; | | typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type; |
| }; | | }; |
| | |
| } | | } |
| | |
| #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \ | | #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \ |
| extern "C++" { \ | | extern "C++" { \ |
|
| inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FL | | inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) throw() { return ENUMTYPE((( |
| AG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type | | _ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYP |
| )b)); } \ | | E>::type)b)); } \ |
| inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ | | inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) throw() { return (ENUMTYP |
| ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEGER<ENUMT | | E &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEG |
| YPE>::type)b)); } \ | | ER<ENUMTYPE>::type)b)); } \ |
| inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FL | | inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) throw() { return ENUMTYPE((( |
| AG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type | | _ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYP |
| )b)); } \ | | E>::type)b)); } \ |
| inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ | | inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) throw() { return (ENUMTYP |
| ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEGER<ENUMT | | E &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEG |
| YPE>::type)b)); } \ | | ER<ENUMTYPE>::type)b)); } \ |
| inline ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((_ENUM_FLAG_SIZED_IN | | inline ENUMTYPE operator ~ (ENUMTYPE a) throw() { return ENUMTYPE(~((_ENUM_FLAG_ |
| TEGER<ENUMTYPE>::type)a)); } \ | | SIZED_INTEGER<ENUMTYPE>::type)a)); } \ |
| inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FL | | inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) throw() { return ENUMTYPE((( |
| AG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type | | _ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYP |
| )b)); } \ | | E>::type)b)); } \ |
| inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ | | inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) throw() { return (ENUMTYP |
| ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEGER<ENUMT | | E &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEG |
| YPE>::type)b)); } \ | | ER<ENUMTYPE>::type)b)); } \ |
| } | | } |
| #else | | #else |
| #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) // NOP, C allows these operators. | | #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) // NOP, C allows these operators. |
| #endif | | #endif |
| | |
| // Compile-time macros for initializing flag values in const data. | | // Compile-time macros for initializing flag values in const data. |
| // | | // |
| // When using DEFINE_ENUM_FLAG_OPERATORS for enum values you should use the macr
os below | | // When using DEFINE_ENUM_FLAG_OPERATORS for enum values you should use the macr
os below |
| // when you need to initialize global const data. Without these macros the inli
ne operators | | // when you need to initialize global const data. Without these macros the inli
ne operators |
| // from DEFINE_ENUM_FLAG_OPERATORS force a runtime initialization rather than a | | // from DEFINE_ENUM_FLAG_OPERATORS force a runtime initialization rather than a |
| // compile time initialization. This applies even if you have declared the data
as const. | | // compile time initialization. This applies even if you have declared the data
as const. |
| #define COMPILETIME_OR_2FLAGS(a,b) ((UINT)(a)|(UINT)(b)) | | #define COMPILETIME_OR_2FLAGS(a,b) ((UINT)(a)|(UINT)(b)) |
| #define COMPILETIME_OR_3FLAGS(a,b,c) ((UINT)(a)|(UINT)(b)|(UINT)(c)) | | #define COMPILETIME_OR_3FLAGS(a,b,c) ((UINT)(a)|(UINT)(b)|(UINT)(c)) |
| #define COMPILETIME_OR_4FLAGS(a,b,c,d) ((UINT)(a)|(UINT)(b)|(UINT)(c)|(UINT
)(d)) | | #define COMPILETIME_OR_4FLAGS(a,b,c,d) ((UINT)(a)|(UINT)(b)|(UINT)(c)|(UINT
)(d)) |
| #define COMPILETIME_OR_5FLAGS(a,b,c,d,e) ((UINT)(a)|(UINT)(b)|(UINT)(c)|(UINT
)(d)|(UINT)(e)) | | #define COMPILETIME_OR_5FLAGS(a,b,c,d,e) ((UINT)(a)|(UINT)(b)|(UINT)(c)|(UINT
)(d)|(UINT)(e)) |
|
| | #define COMPILETIME_OR_6FLAGS(a,b,c,d,e,f) ((UINT)(a)|(UINT)(b)|(UINT)(c)|(UINT
)(d)|(UINT)(e)|(UINT)(f)) |
| | |
| #ifndef UMDF_USING_NTSTATUS | | #ifndef UMDF_USING_NTSTATUS |
| #ifndef WIN32_NO_STATUS | | #ifndef WIN32_NO_STATUS |
| /*lint -save -e767 */ | | /*lint -save -e767 */ |
| #define STATUS_WAIT_0 ((DWORD )0x00000000L) | | #define STATUS_WAIT_0 ((DWORD )0x00000000L) |
| #define STATUS_ABANDONED_WAIT_0 ((DWORD )0x00000080L) | | #define STATUS_ABANDONED_WAIT_0 ((DWORD )0x00000080L) |
| #define STATUS_USER_APC ((DWORD )0x000000C0L) | | #define STATUS_USER_APC ((DWORD )0x000000C0L) |
| #define STATUS_TIMEOUT ((DWORD )0x00000102L) | | #define STATUS_TIMEOUT ((DWORD )0x00000102L) |
| #define STATUS_PENDING ((DWORD )0x00000103L) | | #define STATUS_PENDING ((DWORD )0x00000103L) |
| #define DBG_EXCEPTION_HANDLED ((DWORD )0x00010001L) | | #define DBG_EXCEPTION_HANDLED ((DWORD )0x00010001L) |
| #define DBG_CONTINUE ((DWORD )0x00010002L) | | #define DBG_CONTINUE ((DWORD )0x00010002L) |
| #define STATUS_SEGMENT_NOTIFICATION ((DWORD )0x40000005L) | | #define STATUS_SEGMENT_NOTIFICATION ((DWORD )0x40000005L) |
| #define STATUS_FATAL_APP_EXIT ((DWORD )0x40000015L) | | #define STATUS_FATAL_APP_EXIT ((DWORD )0x40000015L) |
|
| | #define DBG_REPLY_LATER ((DWORD )0x40010001L) |
| #define DBG_TERMINATE_THREAD ((DWORD )0x40010003L) | | #define DBG_TERMINATE_THREAD ((DWORD )0x40010003L) |
| #define DBG_TERMINATE_PROCESS ((DWORD )0x40010004L) | | #define DBG_TERMINATE_PROCESS ((DWORD )0x40010004L) |
| #define DBG_CONTROL_C ((DWORD )0x40010005L) | | #define DBG_CONTROL_C ((DWORD )0x40010005L) |
| #define DBG_PRINTEXCEPTION_C ((DWORD )0x40010006L) | | #define DBG_PRINTEXCEPTION_C ((DWORD )0x40010006L) |
| #define DBG_RIPEXCEPTION ((DWORD )0x40010007L) | | #define DBG_RIPEXCEPTION ((DWORD )0x40010007L) |
| #define DBG_CONTROL_BREAK ((DWORD )0x40010008L) | | #define DBG_CONTROL_BREAK ((DWORD )0x40010008L) |
| #define DBG_COMMAND_EXCEPTION ((DWORD )0x40010009L) | | #define DBG_COMMAND_EXCEPTION ((DWORD )0x40010009L) |
|
| | #define DBG_PRINTEXCEPTION_WIDE_C ((DWORD )0x4001000AL) |
| #define STATUS_GUARD_PAGE_VIOLATION ((DWORD )0x80000001L) | | #define STATUS_GUARD_PAGE_VIOLATION ((DWORD )0x80000001L) |
| #define STATUS_DATATYPE_MISALIGNMENT ((DWORD )0x80000002L) | | #define STATUS_DATATYPE_MISALIGNMENT ((DWORD )0x80000002L) |
| #define STATUS_BREAKPOINT ((DWORD )0x80000003L) | | #define STATUS_BREAKPOINT ((DWORD )0x80000003L) |
| #define STATUS_SINGLE_STEP ((DWORD )0x80000004L) | | #define STATUS_SINGLE_STEP ((DWORD )0x80000004L) |
| #define STATUS_LONGJUMP ((DWORD )0x80000026L) | | #define STATUS_LONGJUMP ((DWORD )0x80000026L) |
| #define STATUS_UNWIND_CONSOLIDATE ((DWORD )0x80000029L) | | #define STATUS_UNWIND_CONSOLIDATE ((DWORD )0x80000029L) |
| #define DBG_EXCEPTION_NOT_HANDLED ((DWORD )0x80010001L) | | #define DBG_EXCEPTION_NOT_HANDLED ((DWORD )0x80010001L) |
| #define STATUS_ACCESS_VIOLATION ((DWORD )0xC0000005L) | | #define STATUS_ACCESS_VIOLATION ((DWORD )0xC0000005L) |
| #define STATUS_IN_PAGE_ERROR ((DWORD )0xC0000006L) | | #define STATUS_IN_PAGE_ERROR ((DWORD )0xC0000006L) |
| #define STATUS_INVALID_HANDLE ((DWORD )0xC0000008L) | | #define STATUS_INVALID_HANDLE ((DWORD )0xC0000008L) |
| | |
| skipping to change at line 2304 | | skipping to change at line 2386 |
| BYTE Reserved4[224]; | | BYTE Reserved4[224]; |
| | |
| #endif | | #endif |
| | |
| } XSAVE_FORMAT, *PXSAVE_FORMAT; | | } XSAVE_FORMAT, *PXSAVE_FORMAT; |
| | |
| // end_ntoshvp | | // end_ntoshvp |
| | |
| typedef struct DECLSPEC_ALIGN(8) _XSAVE_AREA_HEADER { | | typedef struct DECLSPEC_ALIGN(8) _XSAVE_AREA_HEADER { |
| DWORD64 Mask; | | DWORD64 Mask; |
|
| DWORD64 Reserved[7]; | | DWORD64 CompactionMask; |
| | DWORD64 Reserved2[6]; |
| } XSAVE_AREA_HEADER, *PXSAVE_AREA_HEADER; | | } XSAVE_AREA_HEADER, *PXSAVE_AREA_HEADER; |
| | |
| typedef struct DECLSPEC_ALIGN(16) _XSAVE_AREA { | | typedef struct DECLSPEC_ALIGN(16) _XSAVE_AREA { |
| XSAVE_FORMAT LegacyState; | | XSAVE_FORMAT LegacyState; |
| XSAVE_AREA_HEADER Header; | | XSAVE_AREA_HEADER Header; |
| } XSAVE_AREA, *PXSAVE_AREA; | | } XSAVE_AREA, *PXSAVE_AREA; |
| | |
| typedef struct _XSTATE_CONTEXT { | | typedef struct _XSTATE_CONTEXT { |
| DWORD64 Mask; | | DWORD64 Mask; |
| DWORD Length; | | DWORD Length; |
| | |
| skipping to change at line 2387 | | skipping to change at line 2470 |
| #define InterlockedBitTestAndSet64Release _interlockedbittestandset64 | | #define InterlockedBitTestAndSet64Release _interlockedbittestandset64 |
| #define InterlockedBitTestAndSet64NoFence _interlockedbittestandset64 | | #define InterlockedBitTestAndSet64NoFence _interlockedbittestandset64 |
| #define InterlockedBitTestAndReset64 _interlockedbittestandreset64 | | #define InterlockedBitTestAndReset64 _interlockedbittestandreset64 |
| #define InterlockedBitTestAndReset64Acquire _interlockedbittestandreset64 | | #define InterlockedBitTestAndReset64Acquire _interlockedbittestandreset64 |
| #define InterlockedBitTestAndReset64Release _interlockedbittestandreset64 | | #define InterlockedBitTestAndReset64Release _interlockedbittestandreset64 |
| #define InterlockedBitTestAndReset64NoFence _interlockedbittestandreset64 | | #define InterlockedBitTestAndReset64NoFence _interlockedbittestandreset64 |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| BOOLEAN | | BOOLEAN |
| _bittest ( | | _bittest ( |
|
| _In_reads_bytes_((Offset+7)/8) LONG const *Base, | | _In_reads_bytes_((Offset/8)+1) LONG const *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandcomplement ( | | _bittestandcomplement ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandset ( | | _bittestandset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandreset ( | | _bittestandreset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _interlockedbittestandset ( | | _interlockedbittestandset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) _Interlocked_operand_ LONG volatile *Bas | | _Inout_updates_bytes_((Offset/8)+1) _Interlocked_operand_ LONG volatile *Bas |
| e, | | e, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _interlockedbittestandreset ( | | _interlockedbittestandreset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) _Interlocked_operand_ LONG volatile *Bas | | _Inout_updates_bytes_((Offset/8)+1) _Interlocked_operand_ LONG volatile *Bas |
| e, | | e, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittest64 ( | | _bittest64 ( |
|
| _In_reads_bytes_((Offset+7)/8) LONG64 const *Base, | | _In_reads_bytes_((Offset/8)+1) LONG64 const *Base, |
| _In_ LONG64 Offset | | _In_range_(>=,0) LONG64 Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandcomplement64 ( | | _bittestandcomplement64 ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG64 *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG64 *Base, |
| _In_ LONG64 Offset | | _In_range_(>=,0) LONG64 Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandset64 ( | | _bittestandset64 ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG64 *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG64 *Base, |
| _In_ LONG64 Offset | | _In_range_(>=,0) LONG64 Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandreset64 ( | | _bittestandreset64 ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG64 *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG64 *Base, |
| _In_ LONG64 Offset | | _In_range_(>=,0) LONG64 Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _interlockedbittestandset64 ( | | _interlockedbittestandset64 ( |
|
| _Inout_updates_bytes_((Offset+7)/8) _Interlocked_operand_ LONG64 volatile *B | | _Inout_updates_bytes_((Offset/8)+1) _Interlocked_operand_ LONG64 volatile *B |
| ase, | | ase, |
| _In_ LONG64 Offset | | _In_range_(>=,0) LONG64 Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _interlockedbittestandreset64 ( | | _interlockedbittestandreset64 ( |
|
| _Inout_updates_bytes_((Offset+7)/8) _Interlocked_operand_ LONG64 volatile *B | | _Inout_updates_bytes_((Offset/8)+1) _Interlocked_operand_ LONG64 volatile *B |
| ase, | | ase, |
| _In_ LONG64 Offset | | _In_range_(>=,0) LONG64 Offset |
| ); | | ); |
| | |
| #pragma intrinsic(_bittest) | | #pragma intrinsic(_bittest) |
| #pragma intrinsic(_bittestandcomplement) | | #pragma intrinsic(_bittestandcomplement) |
| #pragma intrinsic(_bittestandset) | | #pragma intrinsic(_bittestandset) |
| #pragma intrinsic(_bittestandreset) | | #pragma intrinsic(_bittestandreset) |
| #pragma intrinsic(_interlockedbittestandset) | | #pragma intrinsic(_interlockedbittestandset) |
| #pragma intrinsic(_interlockedbittestandreset) | | #pragma intrinsic(_interlockedbittestandreset) |
| | |
| #pragma intrinsic(_bittest64) | | #pragma intrinsic(_bittest64) |
| | |
| skipping to change at line 2550 | | skipping to change at line 2633 |
| #define InterlockedXorRelease _InterlockedXor | | #define InterlockedXorRelease _InterlockedXor |
| #define InterlockedXorNoFence _InterlockedXor | | #define InterlockedXorNoFence _InterlockedXor |
| #define InterlockedIncrement _InterlockedIncrement | | #define InterlockedIncrement _InterlockedIncrement |
| #define InterlockedIncrementAcquire _InterlockedIncrement | | #define InterlockedIncrementAcquire _InterlockedIncrement |
| #define InterlockedIncrementRelease _InterlockedIncrement | | #define InterlockedIncrementRelease _InterlockedIncrement |
| #define InterlockedIncrementNoFence _InterlockedIncrement | | #define InterlockedIncrementNoFence _InterlockedIncrement |
| #define InterlockedDecrement _InterlockedDecrement | | #define InterlockedDecrement _InterlockedDecrement |
| #define InterlockedDecrementAcquire _InterlockedDecrement | | #define InterlockedDecrementAcquire _InterlockedDecrement |
| #define InterlockedDecrementRelease _InterlockedDecrement | | #define InterlockedDecrementRelease _InterlockedDecrement |
| #define InterlockedDecrementNoFence _InterlockedDecrement | | #define InterlockedDecrementNoFence _InterlockedDecrement |
|
| #define InterlockedAdd _InterlockedAdd | | #define InterlockedAdd _InlineInterlockedAdd |
| #define InterlockedAddAcquire _InterlockedAdd | | #define InterlockedAddAcquire _InlineInterlockedAdd |
| #define InterlockedAddRelease _InterlockedAdd | | #define InterlockedAddRelease _InlineInterlockedAdd |
| #define InterlockedAddNoFence _InterlockedAdd | | #define InterlockedAddNoFence _InlineInterlockedAdd |
| #define InterlockedExchange _InterlockedExchange | | #define InterlockedExchange _InterlockedExchange |
| #define InterlockedExchangeAcquire _InterlockedExchange | | #define InterlockedExchangeAcquire _InterlockedExchange |
| #define InterlockedExchangeNoFence _InterlockedExchange | | #define InterlockedExchangeNoFence _InterlockedExchange |
| #define InterlockedExchangeAdd _InterlockedExchangeAdd | | #define InterlockedExchangeAdd _InterlockedExchangeAdd |
| #define InterlockedExchangeAddAcquire _InterlockedExchangeAdd | | #define InterlockedExchangeAddAcquire _InterlockedExchangeAdd |
| #define InterlockedExchangeAddRelease _InterlockedExchangeAdd | | #define InterlockedExchangeAddRelease _InterlockedExchangeAdd |
| #define InterlockedExchangeAddNoFence _InterlockedExchangeAdd | | #define InterlockedExchangeAddNoFence _InterlockedExchangeAdd |
| #define InterlockedCompareExchange _InterlockedCompareExchange | | #define InterlockedCompareExchange _InterlockedCompareExchange |
| #define InterlockedCompareExchangeAcquire _InterlockedCompareExchange | | #define InterlockedCompareExchangeAcquire _InterlockedCompareExchange |
| #define InterlockedCompareExchangeRelease _InterlockedCompareExchange | | #define InterlockedCompareExchangeRelease _InterlockedCompareExchange |
| | |
| skipping to change at line 2588 | | skipping to change at line 2671 |
| #define InterlockedXor64Release _InterlockedXor64 | | #define InterlockedXor64Release _InterlockedXor64 |
| #define InterlockedXor64NoFence _InterlockedXor64 | | #define InterlockedXor64NoFence _InterlockedXor64 |
| #define InterlockedIncrement64 _InterlockedIncrement64 | | #define InterlockedIncrement64 _InterlockedIncrement64 |
| #define InterlockedIncrementAcquire64 _InterlockedIncrement64 | | #define InterlockedIncrementAcquire64 _InterlockedIncrement64 |
| #define InterlockedIncrementRelease64 _InterlockedIncrement64 | | #define InterlockedIncrementRelease64 _InterlockedIncrement64 |
| #define InterlockedIncrementNoFence64 _InterlockedIncrement64 | | #define InterlockedIncrementNoFence64 _InterlockedIncrement64 |
| #define InterlockedDecrement64 _InterlockedDecrement64 | | #define InterlockedDecrement64 _InterlockedDecrement64 |
| #define InterlockedDecrementAcquire64 _InterlockedDecrement64 | | #define InterlockedDecrementAcquire64 _InterlockedDecrement64 |
| #define InterlockedDecrementRelease64 _InterlockedDecrement64 | | #define InterlockedDecrementRelease64 _InterlockedDecrement64 |
| #define InterlockedDecrementNoFence64 _InterlockedDecrement64 | | #define InterlockedDecrementNoFence64 _InterlockedDecrement64 |
|
| #define InterlockedAdd64 _InterlockedAdd64 | | #define InterlockedAdd64 _InlineInterlockedAdd64 |
| #define InterlockedAddAcquire64 _InterlockedAdd64 | | #define InterlockedAddAcquire64 _InlineInterlockedAdd64 |
| #define InterlockedAddRelease64 _InterlockedAdd64 | | #define InterlockedAddRelease64 _InlineInterlockedAdd64 |
| #define InterlockedAddNoFence64 _InterlockedAdd64 | | #define InterlockedAddNoFence64 _InlineInterlockedAdd64 |
| #define InterlockedExchange64 _InterlockedExchange64 | | #define InterlockedExchange64 _InterlockedExchange64 |
| #define InterlockedExchangeAcquire64 InterlockedExchange64 | | #define InterlockedExchangeAcquire64 InterlockedExchange64 |
| #define InterlockedExchangeNoFence64 InterlockedExchange64 | | #define InterlockedExchangeNoFence64 InterlockedExchange64 |
| #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 | | #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 |
| #define InterlockedExchangeAddAcquire64 _InterlockedExchangeAdd64 | | #define InterlockedExchangeAddAcquire64 _InterlockedExchangeAdd64 |
| #define InterlockedExchangeAddRelease64 _InterlockedExchangeAdd64 | | #define InterlockedExchangeAddRelease64 _InterlockedExchangeAdd64 |
| #define InterlockedExchangeAddNoFence64 _InterlockedExchangeAdd64 | | #define InterlockedExchangeAddNoFence64 _InterlockedExchangeAdd64 |
| #define InterlockedCompareExchange64 _InterlockedCompareExchange64 | | #define InterlockedCompareExchange64 _InterlockedCompareExchange64 |
| #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 | | #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64 |
| #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 | | #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64 |
| | |
| skipping to change at line 2744 | | skipping to change at line 2827 |
| LONG64 | | LONG64 |
| InterlockedExchangeAdd64 ( | | InterlockedExchangeAdd64 ( |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Addend, | | _Inout_ _Interlocked_operand_ LONG64 volatile *Addend, |
| _In_ LONG64 Value | | _In_ LONG64 Value |
| ); | | ); |
| | |
| #if !defined(_X86AMD64_) | | #if !defined(_X86AMD64_) |
| | |
| __forceinline | | __forceinline |
| LONG64 | | LONG64 |
|
| InterlockedAdd64 ( | | _InlineInterlockedAdd64 ( |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Addend, | | _Inout_ _Interlocked_operand_ LONG64 volatile *Addend, |
| _In_ LONG64 Value | | _In_ LONG64 Value |
| ) | | ) |
| | |
| { | | { |
| return InterlockedExchangeAdd64(Addend, Value) + Value; | | return InterlockedExchangeAdd64(Addend, Value) + Value; |
| } | | } |
| | |
| #endif | | #endif |
| | |
| | |
| skipping to change at line 2842 | | skipping to change at line 2925 |
| _In_ SHORT ExChange | | _In_ SHORT ExChange |
| ); | | ); |
| | |
| #pragma intrinsic(_InterlockedExchange8) | | #pragma intrinsic(_InterlockedExchange8) |
| #pragma intrinsic(_InterlockedExchange16) | | #pragma intrinsic(_InterlockedExchange16) |
| | |
| #endif /* _MSC_VER >= 1600 */ | | #endif /* _MSC_VER >= 1600 */ |
| | |
| #if _MSC_FULL_VER >= 140041204 | | #if _MSC_FULL_VER >= 140041204 |
| | |
|
| | #define InterlockedExchangeAdd8 _InterlockedExchangeAdd8 |
| #define InterlockedAnd8 _InterlockedAnd8 | | #define InterlockedAnd8 _InterlockedAnd8 |
| #define InterlockedOr8 _InterlockedOr8 | | #define InterlockedOr8 _InterlockedOr8 |
| #define InterlockedXor8 _InterlockedXor8 | | #define InterlockedXor8 _InterlockedXor8 |
| #define InterlockedAnd16 _InterlockedAnd16 | | #define InterlockedAnd16 _InterlockedAnd16 |
| #define InterlockedOr16 _InterlockedOr16 | | #define InterlockedOr16 _InterlockedOr16 |
| #define InterlockedXor16 _InterlockedXor16 | | #define InterlockedXor16 _InterlockedXor16 |
| | |
| char | | char |
|
| | InterlockedExchangeAdd8 ( |
| | _Inout_ _Interlocked_operand_ char volatile * _Addend, |
| | _In_ char _Value |
| | ); |
| | |
| | char |
| InterlockedAnd8 ( | | InterlockedAnd8 ( |
| _Inout_ _Interlocked_operand_ char volatile *Destination, | | _Inout_ _Interlocked_operand_ char volatile *Destination, |
| _In_ char Value | | _In_ char Value |
| ); | | ); |
| | |
| char | | char |
| InterlockedOr8 ( | | InterlockedOr8 ( |
| _Inout_ _Interlocked_operand_ char volatile *Destination, | | _Inout_ _Interlocked_operand_ char volatile *Destination, |
| _In_ char Value | | _In_ char Value |
| ); | | ); |
| | |
| skipping to change at line 2885 | | skipping to change at line 2975 |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | _Inout_ _Interlocked_operand_ SHORT volatile *Destination, |
| _In_ SHORT Value | | _In_ SHORT Value |
| ); | | ); |
| | |
| SHORT | | SHORT |
| InterlockedXor16( | | InterlockedXor16( |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | _Inout_ _Interlocked_operand_ SHORT volatile *Destination, |
| _In_ SHORT Value | | _In_ SHORT Value |
| ); | | ); |
| | |
|
| | #pragma intrinsic (_InterlockedExchangeAdd8) |
| #pragma intrinsic (_InterlockedAnd8) | | #pragma intrinsic (_InterlockedAnd8) |
| #pragma intrinsic (_InterlockedOr8) | | #pragma intrinsic (_InterlockedOr8) |
| #pragma intrinsic (_InterlockedXor8) | | #pragma intrinsic (_InterlockedXor8) |
| #pragma intrinsic (_InterlockedAnd16) | | #pragma intrinsic (_InterlockedAnd16) |
| #pragma intrinsic (_InterlockedOr16) | | #pragma intrinsic (_InterlockedOr16) |
| #pragma intrinsic (_InterlockedXor16) | | #pragma intrinsic (_InterlockedXor16) |
| | |
| #endif | | #endif |
| | |
| // end_ntoshvp | | // end_ntoshvp |
| | |
| skipping to change at line 3479 | | skipping to change at line 3570 |
| | |
| #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | \ | | #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | \ |
| CONTEXT_FLOATING_POINT) | | CONTEXT_FLOATING_POINT) |
| | |
| #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | \ | | #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | \ |
| CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | \ | | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | \ |
| CONTEXT_DEBUG_REGISTERS) | | CONTEXT_DEBUG_REGISTERS) |
| | |
| #define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x00000040L) | | #define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x00000040L) |
| | |
|
| | #if defined(XBOX_SYSTEMOS) |
| | |
| | #define CONTEXT_KERNEL_DEBUGGER 0x04000000L |
| | |
| | #endif |
| | |
| #define CONTEXT_EXCEPTION_ACTIVE 0x08000000L | | #define CONTEXT_EXCEPTION_ACTIVE 0x08000000L |
| #define CONTEXT_SERVICE_ACTIVE 0x10000000L | | #define CONTEXT_SERVICE_ACTIVE 0x10000000L |
| #define CONTEXT_EXCEPTION_REQUEST 0x40000000L | | #define CONTEXT_EXCEPTION_REQUEST 0x40000000L |
| #define CONTEXT_EXCEPTION_REPORTING 0x80000000L | | #define CONTEXT_EXCEPTION_REPORTING 0x80000000L |
| | |
| // begin_wx86 | | // begin_wx86 |
| | |
| #endif // !defined(RC_INVOKED) | | #endif // !defined(RC_INVOKED) |
| | |
| // | | // |
| | |
| skipping to change at line 3927 | | skipping to change at line 4024 |
| #pragma intrinsic(_BitScanForward) | | #pragma intrinsic(_BitScanForward) |
| #pragma intrinsic(_BitScanReverse) | | #pragma intrinsic(_BitScanReverse) |
| | |
| // | | // |
| // Interlocked intrinsic functions. | | // Interlocked intrinsic functions. |
| // | | // |
| | |
| #pragma intrinsic(_InterlockedAnd8) | | #pragma intrinsic(_InterlockedAnd8) |
| #pragma intrinsic(_InterlockedOr8) | | #pragma intrinsic(_InterlockedOr8) |
| #pragma intrinsic(_InterlockedXor8) | | #pragma intrinsic(_InterlockedXor8) |
|
| | #pragma intrinsic(_InterlockedExchangeAdd8) |
| | |
| #pragma intrinsic(_InterlockedAnd16) | | #pragma intrinsic(_InterlockedAnd16) |
| #pragma intrinsic(_InterlockedOr16) | | #pragma intrinsic(_InterlockedOr16) |
| #pragma intrinsic(_InterlockedXor16) | | #pragma intrinsic(_InterlockedXor16) |
| #pragma intrinsic(_InterlockedIncrement16) | | #pragma intrinsic(_InterlockedIncrement16) |
| #pragma intrinsic(_InterlockedDecrement16) | | #pragma intrinsic(_InterlockedDecrement16) |
| #pragma intrinsic(_InterlockedCompareExchange16) | | #pragma intrinsic(_InterlockedCompareExchange16) |
| | |
| #pragma intrinsic(_InterlockedAnd) | | #pragma intrinsic(_InterlockedAnd) |
| #pragma intrinsic(_InterlockedOr) | | #pragma intrinsic(_InterlockedOr) |
| | |
| skipping to change at line 3958 | | skipping to change at line 4056 |
| #pragma intrinsic(_InterlockedDecrement64) | | #pragma intrinsic(_InterlockedDecrement64) |
| #pragma intrinsic(_InterlockedExchange64) | | #pragma intrinsic(_InterlockedExchange64) |
| #pragma intrinsic(_InterlockedCompareExchange64) | | #pragma intrinsic(_InterlockedCompareExchange64) |
| | |
| #pragma intrinsic(_InterlockedExchangePointer) | | #pragma intrinsic(_InterlockedExchangePointer) |
| #pragma intrinsic(_InterlockedCompareExchangePointer) | | #pragma intrinsic(_InterlockedCompareExchangePointer) |
| | |
| #define InterlockedAnd8 _InterlockedAnd8 | | #define InterlockedAnd8 _InterlockedAnd8 |
| #define InterlockedOr8 _InterlockedOr8 | | #define InterlockedOr8 _InterlockedOr8 |
| #define InterlockedXor8 _InterlockedXor8 | | #define InterlockedXor8 _InterlockedXor8 |
|
| | #define InterlockedExchangeAdd8 _InterlockedExchangeAdd8 |
| | |
| #define InterlockedAnd16 _InterlockedAnd16 | | #define InterlockedAnd16 _InterlockedAnd16 |
| #define InterlockedOr16 _InterlockedOr16 | | #define InterlockedOr16 _InterlockedOr16 |
| #define InterlockedXor16 _InterlockedXor16 | | #define InterlockedXor16 _InterlockedXor16 |
| #define InterlockedIncrement16 _InterlockedIncrement16 | | #define InterlockedIncrement16 _InterlockedIncrement16 |
| #define InterlockedDecrement16 _InterlockedDecrement16 | | #define InterlockedDecrement16 _InterlockedDecrement16 |
| #define InterlockedCompareExchange16 _InterlockedCompareExchange16 | | #define InterlockedCompareExchange16 _InterlockedCompareExchange16 |
| | |
| #define InterlockedAnd _InterlockedAnd | | #define InterlockedAnd _InterlockedAnd |
| #define InterlockedOr _InterlockedOr | | #define InterlockedOr _InterlockedOr |
| | |
| skipping to change at line 4167 | | skipping to change at line 4266 |
| #define InterlockedCompareExchangeAcquire64 _InterlockedCompareExchange64_acq | | #define InterlockedCompareExchangeAcquire64 _InterlockedCompareExchange64_acq |
| #define InterlockedCompareExchangeRelease64 _InterlockedCompareExchange64_rel | | #define InterlockedCompareExchangeRelease64 _InterlockedCompareExchange64_rel |
| #define InterlockedCompareExchangeNoFence64 _InterlockedCompareExchange64_nf | | #define InterlockedCompareExchangeNoFence64 _InterlockedCompareExchange64_nf |
| | |
| #define InterlockedExchangePointerAcquire _InterlockedExchangePointer_acq | | #define InterlockedExchangePointerAcquire _InterlockedExchangePointer_acq |
| #define InterlockedExchangePointerNoFence _InterlockedExchangePointer_nf | | #define InterlockedExchangePointerNoFence _InterlockedExchangePointer_nf |
| #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePoin
ter_acq | | #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePoin
ter_acq |
| #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePoin
ter_rel | | #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePoin
ter_rel |
| #define InterlockedCompareExchangePointerNoFence _InterlockedCompareExchangePoin
ter_nf | | #define InterlockedCompareExchangePointerNoFence _InterlockedCompareExchangePoin
ter_nf |
| | |
|
| | #define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b) |
| | #define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAddAcquire(( |
| | LONG *)a, b) |
| | #define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAddNoFence(( |
| | LONG *)a, b) |
| | #define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a) |
| | #define InterlockedIncrementSizeTNoFence(a) InterlockedIncrementNoFence((LONG *) |
| | a) |
| | #define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a) |
| | #define InterlockedDecrementSizeTNoFence(a) InterlockedDecrementNoFence((LONG *) |
| | a) |
| | |
| // | | // |
| // Define accessors for volatile loads and stores. | | // Define accessors for volatile loads and stores. |
| // | | // |
| | |
| #pragma intrinsic(__iso_volatile_load8) | | #pragma intrinsic(__iso_volatile_load8) |
| #pragma intrinsic(__iso_volatile_load16) | | #pragma intrinsic(__iso_volatile_load16) |
| #pragma intrinsic(__iso_volatile_load32) | | #pragma intrinsic(__iso_volatile_load32) |
| #pragma intrinsic(__iso_volatile_load64) | | #pragma intrinsic(__iso_volatile_load64) |
| #pragma intrinsic(__iso_volatile_store8) | | #pragma intrinsic(__iso_volatile_store8) |
| #pragma intrinsic(__iso_volatile_store16) | | #pragma intrinsic(__iso_volatile_store16) |
| | |
| skipping to change at line 4774 | | skipping to change at line 4881 |
| PULONGLONG D11; | | PULONGLONG D11; |
| PULONGLONG D12; | | PULONGLONG D12; |
| PULONGLONG D13; | | PULONGLONG D13; |
| PULONGLONG D14; | | PULONGLONG D14; |
| PULONGLONG D15; | | PULONGLONG D15; |
| | |
| } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; | | } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; |
| | |
| #endif // _ARM_ | | #endif // _ARM_ |
| | |
|
| | // |
| | // Scope table structure definition. |
| | // |
| | |
| | typedef struct _SCOPE_TABLE_ARM64 { |
| | DWORD Count; |
| | struct |
| | { |
| | DWORD BeginAddress; |
| | DWORD EndAddress; |
| | DWORD HandlerAddress; |
| | DWORD JumpTarget; |
| | } ScopeRecord[1]; |
| | } SCOPE_TABLE_ARM64, *PSCOPE_TABLE_ARM64; |
| | |
| | // begin_ntoshvp |
| | |
| | #ifdef _ARM64_ |
| | |
| | #if defined(_M_ARM64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) |
| | |
| | #include <intrin.h> |
| | |
| | #if !defined(_M_CEE_PURE) |
| | |
| | #pragma intrinsic(__getReg) |
| | #pragma intrinsic(__getCallerReg) |
| | #pragma intrinsic(__getRegFp) |
| | #pragma intrinsic(__getCallerRegFp) |
| | |
| | #pragma intrinsic(__setReg) |
| | #pragma intrinsic(__setCallerReg) |
| | #pragma intrinsic(__setRegFp) |
| | #pragma intrinsic(__setCallerRegFp) |
| | |
| | #pragma intrinsic(__readx18byte) |
| | #pragma intrinsic(__readx18word) |
| | #pragma intrinsic(__readx18dword) |
| | #pragma intrinsic(__readx18qword) |
| | |
| | #pragma intrinsic(__writex18byte) |
| | #pragma intrinsic(__writex18word) |
| | #pragma intrinsic(__writex18dword) |
| | #pragma intrinsic(__writex18qword) |
| | |
| | #pragma intrinsic(__addx18byte) |
| | #pragma intrinsic(__addx18word) |
| | #pragma intrinsic(__addx18dword) |
| | #pragma intrinsic(__addx18qword) |
| | |
| | #pragma intrinsic(__incx18byte) |
| | #pragma intrinsic(__incx18word) |
| | #pragma intrinsic(__incx18dword) |
| | #pragma intrinsic(__incx18qword) |
| | |
| | #ifdef __cplusplus |
| | extern "C" { |
| | #endif |
| | |
| | // |
| | // Memory barriers and prefetch intrinsics. |
| | // |
| | |
| | #pragma intrinsic(__yield) |
| | #pragma intrinsic(__prefetch) |
| | |
| | #pragma intrinsic(__dmb) |
| | #pragma intrinsic(__dsb) |
| | #pragma intrinsic(__isb) |
| | |
| | #pragma intrinsic(_ReadWriteBarrier) |
| | #pragma intrinsic(_WriteBarrier) |
| | |
| | FORCEINLINE |
| | VOID |
| | YieldProcessor ( |
| | VOID |
| | ) |
| | { |
| | __dmb(_ARM64_BARRIER_ISHST); |
| | __yield(); |
| | } |
| | |
| | #define MemoryBarrier() __dmb(_ARM64_BARRIER_SY) |
| | #define PreFetchCacheLine(l,a) __prefetch((const void *) (a)) |
| | #define PrefetchForWrite(p) __prefetch((const void *) (p)) |
| | #define ReadForWriteAccess(p) (*(p)) |
| | |
| | #define _DataSynchronizationBarrier() __dsb(_ARM64_BARRIER_SY) |
| | #define _InstructionSynchronizationBarrier() __isb(_ARM64_BARRIER_SY) |
| | |
| | // |
| | // Define bit test intrinsics. |
| | // |
| | |
| | #define BitTest _bittest |
| | #define BitTestAndComplement _bittestandcomplement |
| | #define BitTestAndSet _bittestandset |
| | #define BitTestAndReset _bittestandreset |
| | #define InterlockedBitTestAndSet _interlockedbittestandset |
| | #define InterlockedBitTestAndSetAcquire _interlockedbittestandset_acq |
| | #define InterlockedBitTestAndSetRelease _interlockedbittestandset_rel |
| | #define InterlockedBitTestAndSetNoFence _interlockedbittestandset_nf |
| | #define InterlockedBitTestAndReset _interlockedbittestandreset |
| | #define InterlockedBitTestAndResetAcquire _interlockedbittestandreset_acq |
| | #define InterlockedBitTestAndResetRelease _interlockedbittestandreset_rel |
| | #define InterlockedBitTestAndResetNoFence _interlockedbittestandreset_nf |
| | |
| | #define BitTest64 _bittest64 |
| | #define BitTestAndComplement64 _bittestandcomplement64 |
| | #define BitTestAndSet64 _bittestandset64 |
| | #define BitTestAndReset64 _bittestandreset64 |
| | #define InterlockedBitTestAndSet64 _interlockedbittestandset64 |
| | #define InterlockedBitTestAndSet64Acquire _interlockedbittestandset64 |
| | #define InterlockedBitTestAndSet64Release _interlockedbittestandset64 |
| | #define InterlockedBitTestAndReset64 _interlockedbittestandreset64 |
| | #define InterlockedBitTestAndReset64Acquire _interlockedbittestandreset64 |
| | #define InterlockedBitTestAndReset64Release _interlockedbittestandreset64 |
| | |
| | #pragma intrinsic(_bittest) |
| | #pragma intrinsic(_bittestandcomplement) |
| | #pragma intrinsic(_bittestandset) |
| | #pragma intrinsic(_bittestandreset) |
| | #pragma intrinsic(_interlockedbittestandset) |
| | #pragma intrinsic(_interlockedbittestandset_acq) |
| | #pragma intrinsic(_interlockedbittestandset_rel) |
| | #pragma intrinsic(_interlockedbittestandreset) |
| | #pragma intrinsic(_interlockedbittestandreset_acq) |
| | #pragma intrinsic(_interlockedbittestandreset_rel) |
| | |
| | #pragma intrinsic(_bittest64) |
| | #pragma intrinsic(_bittestandcomplement64) |
| | #pragma intrinsic(_bittestandset64) |
| | #pragma intrinsic(_bittestandreset64) |
| | |
| | #pragma intrinsic(_interlockedbittestandset64) |
| | #pragma intrinsic(_interlockedbittestandset64_acq) |
| | #pragma intrinsic(_interlockedbittestandset64_rel) |
| | #pragma intrinsic(_interlockedbittestandreset64) |
| | #pragma intrinsic(_interlockedbittestandreset64_acq) |
| | #pragma intrinsic(_interlockedbittestandreset64_rel) |
| | |
| | // |
| | // Define bit scan functions |
| | // |
| | |
| | #define BitScanForward _BitScanForward |
| | #define BitScanReverse _BitScanReverse |
| | #define BitScanForward64 _BitScanForward64 |
| | #define BitScanReverse64 _BitScanReverse64 |
| | |
| | #pragma intrinsic(_BitScanForward) |
| | #pragma intrinsic(_BitScanReverse) |
| | #pragma intrinsic(_BitScanForward64) |
| | #pragma intrinsic(_BitScanReverse64) |
| | |
| | // |
| | // Interlocked intrinsic functions. |
| | // |
| | |
| | #pragma intrinsic(_InterlockedAnd8) |
| | #pragma intrinsic(_InterlockedOr8) |
| | #pragma intrinsic(_InterlockedXor8) |
| | #pragma intrinsic(_InterlockedExchangeAdd8) |
| | |
| | #pragma intrinsic(_InterlockedAnd16) |
| | #pragma intrinsic(_InterlockedOr16) |
| | #pragma intrinsic(_InterlockedXor16) |
| | #pragma intrinsic(_InterlockedIncrement16) |
| | #pragma intrinsic(_InterlockedDecrement16) |
| | #pragma intrinsic(_InterlockedCompareExchange16) |
| | |
| | #pragma intrinsic(_InterlockedAnd) |
| | #pragma intrinsic(_InterlockedOr) |
| | #pragma intrinsic(_InterlockedXor) |
| | #pragma intrinsic(_InterlockedIncrement) |
| | #pragma intrinsic(_InterlockedDecrement) |
| | #pragma intrinsic(_InterlockedExchange) |
| | #pragma intrinsic(_InterlockedExchangeAdd) |
| | #pragma intrinsic(_InterlockedCompareExchange) |
| | |
| | #pragma intrinsic(_InterlockedAnd64) |
| | #pragma intrinsic(_InterlockedOr64) |
| | #pragma intrinsic(_InterlockedXor64) |
| | #pragma intrinsic(_InterlockedIncrement64) |
| | #pragma intrinsic(_InterlockedDecrement64) |
| | #pragma intrinsic(_InterlockedExchange64) |
| | #pragma intrinsic(_InterlockedCompareExchange64) |
| | |
| | #pragma intrinsic(_InterlockedCompareExchange128) |
| | #pragma intrinsic(_InterlockedExchangePointer) |
| | #pragma intrinsic(_InterlockedCompareExchangePointer) |
| | |
| | #define InterlockedAnd8 _InterlockedAnd8 |
| | #define InterlockedOr8 _InterlockedOr8 |
| | #define InterlockedXor8 _InterlockedXor8 |
| | #define InterlockedExchangeAdd8 _InterlockedExchangeAdd8 |
| | |
| | #define InterlockedAnd16 _InterlockedAnd16 |
| | #define InterlockedOr16 _InterlockedOr16 |
| | #define InterlockedXor16 _InterlockedXor16 |
| | #define InterlockedIncrement16 _InterlockedIncrement16 |
| | #define InterlockedDecrement16 _InterlockedDecrement16 |
| | #define InterlockedCompareExchange16 _InterlockedCompareExchange16 |
| | |
| | #define InterlockedAnd _InterlockedAnd |
| | #define InterlockedOr _InterlockedOr |
| | #define InterlockedXor _InterlockedXor |
| | #define InterlockedIncrement _InterlockedIncrement |
| | #define InterlockedDecrement _InterlockedDecrement |
| | #define InterlockedAdd _InterlockedAdd |
| | #define InterlockedExchange _InterlockedExchange |
| | #define InterlockedExchangeAdd _InterlockedExchangeAdd |
| | #define InterlockedCompareExchange _InterlockedCompareExchange |
| | |
| | #define InterlockedAnd64 _InterlockedAnd64 |
| | #define InterlockedAndAffinity InterlockedAnd64 |
| | #define InterlockedOr64 _InterlockedOr64 |
| | #define InterlockedOrAffinity InterlockedOr64 |
| | #define InterlockedXor64 _InterlockedXor64 |
| | #define InterlockedIncrement64 _InterlockedIncrement64 |
| | #define InterlockedDecrement64 _InterlockedDecrement64 |
| | #define InterlockedAdd64 _InterlockedAdd64 |
| | #define InterlockedExchange64 _InterlockedExchange64 |
| | #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 |
| | #define InterlockedCompareExchange64 _InterlockedCompareExchange64 |
| | |
| | #define InterlockedExchangePointer _InterlockedExchangePointer |
| | #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer |
| | |
| | #pragma intrinsic(_InterlockedExchange16) |
| | #define InterlockedExchange16 _InterlockedExchange16 |
| | |
| | #pragma intrinsic(_InterlockedAnd8_acq) |
| | #pragma intrinsic(_InterlockedAnd8_rel) |
| | #pragma intrinsic(_InterlockedAnd8_nf) |
| | #pragma intrinsic(_InterlockedOr8_acq) |
| | #pragma intrinsic(_InterlockedOr8_rel) |
| | #pragma intrinsic(_InterlockedOr8_nf) |
| | #pragma intrinsic(_InterlockedXor8_acq) |
| | #pragma intrinsic(_InterlockedXor8_rel) |
| | #pragma intrinsic(_InterlockedXor8_nf) |
| | |
| | #pragma intrinsic(_InterlockedAnd16_acq) |
| | #pragma intrinsic(_InterlockedAnd16_rel) |
| | #pragma intrinsic(_InterlockedAnd16_nf) |
| | #pragma intrinsic(_InterlockedOr16_acq) |
| | #pragma intrinsic(_InterlockedOr16_rel) |
| | #pragma intrinsic(_InterlockedOr16_nf) |
| | #pragma intrinsic(_InterlockedXor16_acq) |
| | #pragma intrinsic(_InterlockedXor16_rel) |
| | #pragma intrinsic(_InterlockedXor16_nf) |
| | #pragma intrinsic(_InterlockedIncrement16_acq) |
| | #pragma intrinsic(_InterlockedIncrement16_rel) |
| | #pragma intrinsic(_InterlockedIncrement16_nf) |
| | #pragma intrinsic(_InterlockedDecrement16_acq) |
| | #pragma intrinsic(_InterlockedDecrement16_rel) |
| | #pragma intrinsic(_InterlockedDecrement16_nf) |
| | #pragma intrinsic(_InterlockedExchange16_acq) |
| | #pragma intrinsic(_InterlockedExchange16_nf) |
| | #pragma intrinsic(_InterlockedCompareExchange16_acq) |
| | #pragma intrinsic(_InterlockedCompareExchange16_rel) |
| | #pragma intrinsic(_InterlockedCompareExchange16_nf) |
| | |
| | #pragma intrinsic(_InterlockedAnd_acq) |
| | #pragma intrinsic(_InterlockedAnd_rel) |
| | #pragma intrinsic(_InterlockedAnd_nf) |
| | #pragma intrinsic(_InterlockedOr_acq) |
| | #pragma intrinsic(_InterlockedOr_rel) |
| | #pragma intrinsic(_InterlockedOr_nf) |
| | #pragma intrinsic(_InterlockedXor_acq) |
| | #pragma intrinsic(_InterlockedXor_rel) |
| | #pragma intrinsic(_InterlockedXor_nf) |
| | #pragma intrinsic(_InterlockedIncrement_acq) |
| | #pragma intrinsic(_InterlockedIncrement_rel) |
| | #pragma intrinsic(_InterlockedIncrement_nf) |
| | #pragma intrinsic(_InterlockedDecrement_acq) |
| | #pragma intrinsic(_InterlockedDecrement_rel) |
| | #pragma intrinsic(_InterlockedDecrement_nf) |
| | #pragma intrinsic(_InterlockedExchange_acq) |
| | #pragma intrinsic(_InterlockedExchange_nf) |
| | #pragma intrinsic(_InterlockedExchangeAdd_acq) |
| | #pragma intrinsic(_InterlockedExchangeAdd_rel) |
| | #pragma intrinsic(_InterlockedExchangeAdd_nf) |
| | #pragma intrinsic(_InterlockedCompareExchange_rel) |
| | #pragma intrinsic(_InterlockedCompareExchange_nf) |
| | |
| | #pragma intrinsic(_InterlockedAnd64_acq) |
| | #pragma intrinsic(_InterlockedAnd64_rel) |
| | #pragma intrinsic(_InterlockedAnd64_nf) |
| | #pragma intrinsic(_InterlockedOr64_acq) |
| | #pragma intrinsic(_InterlockedOr64_rel) |
| | #pragma intrinsic(_InterlockedOr64_nf) |
| | #pragma intrinsic(_InterlockedXor64_acq) |
| | #pragma intrinsic(_InterlockedXor64_rel) |
| | #pragma intrinsic(_InterlockedXor64_nf) |
| | #pragma intrinsic(_InterlockedIncrement64_acq) |
| | #pragma intrinsic(_InterlockedIncrement64_rel) |
| | #pragma intrinsic(_InterlockedIncrement64_nf) |
| | #pragma intrinsic(_InterlockedDecrement64_acq) |
| | #pragma intrinsic(_InterlockedDecrement64_rel) |
| | #pragma intrinsic(_InterlockedDecrement64_nf) |
| | #pragma intrinsic(_InterlockedExchange64_acq) |
| | #pragma intrinsic(_InterlockedExchange64_nf) |
| | #pragma intrinsic(_InterlockedCompareExchange64_acq) |
| | #pragma intrinsic(_InterlockedCompareExchange64_rel) |
| | #pragma intrinsic(_InterlockedCompareExchange64_nf) |
| | |
| | #pragma intrinsic(_InterlockedExchangePointer_acq) |
| | #pragma intrinsic(_InterlockedExchangePointer_nf) |
| | #pragma intrinsic(_InterlockedCompareExchangePointer_acq) |
| | #pragma intrinsic(_InterlockedCompareExchangePointer_rel) |
| | #pragma intrinsic(_InterlockedCompareExchangePointer_nf) |
| | |
| | #define InterlockedAndAcquire8 _InterlockedAnd8_acq |
| | #define InterlockedAndRelease8 _InterlockedAnd8_rel |
| | #define InterlockedAndNoFence8 _InterlockedAnd8_nf |
| | #define InterlockedOrAcquire8 _InterlockedOr8_acq |
| | #define InterlockedOrRelease8 _InterlockedOr8_rel |
| | #define InterlockedOrNoFence8 _InterlockedOr8_nf |
| | #define InterlockedXorAcquire8 _InterlockedXor8_acq |
| | #define InterlockedXorRelease8 _InterlockedXor8_rel |
| | #define InterlockedXorNoFence8 _InterlockedXor8_nf |
| | |
| | #define InterlockedAndAcquire16 _InterlockedAnd16_acq |
| | #define InterlockedAndRelease16 _InterlockedAnd16_rel |
| | #define InterlockedAndNoFence16 _InterlockedAnd16_nf |
| | #define InterlockedOrAcquire16 _InterlockedOr16_acq |
| | #define InterlockedOrRelease16 _InterlockedOr16_rel |
| | #define InterlockedOrNoFence16 _InterlockedOr16_nf |
| | #define InterlockedXorAcquire16 _InterlockedXor16_acq |
| | #define InterlockedXorRelease16 _InterlockedXor16_rel |
| | #define InterlockedXorNoFence16 _InterlockedXor16_nf |
| | #define InterlockedIncrementAcquire16 _InterlockedIncrement16_acq |
| | #define InterlockedIncrementRelease16 _InterlockedIncrement16_rel |
| | #define InterlockedIncrementNoFence16 _InterlockedIncrement16_nf |
| | #define InterlockedDecrementAcquire16 _InterlockedDecrement16_acq |
| | #define InterlockedDecrementRelease16 _InterlockedDecrement16_rel |
| | #define InterlockedDecrementNoFence16 _InterlockedDecrement16_nf |
| | #define InterlockedExchangeAcquire16 _InterlockedExchange16_acq |
| | #define InterlockedExchangeNoFence16 _InterlockedExchange16_nf |
| | #define InterlockedCompareExchangeAcquire16 _InterlockedCompareExchange16_acq |
| | #define InterlockedCompareExchangeRelease16 _InterlockedCompareExchange16_rel |
| | #define InterlockedCompareExchangeNoFence16 _InterlockedCompareExchange16_nf |
| | |
| | #define InterlockedAndAcquire _InterlockedAnd_acq |
| | #define InterlockedAndRelease _InterlockedAnd_rel |
| | #define InterlockedAndNoFence _InterlockedAnd_nf |
| | #define InterlockedOrAcquire _InterlockedOr_acq |
| | #define InterlockedOrRelease _InterlockedOr_rel |
| | #define InterlockedOrNoFence _InterlockedOr_nf |
| | #define InterlockedXorAcquire _InterlockedXor_acq |
| | #define InterlockedXorRelease _InterlockedXor_rel |
| | #define InterlockedXorNoFence _InterlockedXor_nf |
| | #define InterlockedIncrementAcquire _InterlockedIncrement_acq |
| | #define InterlockedIncrementRelease _InterlockedIncrement_rel |
| | #define InterlockedIncrementNoFence _InterlockedIncrement_nf |
| | #define InterlockedDecrementAcquire _InterlockedDecrement_acq |
| | #define InterlockedDecrementRelease _InterlockedDecrement_rel |
| | #define InterlockedDecrementNoFence _InterlockedDecrement_nf |
| | #define InterlockedAddAcquire _InterlockedAdd_acq |
| | #define InterlockedAddRelease _InterlockedAdd_rel |
| | #define InterlockedAddNoFence _InterlockedAdd_nf |
| | #define InterlockedExchangeAcquire _InterlockedExchange_acq |
| | #define InterlockedExchangeNoFence _InterlockedExchange_nf |
| | #define InterlockedExchangeAddAcquire _InterlockedExchangeAdd_acq |
| | #define InterlockedExchangeAddRelease _InterlockedExchangeAdd_rel |
| | #define InterlockedExchangeAddNoFence _InterlockedExchangeAdd_nf |
| | #define InterlockedCompareExchangeAcquire _InterlockedCompareExchange_acq |
| | #define InterlockedCompareExchangeRelease _InterlockedCompareExchange_rel |
| | #define InterlockedCompareExchangeNoFence _InterlockedCompareExchange_nf |
| | |
| | #define InterlockedAndAcquire64 _InterlockedAnd64_acq |
| | #define InterlockedAndRelease64 _InterlockedAnd64_rel |
| | #define InterlockedAndNoFence64 _InterlockedAnd64_nf |
| | #define InterlockedOrAcquire64 _InterlockedOr64_acq |
| | #define InterlockedOrRelease64 _InterlockedOr64_rel |
| | #define InterlockedOrNoFence64 _InterlockedOr64_nf |
| | #define InterlockedXorAcquire64 _InterlockedXor64_acq |
| | #define InterlockedXorRelease64 _InterlockedXor64_rel |
| | #define InterlockedXorNoFence64 _InterlockedXor64_nf |
| | #define InterlockedIncrementAcquire64 _InterlockedIncrement64_acq |
| | #define InterlockedIncrementRelease64 _InterlockedIncrement64_rel |
| | #define InterlockedIncrementNoFence64 _InterlockedIncrement64_nf |
| | #define InterlockedDecrementAcquire64 _InterlockedDecrement64_acq |
| | #define InterlockedDecrementRelease64 _InterlockedDecrement64_rel |
| | #define InterlockedDecrementNoFence64 _InterlockedDecrement64_nf |
| | #define InterlockedAddAcquire64 _InterlockedAdd64_acq |
| | #define InterlockedAddRelease64 _InterlockedAdd64_rel |
| | #define InterlockedAddNoFence64 _InterlockedAdd64_nf |
| | #define InterlockedExchangeAcquire64 _InterlockedExchange64_acq |
| | #define InterlockedExchangeNoFence64 _InterlockedExchange64_nf |
| | #define InterlockedExchangeAddAcquire64 _InterlockedExchangeAdd64_acq |
| | #define InterlockedExchangeAddRelease64 _InterlockedExchangeAdd64_rel |
| | #define InterlockedExchangeAddNoFence64 _InterlockedExchangeAdd64_nf |
| | #define InterlockedCompareExchangeAcquire64 _InterlockedCompareExchange64_acq |
| | #define InterlockedCompareExchangeRelease64 _InterlockedCompareExchange64_rel |
| | #define InterlockedCompareExchangeNoFence64 _InterlockedCompareExchange64_nf |
| | #define InterlockedCompareExchange128 _InterlockedCompareExchange128 |
| | |
| | // AMD64_WORKITEM : these are redundant but necessary for AMD64 compatibility |
| | #define InterlockedAnd64Acquire _InterlockedAnd64_acq |
| | #define InterlockedAnd64Release _InterlockedAnd64_rel |
| | #define InterlockedAnd64NoFence _InterlockedAnd64_nf |
| | #define InterlockedOr64Acquire _InterlockedOr64_acq |
| | #define InterlockedOr64Release _InterlockedOr64_rel |
| | #define InterlockedOr64NoFence _InterlockedOr64_nf |
| | #define InterlockedXor64Acquire _InterlockedXor64_acq |
| | #define InterlockedXor64Release _InterlockedXor64_rel |
| | #define InterlockedXor64NoFence _InterlockedXor64_nf |
| | |
| | #define InterlockedExchangePointerAcquire _InterlockedExchangePointer_acq |
| | #define InterlockedExchangePointerNoFence _InterlockedExchangePointer_nf |
| | #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePoin |
| | ter_acq |
| | #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePoin |
| | ter_rel |
| | #define InterlockedCompareExchangePointerNoFence _InterlockedCompareExchangePoin |
| | ter_nf |
| | |
| | #define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONG64 *)a, |
| | b) |
| | #define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAddAcquire64 |
| | ((LONG64 *)a, b) |
| | #define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAddNoFence64 |
| | ((LONG64 *)a, b) |
| | #define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a) |
| | #define InterlockedIncrementSizeTNoFence(a) InterlockedIncrementNoFence64((LONG6 |
| | 4 *)a) |
| | #define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a) |
| | #define InterlockedDecrementSizeTNoFence(a) InterlockedDecrementNoFence64((LONG6 |
| | 4 *)a) |
| | |
| | // |
| | // Define accessors for volatile loads and stores. |
| | // |
| | |
| | #pragma intrinsic(__iso_volatile_load8) |
| | #pragma intrinsic(__iso_volatile_load16) |
| | #pragma intrinsic(__iso_volatile_load32) |
| | #pragma intrinsic(__iso_volatile_load64) |
| | #pragma intrinsic(__iso_volatile_store8) |
| | #pragma intrinsic(__iso_volatile_store16) |
| | #pragma intrinsic(__iso_volatile_store32) |
| | #pragma intrinsic(__iso_volatile_store64) |
| | |
| | // end_wdm end_ntndis end_ntosp end_ntminiport |
| | // end_ntoshvp |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) |
| | // begin_ntoshvp |
| | // begin_wdm begin_ntndis begin_ntosp begin_ntminiport |
| | |
| | FORCEINLINE |
| | CHAR |
| | ReadAcquire8 ( |
| | _In_ _Interlocked_operand_ CHAR const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | CHAR Value; |
| | |
| | Value = __iso_volatile_load8(Source); |
| | __dmb(_ARM64_BARRIER_ISH); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | CHAR |
| | ReadNoFence8 ( |
| | _In_ _Interlocked_operand_ CHAR const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | CHAR Value; |
| | |
| | Value = __iso_volatile_load8(Source); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteRelease8 ( |
| | _Out_ _Interlocked_operand_ CHAR volatile *Destination, |
| | _In_ CHAR Value |
| | ) |
| | |
| | { |
| | |
| | __dmb(_ARM64_BARRIER_ISH); |
| | __iso_volatile_store8(Destination, Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteNoFence8 ( |
| | _Out_ _Interlocked_operand_ CHAR volatile *Destination, |
| | _In_ CHAR Value |
| | ) |
| | |
| | { |
| | |
| | __iso_volatile_store8(Destination, Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | SHORT |
| | ReadAcquire16 ( |
| | _In_ _Interlocked_operand_ SHORT const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | SHORT Value; |
| | |
| | Value = __iso_volatile_load16(Source); |
| | __dmb(_ARM64_BARRIER_ISH); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | SHORT |
| | ReadNoFence16 ( |
| | _In_ _Interlocked_operand_ SHORT const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | SHORT Value; |
| | |
| | Value = __iso_volatile_load16(Source); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteRelease16 ( |
| | _Out_ _Interlocked_operand_ SHORT volatile *Destination, |
| | _In_ SHORT Value |
| | ) |
| | |
| | { |
| | |
| | __dmb(_ARM64_BARRIER_ISH); |
| | __iso_volatile_store16(Destination, Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteNoFence16 ( |
| | _Out_ _Interlocked_operand_ SHORT volatile *Destination, |
| | _In_ SHORT Value |
| | ) |
| | |
| | { |
| | |
| | __iso_volatile_store16(Destination, Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | LONG |
| | ReadAcquire ( |
| | _In_ _Interlocked_operand_ LONG const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | LONG Value; |
| | |
| | Value = __iso_volatile_load32((int *)Source); |
| | __dmb(_ARM64_BARRIER_ISH); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | LONG |
| | ReadNoFence ( |
| | _In_ _Interlocked_operand_ LONG const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | LONG Value; |
| | |
| | Value = __iso_volatile_load32((int *)Source); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteRelease ( |
| | _Out_ _Interlocked_operand_ LONG volatile *Destination, |
| | _In_ LONG Value |
| | ) |
| | |
| | { |
| | |
| | __dmb(_ARM64_BARRIER_ISH); |
| | __iso_volatile_store32((int *)Destination, Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteNoFence ( |
| | _Out_ _Interlocked_operand_ LONG volatile *Destination, |
| | _In_ LONG Value |
| | ) |
| | |
| | { |
| | |
| | __iso_volatile_store32((int *)Destination, Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | LONG64 |
| | ReadAcquire64 ( |
| | _In_ _Interlocked_operand_ LONG64 const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | LONG64 Value; |
| | |
| | Value = __iso_volatile_load64(Source); |
| | __dmb(_ARM64_BARRIER_ISH); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | LONG64 |
| | ReadNoFence64 ( |
| | _In_ _Interlocked_operand_ LONG64 const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | LONG64 Value; |
| | |
| | Value = __iso_volatile_load64(Source); |
| | return Value; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteRelease64 ( |
| | _Out_ _Interlocked_operand_ LONG64 volatile *Destination, |
| | _In_ LONG64 Value |
| | ) |
| | |
| | { |
| | |
| | __dmb(_ARM64_BARRIER_ISH); |
| | __iso_volatile_store64(Destination, Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteNoFence64 ( |
| | _Out_ _Interlocked_operand_ LONG64 volatile *Destination, |
| | _In_ LONG64 Value |
| | ) |
| | |
| | { |
| | |
| | __iso_volatile_store64(Destination, Value); |
| | return; |
| | } |
| | |
| | // end_wdm end_ntndis end_ntosp end_ntminiport |
| | // end_ntoshvp |
| | #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) |
| | // begin_ntoshvp |
| | // begin_wdm begin_ntndis begin_ntosp begin_ntminiport |
| | |
| | // |
| | // Define coprocessor access intrinsics. Coprocessor 15 contains |
| | // registers for the MMU, cache, TLB, feature bits, core |
| | // identification and performance counters. |
| | // |
| | |
| | #define ARM64_SYSREG(op0, op1, crn, crm, op2) \ |
| | ( ((op0 & 1) << 14) | \ |
| | ((op1 & 7) << 11) | \ |
| | ((crn & 15) << 7) | \ |
| | ((crm & 15) << 3) | \ |
| | ((op2 & 7) << 0) ) |
| | |
| | #define ARM64_PMCCNTR_EL0 ARM64_SYSREG(3,3, 9,13,0) // Cycle Count Regist |
| | er [CP15_PMCCNTR] |
| | #define ARM64_PMSELR_EL0 ARM64_SYSREG(3,3, 9,12,5) // Event Counter Sele |
| | ction Register [CP15_PMSELR] |
| | #define ARM64_PMXEVCNTR_EL0 ARM64_SYSREG(3,3, 9,13,2) // Event Count Regist |
| | er [CP15_PMXEVCNTR] |
| | #define ARM64_PMXEVCNTRn_EL0(n) ARM64_SYSREG(3,3,14, 8+((n)/8), (n)%8) // Dir |
| | ect Event Count Register [n/a] |
| | #define ARM64_TPIDR_EL0 ARM64_SYSREG(3,3,13, 0,2) // Thread ID Register |
| | , User Read/Write [CP15_TPIDRURW] |
| | #define ARM64_TPIDRRO_EL0 ARM64_SYSREG(3,3,13, 0,3) // Thread ID Register |
| | , User Read Only [CP15_TPIDRURO] |
| | #define ARM64_TPIDR_EL1 ARM64_SYSREG(3,0,13, 0,4) // Thread ID Register |
| | , Privileged Only [CP15_TPIDRPRW] |
| | |
| | #pragma intrinsic(_WriteStatusReg) |
| | #pragma intrinsic(_ReadStatusReg) |
| | |
| | // |
| | // PreFetchCacheLine level defines. |
| | // |
| | |
| | #define PF_TEMPORAL_LEVEL_1 0 |
| | #define PF_TEMPORAL_LEVEL_2 1 |
| | #define PF_TEMPORAL_LEVEL_3 2 |
| | #define PF_NON_TEMPORAL_LEVEL_ALL 3 |
| | |
| | // |
| | // Define function to read the value of the time stamp counter. |
| | // |
| | |
| | FORCEINLINE |
| | DWORD64 |
| | ReadTimeStampCounter( |
| | VOID |
| | ) |
| | { |
| | return (DWORD64)_ReadStatusReg(ARM64_PMCCNTR_EL0); |
| | } |
| | |
| | FORCEINLINE |
| | DWORD64 |
| | ReadPMC ( |
| | _In_ DWORD Counter |
| | ) |
| | { |
| | // ARM64_WORKITEM: These can be directly accessed, but |
| | // given our usage, it that any benefit? We need to know |
| | // the register index at compile time, though atomicity |
| | // benefits would still be good if needed, even if we |
| | // went with a big switch statement. |
| | _WriteStatusReg(ARM64_PMSELR_EL0, Counter); |
| | return (DWORD64)_ReadStatusReg(ARM64_PMXEVCNTR_EL0); |
| | } |
| | |
| | // |
| | // Define functions to capture the high 64-bits of a 128-bit multiply. |
| | // |
| | |
| | #define MultiplyHigh __mulh |
| | #define UnsignedMultiplyHigh __umulh |
| | |
| | #pragma intrinsic(__mulh) |
| | #pragma intrinsic(__umulh) |
| | |
| | #ifdef __cplusplus |
| | } |
| | #endif |
| | |
| | #endif // !defined(_M_CEE_PURE) |
| | |
| | #endif // defined(_M_ARM64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) |
| | |
| | #if defined(_M_CEE_PURE) |
| | FORCEINLINE |
| | VOID |
| | YieldProcessor ( |
| | VOID |
| | ) |
| | { |
| | } |
| | #endif |
| | |
| | // end_ntoshvp |
| | // |
| | // The following values specify the type of access in the first parameter |
| | // of the exception record whan the exception code specifies an access |
| | // violation. |
| | // |
| | |
| | #define EXCEPTION_READ_FAULT 0 // exception caused by a read |
| | #define EXCEPTION_WRITE_FAULT 1 // exception caused by a write |
| | #define EXCEPTION_EXECUTE_FAULT 8 // exception caused by an instruction fe |
| | tch |
| | |
| | // begin_wx86 |
| | // |
| | // The following flags control the contents of the CONTEXT structure. |
| | // |
| | |
| | #if !defined(RC_INVOKED) |
| | |
| | #define CONTEXT_ARM64 0x00400000L |
| | |
| | // end_wx86 |
| | |
| | #define CONTEXT_CONTROL (CONTEXT_ARM64 | 0x1L) |
| | #define CONTEXT_INTEGER (CONTEXT_ARM64 | 0x2L) |
| | #define CONTEXT_FLOATING_POINT (CONTEXT_ARM64 | 0x4L) |
| | #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM64 | 0x8L) |
| | |
| | #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT |
| | ) |
| | |
| | #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT |
| | | CONTEXT_DEBUG_REGISTERS) |
| | |
| | #define CONTEXT_EXCEPTION_ACTIVE 0x8000000L |
| | #define CONTEXT_SERVICE_ACTIVE 0x10000000L |
| | #define CONTEXT_EXCEPTION_REQUEST 0x40000000L |
| | #define CONTEXT_EXCEPTION_REPORTING 0x80000000L |
| | |
| | // |
| | // This flag is set by the unwinder if it has unwound to a call |
| | // site, and cleared whenever it unwinds through a trap frame. |
| | // It is used by language-specific exception handlers to help |
| | // differentiate exception scopes during dispatching. |
| | // |
| | |
| | #define CONTEXT_UNWOUND_TO_CALL 0x20000000 |
| | |
| | // begin_wx86 |
| | |
| | #endif // !defined(RC_INVOKED) |
| | |
| | // |
| | // Define initial Cpsr/Fpscr value |
| | // |
| | |
| | #define INITIAL_CPSR 0x10 |
| | #define INITIAL_FPSCR 0 |
| | |
| | // begin_ntoshvp |
| | |
| | // |
| | // Specify the number of breakpoints and watchpoints that the OS |
| | // will track. Architecturally, ARM64 supports up to 16. In practice, |
| | // however, almost no one implements more than 4 of each. |
| | // |
| | |
| | #define ARM64_MAX_BREAKPOINTS 8 |
| | #define ARM64_MAX_WATCHPOINTS 2 |
| | |
| | // |
| | // Context Frame |
| | // |
| | // This frame has a several purposes: 1) it is used as an argument to |
| | // NtContinue, 2) it is used to constuct a call frame for APC delivery, |
| | // and 3) it is used in the user level thread creation routines. |
| | // |
| | // |
| | // The flags field within this record controls the contents of a CONTEXT |
| | // record. |
| | // |
| | // If the context record is used as an input parameter, then for each |
| | // portion of the context record controlled by a flag whose value is |
| | // set, it is assumed that that portion of the context record contains |
| | // valid context. If the context record is being used to modify a threads |
| | // context, then only that portion of the threads context is modified. |
| | // |
| | // If the context record is used as an output parameter to capture the |
| | // context of a thread, then only those portions of the thread's context |
| | // corresponding to set flags will be returned. |
| | // |
| | // CONTEXT_CONTROL specifies Sp, Lr, Pc, and Cpsr |
| | // |
| | // CONTEXT_INTEGER specifies R0-R12 |
| | // |
| | // CONTEXT_FLOATING_POINT specifies Q0-Q15 / D0-D31 / S0-S31 |
| | // |
| | // CONTEXT_DEBUG_REGISTERS specifies up to 16 of DBGBVR, DBGBCR, DBGWVR, |
| | // DBGWCR. |
| | // |
| | |
| | typedef union _NEON128 { |
| | struct { |
| | ULONGLONG Low; |
| | LONGLONG High; |
| | } DUMMYSTRUCTNAME; |
| | double D[2]; |
| | float S[4]; |
| | WORD H[8]; |
| | BYTE B[16]; |
| | } NEON128, *PNEON128; |
| | |
| | typedef struct DECLSPEC_ALIGN(16) _CONTEXT { |
| | |
| | // |
| | // Control flags. |
| | // |
| | |
| | /* +0x000 */ DWORD ContextFlags; |
| | |
| | // |
| | // Integer registers |
| | // |
| | |
| | /* +0x004 */ DWORD Cpsr; // NZVF + DAIF + CurrentEL + SPSel |
| | /* +0x008 */ union { |
| | struct { |
| | DWORD64 X0; |
| | DWORD64 X1; |
| | DWORD64 X2; |
| | DWORD64 X3; |
| | DWORD64 X4; |
| | DWORD64 X5; |
| | DWORD64 X6; |
| | DWORD64 X7; |
| | DWORD64 X8; |
| | DWORD64 X9; |
| | DWORD64 X10; |
| | DWORD64 X11; |
| | DWORD64 X12; |
| | DWORD64 X13; |
| | DWORD64 X14; |
| | DWORD64 X15; |
| | DWORD64 X16; |
| | DWORD64 X17; |
| | DWORD64 X18; |
| | DWORD64 X19; |
| | DWORD64 X20; |
| | DWORD64 X21; |
| | DWORD64 X22; |
| | DWORD64 X23; |
| | DWORD64 X24; |
| | DWORD64 X25; |
| | DWORD64 X26; |
| | DWORD64 X27; |
| | DWORD64 X28; |
| | } DUMMYSTRUCTNAME; |
| | DWORD64 X[29]; |
| | } DUMMYUNIONNAME; |
| | /* +0x0f0 */ DWORD64 Fp; |
| | /* +0x0f8 */ DWORD64 Lr; |
| | /* +0x100 */ DWORD64 Sp; |
| | /* +0x108 */ DWORD64 Pc; |
| | |
| | // |
| | // Floating Point/NEON Registers |
| | // |
| | |
| | /* +0x110 */ NEON128 V[32]; |
| | /* +0x310 */ DWORD Fpcr; |
| | /* +0x314 */ DWORD Fpsr; |
| | |
| | // |
| | // Debug registers |
| | // |
| | |
| | /* +0x318 */ DWORD Bcr[ARM64_MAX_BREAKPOINTS]; |
| | /* +0x338 */ DWORD64 Bvr[ARM64_MAX_BREAKPOINTS]; |
| | /* +0x378 */ DWORD Wcr[ARM64_MAX_WATCHPOINTS]; |
| | /* +0x380 */ DWORD64 Wvr[ARM64_MAX_WATCHPOINTS]; |
| | /* +0x390 */ |
| | |
| | } CONTEXT, *PCONTEXT; |
| | |
| | // end_ntoshvp |
| | // |
| | // Select platform-specific definitions |
| | // |
| | |
| | typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_F |
| | UNCTION; |
| | typedef SCOPE_TABLE_ARM64 SCOPE_TABLE, *PSCOPE_TABLE; |
| | |
| | // |
| | // Define unwind information flags. |
| | // |
| | |
| | #define UNW_FLAG_NHANDLER 0x0 /* any handler */ |
| | #define UNW_FLAG_EHANDLER 0x1 /* filter handler */ |
| | #define UNW_FLAG_UHANDLER 0x2 /* unwind handler */ |
| | |
| | // |
| | // Define unwind history table structure. |
| | // |
| | |
| | #define UNWIND_HISTORY_TABLE_SIZE 12 |
| | |
| | typedef struct _UNWIND_HISTORY_TABLE_ENTRY { |
| | DWORD64 ImageBase; |
| | PRUNTIME_FUNCTION FunctionEntry; |
| | } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; |
| | |
| | typedef struct _UNWIND_HISTORY_TABLE { |
| | DWORD Count; |
| | BYTE LocalHint; |
| | BYTE GlobalHint; |
| | BYTE Search; |
| | BYTE Once; |
| | DWORD64 LowAddress; |
| | DWORD64 HighAddress; |
| | UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; |
| | } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; |
| | |
| | // |
| | // Define exception dispatch context structure. |
| | // |
| | |
| | typedef struct _DISPATCHER_CONTEXT { |
| | DWORD64 ControlPc; |
| | DWORD64 ImageBase; |
| | PRUNTIME_FUNCTION FunctionEntry; |
| | DWORD64 EstablisherFrame; |
| | DWORD64 TargetPc; |
| | PCONTEXT ContextRecord; |
| | PEXCEPTION_ROUTINE LanguageHandler; |
| | PVOID HandlerData; |
| | PUNWIND_HISTORY_TABLE HistoryTable; |
| | DWORD ScopeIndex; |
| | BOOLEAN ControlPcIsUnwound; |
| | PBYTE NonVolatileRegisters; |
| | } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; |
| | |
| | // |
| | // Define exception filter and termination handler function types. |
| | // N.B. These functions use a custom calling convention. |
| | // |
| | |
| | struct _EXCEPTION_POINTERS; |
| | typedef |
| | LONG |
| | (*PEXCEPTION_FILTER) ( |
| | struct _EXCEPTION_POINTERS *ExceptionPointers, |
| | DWORD64 EstablisherFrame |
| | ); |
| | |
| | typedef |
| | VOID |
| | (*PTERMINATION_HANDLER) ( |
| | BOOLEAN AbnormalTermination, |
| | DWORD64 EstablisherFrame |
| | ); |
| | |
| | // |
| | // Define dynamic function table entry. |
| | // |
| | |
| | typedef |
| | _Function_class_(GET_RUNTIME_FUNCTION_CALLBACK) |
| | PRUNTIME_FUNCTION |
| | GET_RUNTIME_FUNCTION_CALLBACK ( |
| | _In_ DWORD64 ControlPc, |
| | _In_opt_ PVOID Context |
| | ); |
| | typedef GET_RUNTIME_FUNCTION_CALLBACK *PGET_RUNTIME_FUNCTION_CALLBACK; |
| | |
| | typedef |
| | _Function_class_(OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK) |
| | DWORD |
| | OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK ( |
| | _In_ HANDLE Process, |
| | _In_ PVOID TableAddress, |
| | _Out_ PDWORD Entries, |
| | _Out_ PRUNTIME_FUNCTION* Functions |
| | ); |
| | typedef OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK *POUT_OF_PROCESS_FUNCTION_TABLE_C |
| | ALLBACK; |
| | |
| | #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME \ |
| | "OutOfProcessFunctionTableCallback" |
| | |
| | // |
| | // Nonvolatile context pointer record. |
| | // |
| | |
| | typedef struct _KNONVOLATILE_CONTEXT_POINTERS { |
| | |
| | PDWORD64 X19; |
| | PDWORD64 X20; |
| | PDWORD64 X21; |
| | PDWORD64 X22; |
| | PDWORD64 X23; |
| | PDWORD64 X24; |
| | PDWORD64 X25; |
| | PDWORD64 X26; |
| | PDWORD64 X27; |
| | PDWORD64 X28; |
| | PDWORD64 Fp; |
| | PDWORD64 Lr; |
| | |
| | PDWORD64 D8; |
| | PDWORD64 D9; |
| | PDWORD64 D10; |
| | PDWORD64 D11; |
| | PDWORD64 D12; |
| | PDWORD64 D13; |
| | PDWORD64 D14; |
| | PDWORD64 D15; |
| | |
| | } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; |
| | |
| | // begin_ntoshvp |
| | |
| | #endif // _ARM64_ |
| | |
| | // end_ntoshvp |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| extern "C" { | | extern "C" { |
| #endif | | #endif |
| | |
| // | | // |
| // Assert exception. | | // Assert exception. |
| // | | // |
| | |
| #if !defined(_DBGRAISEASSERTIONFAILURE_) && !defined(RC_INVOKED) && !defined(MID
L_PASS) | | #if !defined(_DBGRAISEASSERTIONFAILURE_) && !defined(RC_INVOKED) && !defined(MID
L_PASS) |
| | |
| | |
| skipping to change at line 4883 | | skipping to change at line 6074 |
| #define ASSERT_BREAKPOINT (BREAK_DEBUG_BASE+3) // Cause a STATUS_ASSERT
ION_FAILURE exception to be raised. | | #define ASSERT_BREAKPOINT (BREAK_DEBUG_BASE+3) // Cause a STATUS_ASSERT
ION_FAILURE exception to be raised. |
| | |
| #if !defined(_PREFAST_) | | #if !defined(_PREFAST_) |
| | |
| #define DbgRaiseAssertionFailure() __break(ASSERT_BREAKPOINT) | | #define DbgRaiseAssertionFailure() __break(ASSERT_BREAKPOINT) |
| | |
| #endif // !defined(_PREFAST_) | | #endif // !defined(_PREFAST_) |
| | |
| #endif // defined(_M_IA64) | | #endif // defined(_M_IA64) |
| | |
|
| | #elif defined(_ARM64_) |
| | |
| | #if defined(_M_ARM64) |
| | |
| | void |
| | __break( |
| | _In_ int Code |
| | ); |
| | |
| | #pragma intrinsic (__break) |
| | |
| | #if !defined(_PREFAST_) |
| | |
| | #define DbgRaiseAssertionFailure() __break(0xf001) |
| | |
| | #endif // !defined(_PREFAST_) |
| | |
| | #endif // defined(_M_ARM64) |
| | |
| #elif defined(_ARM_) | | #elif defined(_ARM_) |
| | |
| #if defined(_M_ARM) | | #if defined(_M_ARM) |
| | |
| VOID | | VOID |
| __emit( | | __emit( |
| const unsigned __int32 opcode | | const unsigned __int32 opcode |
| ); | | ); |
| | |
| #pragma intrinsic(__emit) | | #pragma intrinsic(__emit) |
| | |
| #if !defined(_PREFAST_) | | #if !defined(_PREFAST_) |
| | |
| #define DbgRaiseAssertionFailure() __emit(0xdefc) // THUMB_ASSERT | | #define DbgRaiseAssertionFailure() __emit(0xdefc) // THUMB_ASSERT |
| | |
| #endif // !defined(_PREFAST_) | | #endif // !defined(_PREFAST_) |
| | |
| #endif // defined(_M_ARM) | | #endif // defined(_M_ARM) |
| | |
|
| #endif // _AMD64_, _X86_, _IA64_, _ARM_ | | #endif // _AMD64_, _X86_, _IA64_, _ARM64_, _ARM_ |
| #endif // !defined(_DBGRAISEASSERTIONFAILURE_) && !defined(RC_INVOKED) && !defin
ed(MIDL_PASS) | | #endif // !defined(_DBGRAISEASSERTIONFAILURE_) && !defined(RC_INVOKED) && !defin
ed(MIDL_PASS) |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| } | | } |
| #endif | | #endif |
| | |
| // begin_ntoshvp | | // begin_ntoshvp |
| | |
| #ifdef _X86_ | | #ifdef _X86_ |
| | |
| | |
| skipping to change at line 4982 | | skipping to change at line 6192 |
| #define InterlockedBitTestAndSetRelease _interlockedbittestandset | | #define InterlockedBitTestAndSetRelease _interlockedbittestandset |
| #define InterlockedBitTestAndSetNoFence _interlockedbittestandset | | #define InterlockedBitTestAndSetNoFence _interlockedbittestandset |
| #define InterlockedBitTestAndReset _interlockedbittestandreset | | #define InterlockedBitTestAndReset _interlockedbittestandreset |
| #define InterlockedBitTestAndResetAcquire _interlockedbittestandreset | | #define InterlockedBitTestAndResetAcquire _interlockedbittestandreset |
| #define InterlockedBitTestAndResetRelease _interlockedbittestandreset | | #define InterlockedBitTestAndResetRelease _interlockedbittestandreset |
| #define InterlockedBitTestAndResetNoFence _interlockedbittestandreset | | #define InterlockedBitTestAndResetNoFence _interlockedbittestandreset |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| BOOLEAN | | BOOLEAN |
| _bittest ( | | _bittest ( |
|
| _In_reads_bytes_((Offset+7)/8) LONG const *Base, | | _In_reads_bytes_((Offset/8)+1) LONG const *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandcomplement ( | | _bittestandcomplement ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandset ( | | _bittestandset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _bittestandreset ( | | _bittestandreset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | _Inout_updates_bytes_((Offset/8)+1) LONG *Base, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _interlockedbittestandset ( | | _interlockedbittestandset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) _Interlocked_operand_ LONG volatile *Bas | | _Inout_updates_bytes_((Offset/8)+1) _Interlocked_operand_ LONG volatile *Bas |
| e, | | e, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| BOOLEAN | | BOOLEAN |
| _interlockedbittestandreset ( | | _interlockedbittestandreset ( |
|
| _Inout_updates_bytes_((Offset+7)/8) _Interlocked_operand_ LONG volatile *Bas | | _Inout_updates_bytes_((Offset/8)+1) _Interlocked_operand_ LONG volatile *Bas |
| e, | | e, |
| _In_ LONG Offset | | _In_range_(>=,0) LONG Offset |
| ); | | ); |
| | |
| #pragma intrinsic(_bittest) | | #pragma intrinsic(_bittest) |
| #pragma intrinsic(_bittestandcomplement) | | #pragma intrinsic(_bittestandcomplement) |
| #pragma intrinsic(_bittestandset) | | #pragma intrinsic(_bittestandset) |
| #pragma intrinsic(_bittestandreset) | | #pragma intrinsic(_bittestandreset) |
| #pragma intrinsic(_interlockedbittestandset) | | #pragma intrinsic(_interlockedbittestandset) |
| #pragma intrinsic(_interlockedbittestandreset) | | #pragma intrinsic(_interlockedbittestandreset) |
| | |
| // | | // |
| | |
| skipping to change at line 5047 | | skipping to change at line 6257 |
| _Success_(return != 0) | | _Success_(return != 0) |
| BOOLEAN | | BOOLEAN |
| _BitScanReverse ( | | _BitScanReverse ( |
| _Out_ DWORD *Index, | | _Out_ DWORD *Index, |
| _In_ DWORD Mask | | _In_ DWORD Mask |
| ); | | ); |
| | |
| #pragma intrinsic(_BitScanForward) | | #pragma intrinsic(_BitScanForward) |
| #pragma intrinsic(_BitScanReverse) | | #pragma intrinsic(_BitScanReverse) |
| | |
|
| | _Success_(return != 0) |
| | FORCEINLINE |
| | BOOLEAN |
| | _InlineBitScanForward64 ( |
| | _Out_ DWORD *Index, |
| | _In_ DWORD64 Mask |
| | ) |
| | { |
| | if (_BitScanForward(Index, (DWORD)Mask)) { |
| | return 1; |
| | } |
| | |
| | if (_BitScanForward(Index, (DWORD)(Mask >> 32))) { |
| | *Index += 32; |
| | return 1; |
| | } |
| | |
| | return 0; |
| | } |
| | |
| | #define BitScanForward64 _InlineBitScanForward64 |
| | |
| | _Success_(return != 0) |
| | FORCEINLINE |
| | BOOLEAN |
| | _InlineBitScanReverse64 ( |
| | _Out_ DWORD *Index, |
| | _In_ DWORD64 Mask |
| | ) |
| | { |
| | if (_BitScanReverse(Index, (DWORD)(Mask >> 32))) { |
| | *Index += 32; |
| | return 1; |
| | } |
| | |
| | if (_BitScanReverse(Index, (DWORD)Mask)) { |
| | return 1; |
| | } |
| | |
| | return 0; |
| | } |
| | |
| | #define BitScanReverse64 _InlineBitScanReverse64 |
| | |
| #endif // !defined(_MANAGED) | | #endif // !defined(_MANAGED) |
| | |
| // | | // |
| // Interlocked intrinsic functions. | | // Interlocked intrinsic functions. |
| // | | // |
| | |
| #if !defined(_MANAGED) | | #if !defined(_MANAGED) |
| | |
| #define InterlockedIncrement16 _InterlockedIncrement16 | | #define InterlockedIncrement16 _InterlockedIncrement16 |
| #define InterlockedIncrementAcquire16 _InterlockedIncrement16 | | #define InterlockedIncrementAcquire16 _InterlockedIncrement16 |
| | |
| skipping to change at line 5131 | | skipping to change at line 6385 |
| #define InterlockedIncrement _InterlockedIncrement | | #define InterlockedIncrement _InterlockedIncrement |
| #define InterlockedIncrementAcquire _InterlockedIncrement | | #define InterlockedIncrementAcquire _InterlockedIncrement |
| #define InterlockedIncrementRelease _InterlockedIncrement | | #define InterlockedIncrementRelease _InterlockedIncrement |
| #define InterlockedIncrementNoFence _InterlockedIncrement | | #define InterlockedIncrementNoFence _InterlockedIncrement |
| | |
| #define InterlockedDecrement _InterlockedDecrement | | #define InterlockedDecrement _InterlockedDecrement |
| #define InterlockedDecrementAcquire _InterlockedDecrement | | #define InterlockedDecrementAcquire _InterlockedDecrement |
| #define InterlockedDecrementRelease _InterlockedDecrement | | #define InterlockedDecrementRelease _InterlockedDecrement |
| #define InterlockedDecrementNoFence _InterlockedDecrement | | #define InterlockedDecrementNoFence _InterlockedDecrement |
| | |
|
| #define InterlockedAdd _InterlockedAdd | | #define InterlockedAdd _InlineInterlockedAdd |
| #define InterlockedAddAcquire _InterlockedAdd | | #define InterlockedAddAcquire _InlineInterlockedAdd |
| #define InterlockedAddRelease _InterlockedAdd | | #define InterlockedAddRelease _InlineInterlockedAdd |
| #define InterlockedAddNoFence _InterlockedAdd | | #define InterlockedAddNoFence _InlineInterlockedAdd |
| #define InterlockedAddNoFence64 _InterlockedAdd64 | | #define InterlockedAddNoFence64 _InlineInterlockedAdd64 |
| | |
| #define InterlockedExchange _InterlockedExchange | | #define InterlockedExchange _InterlockedExchange |
| #define InterlockedExchangeAcquire _InterlockedExchange | | #define InterlockedExchangeAcquire _InterlockedExchange |
| #define InterlockedExchangeNoFence _InterlockedExchange | | #define InterlockedExchangeNoFence _InterlockedExchange |
| | |
| #define InterlockedExchangeAdd _InterlockedExchangeAdd | | #define InterlockedExchangeAdd _InterlockedExchangeAdd |
| #define InterlockedExchangeAddAcquire _InterlockedExchangeAdd | | #define InterlockedExchangeAddAcquire _InterlockedExchangeAdd |
| #define InterlockedExchangeAddRelease _InterlockedExchangeAdd | | #define InterlockedExchangeAddRelease _InterlockedExchangeAdd |
| #define InterlockedExchangeAddNoFence _InterlockedExchangeAdd | | #define InterlockedExchangeAddNoFence _InterlockedExchangeAdd |
| | |
| | |
| skipping to change at line 5199 | | skipping to change at line 6453 |
| | |
| LONG | | LONG |
| __cdecl | | __cdecl |
| InterlockedExchangeAdd ( | | InterlockedExchangeAdd ( |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | _Inout_ _Interlocked_operand_ LONG volatile *Addend, |
| _In_ LONG Value | | _In_ LONG Value |
| ); | | ); |
| | |
| FORCEINLINE | | FORCEINLINE |
| LONG | | LONG |
|
| InterlockedAdd ( | | _InlineInterlockedAdd ( |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | _Inout_ _Interlocked_operand_ LONG volatile *Addend, |
| _In_ LONG Value | | _In_ LONG Value |
| ) | | ) |
| | |
| { | | { |
| | |
| return InterlockedExchangeAdd(Addend, Value) + Value; | | return InterlockedExchangeAdd(Addend, Value) + Value; |
| } | | } |
| | |
| LONG | | LONG |
| | |
| skipping to change at line 5300 | | skipping to change at line 6554 |
| _In_ SHORT ExChange | | _In_ SHORT ExChange |
| ); | | ); |
| | |
| #pragma intrinsic(_InterlockedExchange8) | | #pragma intrinsic(_InterlockedExchange8) |
| #pragma intrinsic(_InterlockedExchange16) | | #pragma intrinsic(_InterlockedExchange16) |
| | |
| #endif // _MSC_VER >= 1600 | | #endif // _MSC_VER >= 1600 |
| | |
| #if _MSC_FULL_VER >= 140041204 | | #if _MSC_FULL_VER >= 140041204 |
| | |
|
| | #define InterlockedExchangeAdd8 _InterlockedExchangeAdd8 |
| #define InterlockedAnd8 _InterlockedAnd8 | | #define InterlockedAnd8 _InterlockedAnd8 |
| #define InterlockedOr8 _InterlockedOr8 | | #define InterlockedOr8 _InterlockedOr8 |
| #define InterlockedXor8 _InterlockedXor8 | | #define InterlockedXor8 _InterlockedXor8 |
| #define InterlockedAnd16 _InterlockedAnd16 | | #define InterlockedAnd16 _InterlockedAnd16 |
| #define InterlockedOr16 _InterlockedOr16 | | #define InterlockedOr16 _InterlockedOr16 |
| #define InterlockedXor16 _InterlockedXor16 | | #define InterlockedXor16 _InterlockedXor16 |
| #define InterlockedCompareExchange16 _InterlockedCompareExchange16 | | #define InterlockedCompareExchange16 _InterlockedCompareExchange16 |
| #define InterlockedIncrement16 _InterlockedIncrement16 | | #define InterlockedIncrement16 _InterlockedIncrement16 |
| #define InterlockedDecrement16 _InterlockedDecrement16 | | #define InterlockedDecrement16 _InterlockedDecrement16 |
| | |
| char | | char |
|
| | InterlockedExchangeAdd8 ( |
| | _Inout_ _Interlocked_operand_ char volatile * _Addend, |
| | _In_ char _Value |
| | ); |
| | |
| | char |
| InterlockedAnd8 ( | | InterlockedAnd8 ( |
| _Inout_ _Interlocked_operand_ char volatile *Destination, | | _Inout_ _Interlocked_operand_ char volatile *Destination, |
| _In_ char Value | | _In_ char Value |
| ); | | ); |
| | |
| char | | char |
| InterlockedOr8 ( | | InterlockedOr8 ( |
| _Inout_ _Interlocked_operand_ char volatile *Destination, | | _Inout_ _Interlocked_operand_ char volatile *Destination, |
| _In_ char Value | | _In_ char Value |
| ); | | ); |
| | |
| skipping to change at line 5363 | | skipping to change at line 6624 |
| SHORT | | SHORT |
| _InterlockedIncrement16 ( | | _InterlockedIncrement16 ( |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination | | _Inout_ _Interlocked_operand_ SHORT volatile *Destination |
| ); | | ); |
| | |
| SHORT | | SHORT |
| _InterlockedDecrement16 ( | | _InterlockedDecrement16 ( |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination | | _Inout_ _Interlocked_operand_ SHORT volatile *Destination |
| ); | | ); |
| | |
|
| | #pragma intrinsic (_InterlockedExchangeAdd8) |
| #pragma intrinsic (_InterlockedAnd8) | | #pragma intrinsic (_InterlockedAnd8) |
| #pragma intrinsic (_InterlockedOr8) | | #pragma intrinsic (_InterlockedOr8) |
| #pragma intrinsic (_InterlockedXor8) | | #pragma intrinsic (_InterlockedXor8) |
| #pragma intrinsic (_InterlockedAnd16) | | #pragma intrinsic (_InterlockedAnd16) |
| #pragma intrinsic (_InterlockedOr16) | | #pragma intrinsic (_InterlockedOr16) |
| #pragma intrinsic (_InterlockedXor16) | | #pragma intrinsic (_InterlockedXor16) |
| #pragma intrinsic (_InterlockedCompareExchange16) | | #pragma intrinsic (_InterlockedCompareExchange16) |
| #pragma intrinsic (_InterlockedIncrement16) | | #pragma intrinsic (_InterlockedIncrement16) |
| #pragma intrinsic (_InterlockedDecrement16) | | #pragma intrinsic (_InterlockedDecrement16) |
| | |
| #endif /* _MSC_FULL_VER >= 140040816 */ | | #endif /* _MSC_FULL_VER >= 140040816 */ |
| | |
| // | | // |
| // Define 64-bit operations in terms of InterlockedCompareExchange64 | | // Define 64-bit operations in terms of InterlockedCompareExchange64 |
| // | | // |
| | |
| #define InterlockedCompareExchange64 _InterlockedCompareExchange64 | | #define InterlockedCompareExchange64 _InterlockedCompareExchange64 |
| | |
| FORCEINLINE | | FORCEINLINE |
| LONG64 | | LONG64 |
|
| _InterlockedAnd64 ( | | _InlineInterlockedAnd64 ( |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Destination, | | _Inout_ _Interlocked_operand_ LONG64 volatile *Destination, |
| _In_ LONG64 Value | | _In_ LONG64 Value |
| ) | | ) |
| { | | { |
| LONG64 Old; | | LONG64 Old; |
| | |
| do { | | do { |
| Old = *Destination; | | Old = *Destination; |
| } while (InterlockedCompareExchange64(Destination, | | } while (InterlockedCompareExchange64(Destination, |
| Old & Value, | | Old & Value, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old; | | return Old; |
| } | | } |
| | |
|
| #define InterlockedAnd64 _InterlockedAnd64 | | #define InterlockedAnd64 _InlineInterlockedAnd64 |
| #define InterlockedAnd64Acquire _InterlockedAnd64 | | #define InterlockedAnd64Acquire _InlineInterlockedAnd64 |
| #define InterlockedAnd64Release _InterlockedAnd64 | | #define InterlockedAnd64Release _InlineInterlockedAnd64 |
| #define InterlockedAnd64NoFence _InterlockedAnd64 | | #define InterlockedAnd64NoFence _InlineInterlockedAnd64 |
| | |
| FORCEINLINE | | FORCEINLINE |
| LONG64 | | LONG64 |
|
| _InterlockedAdd64 ( | | _InlineInterlockedAdd64 ( |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Addend, | | _Inout_ _Interlocked_operand_ LONG64 volatile *Addend, |
| _In_ LONG64 Value | | _In_ LONG64 Value |
| ) | | ) |
| { | | { |
| LONG64 Old; | | LONG64 Old; |
| | |
| do { | | do { |
| Old = *Addend; | | Old = *Addend; |
| } while (InterlockedCompareExchange64(Addend, | | } while (InterlockedCompareExchange64(Addend, |
| Old + Value, | | Old + Value, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old + Value; | | return Old + Value; |
| } | | } |
| | |
|
| #define InterlockedAdd64 _InterlockedAdd64 | | #define InterlockedAdd64 _InlineInterlockedAdd64 |
| #define InterlockedAddAcquire64 _InterlockedAdd64 | | #define InterlockedAddAcquire64 _InlineInterlockedAdd64 |
| #define InterlockedAddRelease64 _InterlockedAdd64 | | #define InterlockedAddRelease64 _InlineInterlockedAdd64 |
| #define InterlockedAddNoFence64 _InterlockedAdd64 | | #define InterlockedAddNoFence64 _InlineInterlockedAdd64 |
| | |
| #endif // !defined(_MANAGED) | | #endif // !defined(_MANAGED) |
| | |
| #define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b) | | #define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b) |
| #define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAdd((LONG *)
a, b) | | #define InterlockedExchangeAddSizeTAcquire(a, b) InterlockedExchangeAdd((LONG *)
a, b) |
| #define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAdd((LONG *)
a, b) | | #define InterlockedExchangeAddSizeTNoFence(a, b) InterlockedExchangeAdd((LONG *)
a, b) |
| #define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a) | | #define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a) |
| #define InterlockedIncrementSizeTNoFence(a) InterlockedIncrement((LONG *)a) | | #define InterlockedIncrementSizeTNoFence(a) InterlockedIncrement((LONG *)a) |
| #define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a) | | #define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a) |
| #define InterlockedDecrementSizeTNoFence(a) InterlockedDecrement((LONG *)a) | | #define InterlockedDecrementSizeTNoFence(a) InterlockedDecrement((LONG *)a) |
| | |
| skipping to change at line 5455 | | skipping to change at line 6717 |
| ); | | ); |
| | |
| #pragma intrinsic(_InterlockedXor) | | #pragma intrinsic(_InterlockedXor) |
| | |
| #define InterlockedXor _InterlockedXor | | #define InterlockedXor _InterlockedXor |
| | |
| #if !defined(_MANAGED) | | #if !defined(_MANAGED) |
| | |
| LONGLONG | | LONGLONG |
| FORCEINLINE | | FORCEINLINE |
|
| _InterlockedOr64 ( | | _InlineInterlockedOr64 ( |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, |
| _In_ LONGLONG Value | | _In_ LONGLONG Value |
| ) | | ) |
| { | | { |
| LONGLONG Old; | | LONGLONG Old; |
| | |
| do { | | do { |
| Old = *Destination; | | Old = *Destination; |
| } while (InterlockedCompareExchange64(Destination, | | } while (InterlockedCompareExchange64(Destination, |
| Old | Value, | | Old | Value, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old; | | return Old; |
| } | | } |
| | |
|
| #define InterlockedOr64 _InterlockedOr64 | | #define InterlockedOr64 _InlineInterlockedOr64 |
| | |
| FORCEINLINE | | FORCEINLINE |
| LONG64 | | LONG64 |
|
| _InterlockedXor64 ( | | _InlineInterlockedXor64 ( |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Destination, | | _Inout_ _Interlocked_operand_ LONG64 volatile *Destination, |
| _In_ LONG64 Value | | _In_ LONG64 Value |
| ) | | ) |
| { | | { |
| LONG64 Old; | | LONG64 Old; |
| | |
| do { | | do { |
| Old = *Destination; | | Old = *Destination; |
| } while (InterlockedCompareExchange64(Destination, | | } while (InterlockedCompareExchange64(Destination, |
| Old ^ Value, | | Old ^ Value, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old; | | return Old; |
| } | | } |
| | |
|
| #define InterlockedXor64 _InterlockedXor64 | | #define InterlockedXor64 _InlineInterlockedXor64 |
| | |
| LONGLONG | | LONGLONG |
| FORCEINLINE | | FORCEINLINE |
|
| _InterlockedIncrement64 ( | | _InlineInterlockedIncrement64 ( |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend |
| ) | | ) |
| { | | { |
| LONGLONG Old; | | LONGLONG Old; |
| | |
| do { | | do { |
| Old = *Addend; | | Old = *Addend; |
| } while (InterlockedCompareExchange64(Addend, | | } while (InterlockedCompareExchange64(Addend, |
| Old + 1, | | Old + 1, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old + 1; | | return Old + 1; |
| } | | } |
| | |
|
| #define InterlockedIncrement64 _InterlockedIncrement64 | | #define InterlockedIncrement64 _InlineInterlockedIncrement64 |
| #define InterlockedIncrementAcquire64 InterlockedIncrement64 | | #define InterlockedIncrementAcquire64 InterlockedIncrement64 |
| | |
| FORCEINLINE | | FORCEINLINE |
| LONGLONG | | LONGLONG |
|
| _InterlockedDecrement64 ( | | _InlineInterlockedDecrement64 ( |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend |
| ) | | ) |
| { | | { |
| LONGLONG Old; | | LONGLONG Old; |
| | |
| do { | | do { |
| Old = *Addend; | | Old = *Addend; |
| } while (InterlockedCompareExchange64(Addend, | | } while (InterlockedCompareExchange64(Addend, |
| Old - 1, | | Old - 1, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old - 1; | | return Old - 1; |
| } | | } |
| | |
|
| #define InterlockedDecrement64 _InterlockedDecrement64 | | #define InterlockedDecrement64 _InlineInterlockedDecrement64 |
| | |
| FORCEINLINE | | FORCEINLINE |
| LONGLONG | | LONGLONG |
|
| _InterlockedExchange64 ( | | _InlineInterlockedExchange64 ( |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Target, | | _Inout_ _Interlocked_operand_ LONGLONG volatile *Target, |
| _In_ LONGLONG Value | | _In_ LONGLONG Value |
| ) | | ) |
| { | | { |
| LONGLONG Old; | | LONGLONG Old; |
| | |
| do { | | do { |
| Old = *Target; | | Old = *Target; |
| } while (InterlockedCompareExchange64(Target, | | } while (InterlockedCompareExchange64(Target, |
| Value, | | Value, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old; | | return Old; |
| } | | } |
| | |
|
| #define InterlockedExchange64 _InterlockedExchange64 | | #define InterlockedExchange64 _InlineInterlockedExchange64 |
| #define InterlockedExchangeAcquire64 InterlockedExchange64 | | #define InterlockedExchangeAcquire64 InterlockedExchange64 |
|
| #define InterlockedExchangeNoFence64 _InterlockedExchange64 | | #define InterlockedExchangeNoFence64 _InlineInterlockedExchange64 |
| | |
| FORCEINLINE | | FORCEINLINE |
| LONGLONG | | LONGLONG |
|
| _InterlockedExchangeAdd64 ( | | _InlineInterlockedExchangeAdd64 ( |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, | | _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, |
| _In_ LONGLONG Value | | _In_ LONGLONG Value |
| ) | | ) |
| { | | { |
| LONGLONG Old; | | LONGLONG Old; |
| | |
| do { | | do { |
| Old = *Addend; | | Old = *Addend; |
| } while (InterlockedCompareExchange64(Addend, | | } while (InterlockedCompareExchange64(Addend, |
| Old + Value, | | Old + Value, |
| Old) != Old); | | Old) != Old); |
| | |
| return Old; | | return Old; |
| } | | } |
| | |
|
| #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 | | #define InterlockedExchangeAdd64 _InlineInterlockedExchangeAdd64 |
| #define InterlockedExchangeAddNoFence64 _InterlockedExchangeAdd64 | | #define InterlockedExchangeAddNoFence64 _InlineInterlockedExchangeAdd64 |
| | |
| // | | // |
| // FS relative adds and increments. | | // FS relative adds and increments. |
| // | | // |
| | |
| VOID | | VOID |
| __incfsbyte ( | | __incfsbyte ( |
| _In_ DWORD Offset | | _In_ DWORD Offset |
| ); | | ); |
| | |
| | |
| skipping to change at line 6032 | | skipping to change at line 7294 |
| DWORD Reserved_0 : 1; | | DWORD Reserved_0 : 1; |
| DWORD Default_Big : 1; | | DWORD Default_Big : 1; |
| DWORD Granularity : 1; | | DWORD Granularity : 1; |
| DWORD BaseHi : 8; | | DWORD BaseHi : 8; |
| } Bits; | | } Bits; |
| } HighWord; | | } HighWord; |
| } LDT_ENTRY, *PLDT_ENTRY; | | } LDT_ENTRY, *PLDT_ENTRY; |
| | |
| #endif | | #endif |
| | |
|
| #if defined(_M_IA64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) | | |
| | |
| #ifdef __cplusplus | | |
| extern "C" { | | |
| #endif | | |
| | |
| // | | |
| // Define bit test intrinsics. | | |
| // | | |
| | |
| #define BitTest _bittest | | |
| #define BitTestAndComplement _bittestandcomplement | | |
| #define BitTestAndSet _bittestandset | | |
| #define BitTestAndReset _bittestandreset | | |
| | |
| #define BitTest64 _bittest64 | | |
| #define BitTestAndComplement64 _bittestandcomplement64 | | |
| #define BitTestAndSet64 _bittestandset64 | | |
| #define BitTestAndReset64 _bittestandreset64 | | |
| | |
| _Must_inspect_result_ | | |
| BOOLEAN | | |
| _bittest ( | | |
| _In_reads_bytes_((Offset+7)/8) LONG const *Base, | | |
| _In_ LONG Offset | | |
| ); | | |
| | |
| BOOLEAN | | |
| _bittestandcomplement ( | | |
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | |
| _In_ LONG Offset | | |
| ); | | |
| | |
| BOOLEAN | | |
| _bittestandset ( | | |
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | |
| _In_ LONG Offset | | |
| ); | | |
| | |
| BOOLEAN | | |
| _bittestandreset ( | | |
| _Inout_updates_bytes_((Offset+7)/8) LONG *Base, | | |
| _In_ LONG Offset | | |
| ); | | |
| | |
| _Must_inspect_result_ | | |
| BOOLEAN | | |
| _bittest64 ( | | |
| _In_reads_bytes_((Offset+7)/8) LONG64 const *Base, | | |
| _In_ LONG64 Offset | | |
| ); | | |
| | |
| BOOLEAN | | |
| _bittestandcomplement64 ( | | |
| _Inout_updates_bytes_((Offset+7)/8) LONG64 *Base, | | |
| _In_ LONG64 Offset | | |
| ); | | |
| | |
| BOOLEAN | | |
| _bittestandset64 ( | | |
| _Inout_updates_bytes_((Offset+7)/8) LONG64 *Base, | | |
| _In_ LONG64 Offset | | |
| ); | | |
| | |
| BOOLEAN | | |
| _bittestandreset64 ( | | |
| _Inout_updates_bytes_((Offset+7)/8) LONG64 *Base, | | |
| _In_ LONG64 Offset | | |
| ); | | |
| | |
| #pragma intrinsic(_bittest) | | |
| #pragma intrinsic(_bittestandcomplement) | | |
| #pragma intrinsic(_bittestandset) | | |
| #pragma intrinsic(_bittestandreset) | | |
| | |
| #pragma intrinsic(_bittest64) | | |
| #pragma intrinsic(_bittestandcomplement64) | | |
| #pragma intrinsic(_bittestandset64) | | |
| #pragma intrinsic(_bittestandreset64) | | |
| | |
| // | | |
| // Define bit scan intrinsics. | | |
| // | | |
| | |
| #define BitScanForward _BitScanForward | | |
| #define BitScanReverse _BitScanReverse | | |
| #define BitScanForward64 _BitScanForward64 | | |
| #define BitScanReverse64 _BitScanReverse64 | | |
| | |
| _Success_(return!=0) | | |
| BOOLEAN | | |
| _BitScanForward ( | | |
| _Out_ DWORD *Index, | | |
| _In_ DWORD Mask | | |
| ); | | |
| | |
| _Success_(return!=0) | | |
| BOOLEAN | | |
| _BitScanReverse ( | | |
| _Out_ DWORD *Index, | | |
| _In_ DWORD Mask | | |
| ); | | |
| | |
| _Success_(return!=0) | | |
| BOOLEAN | | |
| _BitScanForward64 ( | | |
| _Out_ DWORD *Index, | | |
| _In_ DWORD64 Mask | | |
| ); | | |
| | |
| _Success_(return!=0) | | |
| BOOLEAN | | |
| _BitScanReverse64 ( | | |
| _Out_ DWORD *Index, | | |
| _In_ DWORD64 Mask | | |
| ); | | |
| | |
| #pragma intrinsic(_BitScanForward) | | |
| #pragma intrinsic(_BitScanReverse) | | |
| #pragma intrinsic(_BitScanForward64) | | |
| #pragma intrinsic(_BitScanReverse64) | | |
| | |
| // | | |
| // Define atomic read intrinsics. | | |
| // | | |
| | |
| #define ReadAtomic128 __load128 | | |
| #define ReadAtomicAcquire128 __load128_acq | | |
| | |
| LONG64 | | |
| ReadAtomic128 ( | | |
| void *Source, | | |
| LONG64 *DestinationHigh | | |
| ); | | |
| | |
| LONG64 | | |
| ReadAtomicAcquire128 ( | | |
| void *Source, | | |
| LONG64 *DestinationHigh | | |
| ); | | |
| | |
| #pragma intrinsic(__load128) | | |
| #pragma intrinsic(__load128_acq) | | |
| | |
| // | | |
| // Define interlocked operations intrinsics. | | |
| // | | |
| | |
| #ifdef __cplusplus | | |
| } | | |
| #endif | | |
| | |
| #define InterlockedAdd _InterlockedAdd | | |
| #define InterlockedAddAcquire _InterlockedAdd_acq | | |
| #define InterlockedAddRelease _InterlockedAdd_rel | | |
| | |
| #define InterlockedAdd64 _InterlockedAdd64 | | |
| #define InterlockedAddAcquire64 _InterlockedAdd64_acq | | |
| #define InterlockedAddRelease64 _InterlockedAdd64_rel | | |
| | |
| #define InterlockedIncrement _InterlockedIncrement | | |
| #define InterlockedIncrementAcquire _InterlockedIncrement_acq | | |
| #define InterlockedIncrementRelease _InterlockedIncrement_rel | | |
| | |
| #define InterlockedIncrement16 _InterlockedIncrement16 | | |
| #define InterlockedIncrementAcquire16 _InterlockedIncrement16_acq | | |
| #define InterlockedIncrementRelease16 _InterlockedIncrement16_rel | | |
| | |
| #define InterlockedIncrement64 _InterlockedIncrement64 | | |
| #define InterlockedIncrementAcquire64 _InterlockedIncrement64_acq | | |
| #define InterlockedIncrementRelease64 _InterlockedIncrement64_rel | | |
| | |
| #define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a) | | |
| | |
| #define InterlockedDecrement _InterlockedDecrement | | |
| #define InterlockedDecrementAcquire _InterlockedDecrement_acq | | |
| #define InterlockedDecrementRelease _InterlockedDecrement_rel | | |
| | |
| #define InterlockedDecrement16 _InterlockedDecrement16 | | |
| #define InterlockedDecrementAcquire16 _InterlockedDecrement16_acq | | |
| #define InterlockedDecrementRelease16 _InterlockedDecrement16_rel | | |
| | |
| #define InterlockedDecrement64 _InterlockedDecrement64 | | |
| #define InterlockedDecrementAcquire64 _InterlockedDecrement64_acq | | |
| #define InterlockedDecrementRelease64 _InterlockedDecrement64_rel | | |
| | |
| #define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a) | | |
| | |
| #define InterlockedExchange _InterlockedExchange | | |
| #define InterlockedExchangeAcquire _InterlockedExchange_acq | | |
| | |
| #define InterlockedExchange64 _InterlockedExchange64 | | |
| #define InterlockedExchangeAcquire64 _InterlockedExchange64_acq | | |
| | |
| #define InterlockedExchangePointer _InterlockedExchangePointer | | |
| #define InterlockedExchangePointerAcquire _InterlockedExchangePointer_acq | | |
| | |
| #define InterlockedExchangeAdd _InterlockedExchangeAdd | | |
| #define InterlockedExchangeAddAcquire _InterlockedExchangeAdd_acq | | |
| #define InterlockedExchangeAddRelease _InterlockedExchangeAdd_rel | | |
| | |
| #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 | | |
| #define InterlockedExchangeAddAcquire64 _InterlockedExchangeAdd64_acq | | |
| #define InterlockedExchangeAddRelease64 _InterlockedExchangeAdd64_rel | | |
| | |
| #define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONG64 *)a, | | |
| b) | | |
| | |
| #define InterlockedCompareExchange _InterlockedCompareExchange | | |
| #define InterlockedCompareExchangeAcquire _InterlockedCompareExchange_acq | | |
| #define InterlockedCompareExchangeRelease _InterlockedCompareExchange_rel | | |
| | |
| #define InterlockedCompareExchange16 _InterlockedCompareExchange16 | | |
| #define InterlockedCompareExchangeAcquire16 _InterlockedCompareExchange16_acq | | |
| #define InterlockedCompareExchangeRelease16 _InterlockedCompareExchange16_rel | | |
| | |
| #define InterlockedCompareExchange64 _InterlockedCompareExchange64 | | |
| #define InterlockedCompareExchangeAcquire64 _InterlockedCompareExchange64_acq | | |
| #define InterlockedCompareExchangeRelease64 _InterlockedCompareExchange64_rel | | |
| | |
| #define InterlockedCompare64Exchange128 _InterlockedCompare64Exchange128 | | |
| #define InterlockedCompare64ExchangeAcquire128 _InterlockedCompare64Exchange128 | | |
| _acq | | |
| #define InterlockedCompare64ExchangeRelease128 _InterlockedCompare64Exchange128 | | |
| _rel | | |
| | |
| #define InterlockedCompareExchangePointer _InterlockedCompareExchangeP | | |
| ointer | | |
| #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangeP | | |
| ointer_rel | | |
| #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangeP | | |
| ointer_acq | | |
| | |
| #define InterlockedOr _InterlockedOr | | |
| #define InterlockedOrAcquire _InterlockedOr_acq | | |
| #define InterlockedOrRelease _InterlockedOr_rel | | |
| | |
| #define InterlockedOr8 _InterlockedOr8 | | |
| #define InterlockedOr8Acquire _InterlockedOr8_acq | | |
| #define InterlockedOr8Release _InterlockedOr8_rel | | |
| | |
| #define InterlockedOr16 _InterlockedOr16 | | |
| #define InterlockedOr16Acquire _InterlockedOr16_acq | | |
| #define InterlockedOr16Release _InterlockedOr16_rel | | |
| | |
| #define InterlockedOr64 _InterlockedOr64 | | |
| #define InterlockedOr64Acquire _InterlockedOr64_acq | | |
| #define InterlockedOr64Release _InterlockedOr64_rel | | |
| | |
| #define InterlockedXor _InterlockedXor | | |
| #define InterlockedXorAcquire _InterlockedXor_acq | | |
| #define InterlockedXorRelease _InterlockedXor_rel | | |
| | |
| #define InterlockedXor8 _InterlockedXor8 | | |
| #define InterlockedXor8Acquire _InterlockedXor8_acq | | |
| #define InterlockedXor8Release _InterlockedXor8_rel | | |
| | |
| #define InterlockedXor16 _InterlockedXor16 | | |
| #define InterlockedXor16Acquire _InterlockedXor16_acq | | |
| #define InterlockedXor16Release _InterlockedXor16_rel | | |
| | |
| #define InterlockedXor64 _InterlockedXor64 | | |
| #define InterlockedXor64Acquire _InterlockedXor64_acq | | |
| #define InterlockedXor64Release _InterlockedXor64_rel | | |
| | |
| #define InterlockedAnd _InterlockedAnd | | |
| #define InterlockedAndAcquire _InterlockedAnd_acq | | |
| #define InterlockedAndRelease _InterlockedAnd_rel | | |
| | |
| #define InterlockedAnd8 _InterlockedAnd8 | | |
| #define InterlockedAnd8Acquire _InterlockedAnd8_acq | | |
| #define InterlockedAnd8Release _InterlockedAnd8_rel | | |
| | |
| #define InterlockedAnd16 _InterlockedAnd16 | | |
| #define InterlockedAnd16Acquire _InterlockedAnd16_acq | | |
| #define InterlockedAnd16Release _InterlockedAnd16_rel | | |
| | |
| #define InterlockedAnd64 _InterlockedAnd64 | | |
| #define InterlockedAnd64Acquire _InterlockedAnd64_acq | | |
| #define InterlockedAnd64Release _InterlockedAnd64_rel | | |
| | |
| #ifdef __cplusplus | | |
| extern "C" { | | |
| #endif | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedAdd ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedAddAcquire ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedAddRelease ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedAdd64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedAddAcquire64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedAddRelease64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedIncrement( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedIncrementAcquire( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedIncrementRelease( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedIncrement16 ( | | |
| _Inout_ _Interlocked_operand_ volatile SHORT *Addend | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedIncrementAcquire16 ( | | |
| _Inout_ _Interlocked_operand_ volatile SHORT *Addend | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedIncrementRelease16 ( | | |
| _Inout_ _Interlocked_operand_ volatile SHORT *Addend | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedIncrement64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedIncrementAcquire64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedIncrementRelease64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedDecrement( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedDecrementAcquire( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedDecrementRelease( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedDecrement16 ( | | |
| _Inout_ _Interlocked_operand_ volatile SHORT *Addend | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedDecrementAcquire16 ( | | |
| _Inout_ _Interlocked_operand_ volatile SHORT *Addend | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedDecrementRelease16 ( | | |
| _Inout_ _Interlocked_operand_ volatile SHORT *Addend | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedDecrement64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedDecrementAcquire64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedDecrementRelease64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedExchange( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Target, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedExchangeAcquire( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Target, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedExchange64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Target, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedExchangeAcquire64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Target, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| PVOID | | |
| __cdecl | | |
| InterlockedExchangePointer( | | |
| _Inout_ _Interlocked_operand_ PVOID volatile *Target, | | |
| _In_ PVOID Value | | |
| ); | | |
| | |
| PVOID | | |
| __cdecl | | |
| InterlockedExchangePointerAcquire( | | |
| _Inout_ _Interlocked_operand_ PVOID volatile *Target, | | |
| _In_ PVOID Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedExchangeAdd( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedExchangeAddAcquire( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedExchangeAddRelease( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Addend, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedExchangeAdd64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedExchangeAddAcquire64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedExchangeAddRelease64( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Addend, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedCompareExchange ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG ExChange, | | |
| _In_ LONG Comperand | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedCompareExchangeAcquire ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG ExChange, | | |
| _In_ LONG Comperand | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedCompareExchangeRelease ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG ExChange, | | |
| _In_ LONG Comperand | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedCompareExchange16 ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT ExChange, | | |
| _In_ SHORT Comperand | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedCompareExchangeAcquire16 ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT ExChange, | | |
| _In_ SHORT Comperand | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedCompareExchangeRelease16 ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT ExChange, | | |
| _In_ SHORT Comperand | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedCompareExchange64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG ExChange, | | |
| _In_ LONGLONG Comperand | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedCompareExchangeAcquire64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG ExChange, | | |
| _In_ LONGLONG Comperand | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedCompareExchangeRelease64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG ExChange, | | |
| _In_ LONGLONG Comperand | | |
| ); | | |
| | |
| LONG64 | | |
| __cdecl | | |
| InterlockedCompare64Exchange128( | | |
| _Inout_updates_bytes_(16) _Interlocked_operand_ LONG64 volatile *Destination | | |
| , | | |
| _In_ LONG64 ExchangeHigh, | | |
| _In_ LONG64 ExchangeLow, | | |
| _In_ LONG64 Comperand | | |
| ); | | |
| | |
| LONG64 | | |
| __cdecl | | |
| InterlockedCompare64ExchangeAcquire128( | | |
| _Inout_updates_bytes_(16) _Interlocked_operand_ LONG64 volatile *Destination | | |
| , | | |
| _In_ LONG64 ExchangeHigh, | | |
| _In_ LONG64 ExchangeLow, | | |
| _In_ LONG64 Comperand | | |
| ); | | |
| | |
| LONG64 | | |
| __cdecl | | |
| InterlockedCompare64ExchangeRelease128( | | |
| _Inout_updates_bytes_(16) _Interlocked_operand_ LONG64 volatile *Destination | | |
| , | | |
| _In_ LONG64 ExchangeHigh, | | |
| _In_ LONG64 ExchangeLow, | | |
| _In_ LONG64 Comperand | | |
| ); | | |
| | |
| PVOID | | |
| __cdecl | | |
| InterlockedCompareExchangePointer ( | | |
| _Inout_ _Interlocked_operand_ PVOID volatile *Destination, | | |
| _In_ PVOID Exchange, | | |
| _In_ PVOID Comperand | | |
| ); | | |
| | |
| PVOID | | |
| __cdecl | | |
| InterlockedCompareExchangePointerAcquire ( | | |
| _Inout_ _Interlocked_operand_ PVOID volatile *Destination, | | |
| _In_ PVOID Exchange, | | |
| _In_ PVOID Comperand | | |
| ); | | |
| | |
| PVOID | | |
| __cdecl | | |
| InterlockedCompareExchangePointerRelease ( | | |
| _Inout_ _Interlocked_operand_ PVOID volatile *Destination, | | |
| _In_ PVOID Exchange, | | |
| _In_ PVOID Comperand | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedOr ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedOrAcquire ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedOrRelease ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedOr8 ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedOr8Acquire ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedOr8Release ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedOr16( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedOr16Acquire ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedOr16Release ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedOr64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedOr64Acquire ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedOr64Release ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedXor ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedXorAcquire ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedXorRelease ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedXor8 ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedXor8Acquire ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedXor8Release ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedXor16( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedXor16Acquire ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedXor16Release ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedXor64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedXor64Acquire ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedXor64Release ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedAnd ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedAndAcquire ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| LONG | | |
| __cdecl | | |
| InterlockedAndRelease ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Destination, | | |
| _In_ LONG Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedAnd8 ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedAnd8Acquire ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| CHAR | | |
| __cdecl | | |
| InterlockedAnd8Release ( | | |
| _Inout_ _Interlocked_operand_ CHAR volatile *Destination, | | |
| _In_ CHAR Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedAnd16( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedAnd16Acquire ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| SHORT | | |
| __cdecl | | |
| InterlockedAnd16Release ( | | |
| _Inout_ _Interlocked_operand_ SHORT volatile *Destination, | | |
| _In_ SHORT Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedAnd64 ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedAnd64Acquire ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| LONGLONG | | |
| __cdecl | | |
| InterlockedAnd64Release ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ); | | |
| | |
| #pragma intrinsic(_InterlockedAdd) | | |
| #pragma intrinsic(_InterlockedAdd_acq) | | |
| #pragma intrinsic(_InterlockedAdd_rel) | | |
| | |
| #pragma intrinsic(_InterlockedAdd64) | | |
| #pragma intrinsic(_InterlockedAdd64_acq) | | |
| #pragma intrinsic(_InterlockedAdd64_rel) | | |
| | |
| #pragma intrinsic(_InterlockedIncrement) | | |
| #pragma intrinsic(_InterlockedIncrement_acq) | | |
| #pragma intrinsic(_InterlockedIncrement_rel) | | |
| | |
| #pragma intrinsic(_InterlockedIncrement16) | | |
| #pragma intrinsic(_InterlockedIncrement16_acq) | | |
| #pragma intrinsic(_InterlockedIncrement16_rel) | | |
| | |
| #pragma intrinsic(_InterlockedIncrement64) | | |
| #pragma intrinsic(_InterlockedIncrement64_acq) | | |
| #pragma intrinsic(_InterlockedIncrement64_rel) | | |
| | |
| #pragma intrinsic(_InterlockedDecrement) | | |
| #pragma intrinsic(_InterlockedDecrement_acq) | | |
| #pragma intrinsic(_InterlockedDecrement_rel) | | |
| | |
| #pragma intrinsic(_InterlockedDecrement16) | | |
| #pragma intrinsic(_InterlockedDecrement16_acq) | | |
| #pragma intrinsic(_InterlockedDecrement16_rel) | | |
| | |
| #pragma intrinsic(_InterlockedDecrement64) | | |
| #pragma intrinsic(_InterlockedDecrement64_acq) | | |
| #pragma intrinsic(_InterlockedDecrement64_rel) | | |
| | |
| #pragma intrinsic(_InterlockedExchange) | | |
| #pragma intrinsic(_InterlockedExchange_acq) | | |
| | |
| #pragma intrinsic(_InterlockedExchange64) | | |
| #pragma intrinsic(_InterlockedExchange64_acq) | | |
| | |
| #pragma intrinsic(_InterlockedExchangePointer) | | |
| #pragma intrinsic(_InterlockedExchangePointer_acq) | | |
| | |
| #pragma intrinsic(_InterlockedExchangeAdd) | | |
| #pragma intrinsic(_InterlockedExchangeAdd_acq) | | |
| #pragma intrinsic(_InterlockedExchangeAdd_rel) | | |
| | |
| #pragma intrinsic(_InterlockedExchangeAdd64) | | |
| #pragma intrinsic(_InterlockedExchangeAdd64_acq) | | |
| #pragma intrinsic(_InterlockedExchangeAdd64_rel) | | |
| | |
| #pragma intrinsic(_InterlockedCompareExchange) | | |
| #pragma intrinsic(_InterlockedCompareExchange_acq) | | |
| #pragma intrinsic(_InterlockedCompareExchange_rel) | | |
| | |
| #pragma intrinsic(_InterlockedCompareExchange16) | | |
| #pragma intrinsic(_InterlockedCompareExchange16_acq) | | |
| #pragma intrinsic(_InterlockedCompareExchange16_rel) | | |
| | |
| #pragma intrinsic(_InterlockedCompareExchange64) | | |
| #pragma intrinsic(_InterlockedCompareExchange64_acq) | | |
| #pragma intrinsic(_InterlockedCompareExchange64_rel) | | |
| | |
| #pragma intrinsic(_InterlockedCompare64Exchange128) | | |
| #pragma intrinsic(_InterlockedCompare64Exchange128_acq) | | |
| #pragma intrinsic(_InterlockedCompare64Exchange128_rel) | | |
| | |
| #pragma intrinsic(_InterlockedCompareExchangePointer) | | |
| #pragma intrinsic(_InterlockedCompareExchangePointer_acq) | | |
| #pragma intrinsic(_InterlockedCompareExchangePointer_rel) | | |
| | |
| #pragma intrinsic (_InterlockedOr) | | |
| #pragma intrinsic (_InterlockedOr_acq) | | |
| #pragma intrinsic (_InterlockedOr_rel) | | |
| | |
| #pragma intrinsic (_InterlockedOr8) | | |
| #pragma intrinsic (_InterlockedOr8_acq) | | |
| #pragma intrinsic (_InterlockedOr8_rel) | | |
| | |
| #pragma intrinsic (_InterlockedOr16) | | |
| #pragma intrinsic (_InterlockedOr16_acq) | | |
| #pragma intrinsic (_InterlockedOr16_rel) | | |
| | |
| #pragma intrinsic (_InterlockedOr64) | | |
| #pragma intrinsic (_InterlockedOr64_acq) | | |
| #pragma intrinsic (_InterlockedOr64_rel) | | |
| | |
| #pragma intrinsic (_InterlockedXor) | | |
| #pragma intrinsic (_InterlockedXor_acq) | | |
| #pragma intrinsic (_InterlockedXor_rel) | | |
| | |
| #pragma intrinsic (_InterlockedXor8) | | |
| #pragma intrinsic (_InterlockedXor8_acq) | | |
| #pragma intrinsic (_InterlockedXor8_rel) | | |
| | |
| #pragma intrinsic (_InterlockedXor16) | | |
| #pragma intrinsic (_InterlockedXor16_acq) | | |
| #pragma intrinsic (_InterlockedXor16_rel) | | |
| | |
| #pragma intrinsic (_InterlockedXor64) | | |
| #pragma intrinsic (_InterlockedXor64_acq) | | |
| #pragma intrinsic (_InterlockedXor64_rel) | | |
| | |
| #pragma intrinsic (_InterlockedAnd) | | |
| #pragma intrinsic (_InterlockedAnd_acq) | | |
| #pragma intrinsic (_InterlockedAnd_rel) | | |
| | |
| #pragma intrinsic (_InterlockedAnd8) | | |
| #pragma intrinsic (_InterlockedAnd8_acq) | | |
| #pragma intrinsic (_InterlockedAnd8_rel) | | |
| | |
| #pragma intrinsic (_InterlockedAnd16) | | |
| #pragma intrinsic (_InterlockedAnd16_acq) | | |
| #pragma intrinsic (_InterlockedAnd16_rel) | | |
| | |
| #pragma intrinsic (_InterlockedAnd64) | | |
| #pragma intrinsic (_InterlockedAnd64_acq) | | |
| #pragma intrinsic (_InterlockedAnd64_rel) | | |
| | |
| #if !defined (InterlockedAnd64) | | |
| | |
| #define InterlockedAnd64 InterlockedAnd64_Inline | | |
| | |
| LONGLONG | | |
| FORCEINLINE | | |
| InterlockedAnd64_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ) | | |
| { | | |
| LONGLONG Old; | | |
| | |
| do { | | |
| Old = *Destination; | | |
| } while (InterlockedCompareExchange64(Destination, | | |
| Old & Value, | | |
| Old) != Old); | | |
| | |
| return Old; | | |
| } | | |
| | |
| #endif | | |
| | |
| #define InterlockedAndAffinity InterlockedAnd64 | | |
| | |
| #if !defined (InterlockedOr64) | | |
| | |
| #define InterlockedOr64 InterlockedOr64_Inline | | |
| | |
| LONGLONG | | |
| FORCEINLINE | | |
| InterlockedOr64_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ) | | |
| { | | |
| LONGLONG Old; | | |
| | |
| do { | | |
| Old = *Destination; | | |
| } while (InterlockedCompareExchange64(Destination, | | |
| Old | Value, | | |
| Old) != Old); | | |
| | |
| return Old; | | |
| } | | |
| | |
| #endif | | |
| | |
| #define InterlockedOrAffinity InterlockedOr64 | | |
| | |
| #if !defined (InterlockedXor64) | | |
| | |
| #define InterlockedXor64 InterlockedXor64_Inline | | |
| | |
| LONGLONG | | |
| FORCEINLINE | | |
| InterlockedXor64_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONGLONG volatile *Destination, | | |
| _In_ LONGLONG Value | | |
| ) | | |
| { | | |
| LONGLONG Old; | | |
| | |
| do { | | |
| Old = *Destination; | | |
| } while (InterlockedCompareExchange64(Destination, | | |
| Old ^ Value, | | |
| Old) != Old); | | |
| | |
| return Old; | | |
| } | | |
| | |
| #endif | | |
| | |
| #if !defined (InterlockedBitTestAndSet) | | |
| | |
| #define InterlockedBitTestAndSet InterlockedBitTestAndSet_Inline | | |
| | |
| BOOLEAN | | |
| FORCEINLINE | | |
| InterlockedBitTestAndSet_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Base, | | |
| _In_ LONG Bit | | |
| ) | | |
| { | | |
| LONG tBit; | | |
| | |
| tBit = 1<<(Bit & (sizeof (*Base)*8-1)); | | |
| return (BOOLEAN) ((InterlockedOr (&Base[Bit/(sizeof (*Base)*8)], tBit)&tBit) | | |
| != 0); | | |
| } | | |
| | |
| #endif | | |
| | |
| #if !defined (InterlockedBitTestAndReset) | | |
| | |
| #define InterlockedBitTestAndReset InterlockedBitTestAndReset_Inline | | |
| | |
| BOOLEAN | | |
| FORCEINLINE | | |
| InterlockedBitTestAndReset_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Base, | | |
| _In_ LONG Bit | | |
| ) | | |
| { | | |
| LONG tBit; | | |
| | |
| tBit = 1<<(Bit & (sizeof (*Base)*8-1)); | | |
| return (BOOLEAN) ((InterlockedAnd (&Base[Bit/(sizeof (*Base)*8)], ~tBit)&tBi | | |
| t) != 0); | | |
| } | | |
| | |
| #endif | | |
| | |
| #if !defined (InterlockedBitTestAndSet64) | | |
| | |
| #define InterlockedBitTestAndSet64 InterlockedBitTestAndSet64_Inline | | |
| | |
| BOOLEAN | | |
| FORCEINLINE | | |
| InterlockedBitTestAndSet64_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Base, | | |
| _In_ LONG64 Bit | | |
| ) | | |
| { | | |
| LONG64 tBit; | | |
| | |
| tBit = 1i64<<(Bit & (sizeof (*Base)*8-1)); | | |
| return (BOOLEAN) ((InterlockedOr64 (&Base[Bit/(sizeof (*Base)*8)], tBit)&tBi | | |
| t) != 0); | | |
| } | | |
| | |
| #endif | | |
| | |
| #if !defined (InterlockedBitTestAndReset64) | | |
| | |
| #define InterlockedBitTestAndReset64 InterlockedBitTestAndReset64_Inline | | |
| | |
| BOOLEAN | | |
| FORCEINLINE | | |
| InterlockedBitTestAndReset64_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Base, | | |
| _In_ LONG64 Bit | | |
| ) | | |
| { | | |
| LONG64 tBit; | | |
| | |
| tBit = 1i64<<(Bit & (sizeof (*Base)*8-1)); | | |
| return (BOOLEAN) ((InterlockedAnd64 (&Base[Bit/(sizeof (*Base)*8)], ~tBit)&t | | |
| Bit) != 0); | | |
| } | | |
| | |
| #endif | | |
| | |
| #if !defined (InterlockedBitTestAndComplement) | | |
| | |
| #define InterlockedBitTestAndComplement InterlockedBitTestAndComplement_Inline | | |
| | |
| BOOLEAN | | |
| FORCEINLINE | | |
| InterlockedBitTestAndComplement_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONG volatile *Base, | | |
| _In_ LONG Bit | | |
| ) | | |
| { | | |
| LONG tBit; | | |
| | |
| tBit = 1<<(Bit & (sizeof (*Base)*8-1)); | | |
| return (BOOLEAN) ((InterlockedXor (&Base[Bit/(sizeof (*Base)*8)], tBit)&tBit | | |
| ) != 0); | | |
| } | | |
| | |
| #endif | | |
| | |
| #if !defined (InterlockedBitTestAndComplement64) | | |
| | |
| #define InterlockedBitTestAndComplement64 InterlockedBitTestAndComplement64_Inli | | |
| ne | | |
| | |
| BOOLEAN | | |
| FORCEINLINE | | |
| InterlockedBitTestAndComplement64_Inline ( | | |
| _Inout_ _Interlocked_operand_ LONG64 volatile *Base, | | |
| _In_ LONG64 Bit | | |
| ) | | |
| { | | |
| LONG64 tBit; | | |
| | |
| tBit = 1i64<<(Bit & (sizeof (*Base)*8-1)); | | |
| return (BOOLEAN) ((InterlockedXor64 (&Base[Bit/(sizeof (*Base)*8)], tBit)&tB | | |
| it) != 0); | | |
| } | | |
| | |
| #endif | | |
| | |
| #ifdef __cplusplus | | |
| } | | |
| #endif | | |
| | |
| #endif /* defined(_M_IA64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) */ | | |
| | |
| #if !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA6 | | |
| 4_) | | |
| | |
| void * __cdecl _rdteb(void); | | |
| void * __cdecl _rdtebex(void); | | |
| #ifdef _M_IA64 | | |
| | |
| #pragma intrinsic(_rdteb) | | |
| // _rdtebex() is a kernel safe version of _rdteb() | | |
| #pragma intrinsic(_rdtebex) | | |
| #define NtCurrentTeb() ((struct _TEB *)_rdtebex()) | | |
| | |
| // | | |
| // Define functions to get the address of the current fiber and the | | |
| // current fiber data. | | |
| // | | |
| | |
| #define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData) | | |
| #define GetFiberData() (*(PVOID *)(GetCurrentFiber())) | | |
| | |
| // begin_ntddk | | |
| | |
| #ifdef __cplusplus | | |
| extern "C" { | | |
| #endif | | |
| | |
| // end_ntddk | | |
| | |
| // begin_ntddk | | |
| | |
| void | | |
| __yield( | | |
| void | | |
| ); | | |
| | |
| void | | |
| __mf( | | |
| void | | |
| ); | | |
| | |
| void | | |
| __lfetch( | | |
| int Level, | | |
| _In_ volatile VOID CONST *Address | | |
| ); | | |
| | |
| void | | |
| __lfetchfault( | | |
| _In_ int Level, | | |
| _In_ volatile VOID CONST *Address | | |
| ); | | |
| | |
| void | | |
| __lfetch_excl( | | |
| _In_ int Level, | | |
| _In_ volatile VOID CONST *Address | | |
| ); | | |
| | |
| void | | |
| __lfetchfault_excl( | | |
| _In_ int Level, | | |
| _In_ volatile VOID CONST *Address | | |
| ); | | |
| | |
| // | | |
| // __lfetch control defines. | | |
| // | | |
| | |
| #define MD_LFHINT_NONE 0x00 | | |
| #define MD_LFHINT_NT1 0x01 | | |
| #define MD_LFHINT_NT2 0x02 | | |
| #define MD_LFHINT_NTA 0x03 | | |
| | |
| #pragma intrinsic (__yield) | | |
| #pragma intrinsic (__lfetch) | | |
| #pragma intrinsic (__lfetchfault) | | |
| #pragma intrinsic (__lfetchfault_excl) | | |
| #pragma intrinsic (__lfetch_excl) | | |
| #pragma intrinsic (__mf) | | |
| | |
| // | | |
| // Define function to read the value of the time stamp counter | | |
| // | | |
| // N.B. The register number for the time stamp counter is CV_IA64_ApITC which | | |
| // is 3116. | | |
| // | | |
| | |
| #define ReadTimeStampCounter() __getReg(3116) | | |
| | |
| unsigned __int64 | | |
| __getReg ( | | |
| _In_ int Number | | |
| ); | | |
| | |
| #pragma intrinsic(__getReg) | | |
| | |
| #define YieldProcessor __yield | | |
| #define MemoryBarrier __mf | | |
| #define PreFetchCacheLine __lfetch | | |
| #define PrefetchForWrite(p) | | |
| #define ReadForWriteAccess(p) (__lfetch_excl(MD_LFHINT_NONE, (p)), (*(p))) | | |
| | |
| // | | |
| // PreFetchCacheLine level defines. | | |
| // | | |
| | |
| #define PF_TEMPORAL_LEVEL_1 MD_LFHINT_NONE | | |
| #define PF_TEMPORAL_LEVEL_2 MD_LFHINT_NT1 | | |
| #define PF_TEMPORAL_LEVEL_3 MD_LFHINT_NT2 | | |
| #define PF_NON_TEMPORAL_LEVEL_ALL MD_LFHINT_NTA | | |
| | |
| // | | |
| // Define functions to capture the high 64-bits of a 128-bit multiply. | | |
| // | | |
| | |
| #define UnsignedMultiplyHigh __UMULH | | |
| | |
| ULONGLONG | | |
| UnsignedMultiplyHigh ( | | |
| _In_ ULONGLONG Multiplier, | | |
| _In_ ULONGLONG Multiplicand | | |
| ); | | |
| | |
| #pragma intrinsic(__UMULH) | | |
| | |
| #if (_MSC_VER >= 1400) | | |
| | |
| #define UnsignedMultiply128 _umul128 | | |
| | |
| DWORD64 | | |
| UnsignedMultiply128 ( | | |
| _In_ unsigned __int64 Multiplier, | | |
| _In_ unsigned __int64 Multiplicand, | | |
| _Out_ _Deref_out_range_(==,Multiplier * Multiplicand) unsigned __int64 *High | | |
| Product | | |
| ); | | |
| | |
| #pragma intrinsic(_umul128) | | |
| | |
| #endif | | |
| | |
| #ifdef __cplusplus | | |
| } | | |
| #endif | | |
| | |
| // end_ntddk | | |
| | |
| #else | | |
| struct _TEB * | | |
| NtCurrentTeb(void); | | |
| #endif | | |
| | |
| #endif // !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defin | | |
| ed(_M_IA64) | | |
| | |
| #ifdef _IA64_ | | |
| | |
| // begin_ntddk | | |
| | |
| // | | |
| // The following values specify the type of failing access when the status is | | |
| // STATUS_ACCESS_VIOLATION and the first parameter in the exception record. | | |
| // | | |
| | |
| #define EXCEPTION_READ_FAULT 0 // Access violation was caused by a read | | |
| #define EXCEPTION_WRITE_FAULT 1 // Access violation was caused by a writ | | |
| e | | |
| #define EXCEPTION_EXECUTE_FAULT 2 // Access violation was caused by an ins | | |
| truction fetch | | |
| | |
| // | | |
| // The following flags control the contents of the CONTEXT structure. | | |
| // | | |
| | |
| #if !defined(RC_INVOKED) | | |
| | |
| #define CONTEXT_IA64 0x00080000L | | |
| | |
| #define CONTEXT_CONTROL (CONTEXT_IA64 | 0x00000001L) | | |
| #define CONTEXT_LOWER_FLOATING_POINT (CONTEXT_IA64 | 0x00000002L) | | |
| #define CONTEXT_HIGHER_FLOATING_POINT (CONTEXT_IA64 | 0x00000004L) | | |
| #define CONTEXT_INTEGER (CONTEXT_IA64 | 0x00000008L) | | |
| #define CONTEXT_DEBUG (CONTEXT_IA64 | 0x00000010L) | | |
| #define CONTEXT_IA32_CONTROL (CONTEXT_IA64 | 0x00000020L) // Include | | |
| s StIPSR | | |
| | |
| #define CONTEXT_FLOATING_POINT (CONTEXT_LOWER_FLOATING_POINT | CONTEXT_ | | |
| HIGHER_FLOATING_POINT) | | |
| #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POIN | | |
| T | CONTEXT_INTEGER | CONTEXT_IA32_CONTROL) | | |
| #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_FLOATING_POIN | | |
| T | CONTEXT_INTEGER | CONTEXT_DEBUG | CONTEXT_IA32_CONTROL) | | |
| | |
| #define CONTEXT_EXCEPTION_ACTIVE 0x08000000L | | |
| #define CONTEXT_SERVICE_ACTIVE 0x10000000L | | |
| #define CONTEXT_EXCEPTION_REQUEST 0x40000000L | | |
| #define CONTEXT_EXCEPTION_REPORTING 0x80000000L | | |
| | |
| #endif // !defined(RC_INVOKED) | | |
| | |
| // | | |
| // Context Frame | | |
| // | | |
| // This frame has a several purposes: 1) it is used as an argument to | | |
| // NtContinue, 2) it is used to construct a call frame for APC delivery, | | |
| // 3) it is used to construct a call frame for exception dispatching | | |
| // in user mode, 4) it is used in the user level thread creation | | |
| // routines, and 5) it is used to to pass thread state to debuggers. | | |
| // | | |
| // N.B. Because this record is used as a call frame, it must be EXACTLY | | |
| // a multiple of 16 bytes in length and aligned on a 16-byte boundary. | | |
| // | | |
| | |
| typedef struct _CONTEXT { | | |
| | |
| // | | |
| // The flags values within this flag control the contents of | | |
| // a CONTEXT record. | | |
| // | | |
| // If the context record is used as an input parameter, then | | |
| // for each portion of the context record controlled by a flag | | |
| // whose value is set, it is assumed that that portion of the | | |
| // context record contains valid context. If the context record | | |
| // is being used to modify a thread's context, then only that | | |
| // portion of the threads context will be modified. | | |
| // | | |
| // If the context record is used as an _Inout_ parameter to capture | | |
| // the context of a thread, then only those portions of the thread's | | |
| // context corresponding to set flags will be returned. | | |
| // | | |
| // The context record is never used as an _Out_ only parameter. | | |
| // | | |
| | |
| DWORD ContextFlags; | | |
| DWORD Fill1[3]; // for alignment of following on 16-byte boundary | | |
| | |
| // | | |
| // This section is specified/returned if the ContextFlags word contains | | |
| // the flag CONTEXT_DEBUG. | | |
| // | | |
| // N.B. CONTEXT_DEBUG is *not* part of CONTEXT_FULL. | | |
| // | | |
| | |
| ULONGLONG DbI0; | | |
| ULONGLONG DbI1; | | |
| ULONGLONG DbI2; | | |
| ULONGLONG DbI3; | | |
| ULONGLONG DbI4; | | |
| ULONGLONG DbI5; | | |
| ULONGLONG DbI6; | | |
| ULONGLONG DbI7; | | |
| | |
| ULONGLONG DbD0; | | |
| ULONGLONG DbD1; | | |
| ULONGLONG DbD2; | | |
| ULONGLONG DbD3; | | |
| ULONGLONG DbD4; | | |
| ULONGLONG DbD5; | | |
| ULONGLONG DbD6; | | |
| ULONGLONG DbD7; | | |
| | |
| // | | |
| // This section is specified/returned if the ContextFlags word contains | | |
| // the flag CONTEXT_LOWER_FLOATING_POINT. | | |
| // | | |
| | |
| FLOAT128 FltS0; | | |
| FLOAT128 FltS1; | | |
| FLOAT128 FltS2; | | |
| FLOAT128 FltS3; | | |
| FLOAT128 FltT0; | | |
| FLOAT128 FltT1; | | |
| FLOAT128 FltT2; | | |
| FLOAT128 FltT3; | | |
| FLOAT128 FltT4; | | |
| FLOAT128 FltT5; | | |
| FLOAT128 FltT6; | | |
| FLOAT128 FltT7; | | |
| FLOAT128 FltT8; | | |
| FLOAT128 FltT9; | | |
| | |
| // | | |
| // This section is specified/returned if the ContextFlags word contains | | |
| // the flag CONTEXT_HIGHER_FLOATING_POINT. | | |
| // | | |
| | |
| FLOAT128 FltS4; | | |
| FLOAT128 FltS5; | | |
| FLOAT128 FltS6; | | |
| FLOAT128 FltS7; | | |
| FLOAT128 FltS8; | | |
| FLOAT128 FltS9; | | |
| FLOAT128 FltS10; | | |
| FLOAT128 FltS11; | | |
| FLOAT128 FltS12; | | |
| FLOAT128 FltS13; | | |
| FLOAT128 FltS14; | | |
| FLOAT128 FltS15; | | |
| FLOAT128 FltS16; | | |
| FLOAT128 FltS17; | | |
| FLOAT128 FltS18; | | |
| FLOAT128 FltS19; | | |
| | |
| FLOAT128 FltF32; | | |
| FLOAT128 FltF33; | | |
| FLOAT128 FltF34; | | |
| FLOAT128 FltF35; | | |
| FLOAT128 FltF36; | | |
| FLOAT128 FltF37; | | |
| FLOAT128 FltF38; | | |
| FLOAT128 FltF39; | | |
| | |
| FLOAT128 FltF40; | | |
| FLOAT128 FltF41; | | |
| FLOAT128 FltF42; | | |
| FLOAT128 FltF43; | | |
| FLOAT128 FltF44; | | |
| FLOAT128 FltF45; | | |
| FLOAT128 FltF46; | | |
| FLOAT128 FltF47; | | |
| FLOAT128 FltF48; | | |
| FLOAT128 FltF49; | | |
| | |
| FLOAT128 FltF50; | | |
| FLOAT128 FltF51; | | |
| FLOAT128 FltF52; | | |
| FLOAT128 FltF53; | | |
| FLOAT128 FltF54; | | |
| FLOAT128 FltF55; | | |
| FLOAT128 FltF56; | | |
| FLOAT128 FltF57; | | |
| FLOAT128 FltF58; | | |
| FLOAT128 FltF59; | | |
| | |
| FLOAT128 FltF60; | | |
| FLOAT128 FltF61; | | |
| FLOAT128 FltF62; | | |
| FLOAT128 FltF63; | | |
| FLOAT128 FltF64; | | |
| FLOAT128 FltF65; | | |
| FLOAT128 FltF66; | | |
| FLOAT128 FltF67; | | |
| FLOAT128 FltF68; | | |
| FLOAT128 FltF69; | | |
| | |
| FLOAT128 FltF70; | | |
| FLOAT128 FltF71; | | |
| FLOAT128 FltF72; | | |
| FLOAT128 FltF73; | | |
| FLOAT128 FltF74; | | |
| FLOAT128 FltF75; | | |
| FLOAT128 FltF76; | | |
| FLOAT128 FltF77; | | |
| FLOAT128 FltF78; | | |
| FLOAT128 FltF79; | | |
| | |
| FLOAT128 FltF80; | | |
| FLOAT128 FltF81; | | |
| FLOAT128 FltF82; | | |
| FLOAT128 FltF83; | | |
| FLOAT128 FltF84; | | |
| FLOAT128 FltF85; | | |
| FLOAT128 FltF86; | | |
| FLOAT128 FltF87; | | |
| FLOAT128 FltF88; | | |
| FLOAT128 FltF89; | | |
| | |
| FLOAT128 FltF90; | | |
| FLOAT128 FltF91; | | |
| FLOAT128 FltF92; | | |
| FLOAT128 FltF93; | | |
| FLOAT128 FltF94; | | |
| FLOAT128 FltF95; | | |
| FLOAT128 FltF96; | | |
| FLOAT128 FltF97; | | |
| FLOAT128 FltF98; | | |
| FLOAT128 FltF99; | | |
| | |
| FLOAT128 FltF100; | | |
| FLOAT128 FltF101; | | |
| FLOAT128 FltF102; | | |
| FLOAT128 FltF103; | | |
| FLOAT128 FltF104; | | |
| FLOAT128 FltF105; | | |
| FLOAT128 FltF106; | | |
| FLOAT128 FltF107; | | |
| FLOAT128 FltF108; | | |
| FLOAT128 FltF109; | | |
| | |
| FLOAT128 FltF110; | | |
| FLOAT128 FltF111; | | |
| FLOAT128 FltF112; | | |
| FLOAT128 FltF113; | | |
| FLOAT128 FltF114; | | |
| FLOAT128 FltF115; | | |
| FLOAT128 FltF116; | | |
| FLOAT128 FltF117; | | |
| FLOAT128 FltF118; | | |
| FLOAT128 FltF119; | | |
| | |
| FLOAT128 FltF120; | | |
| FLOAT128 FltF121; | | |
| FLOAT128 FltF122; | | |
| FLOAT128 FltF123; | | |
| FLOAT128 FltF124; | | |
| FLOAT128 FltF125; | | |
| FLOAT128 FltF126; | | |
| FLOAT128 FltF127; | | |
| | |
| // | | |
| // This section is specified/returned if the ContextFlags word contains | | |
| // the flag CONTEXT_LOWER_FLOATING_POINT | CONTEXT_HIGHER_FLOATING_POINT | C | | |
| ONTEXT_CONTROL. | | |
| // | | |
| | |
| ULONGLONG StFPSR; // FP status | | |
| | |
| // | | |
| // This section is specified/returned if the ContextFlags word contains | | |
| // the flag CONTEXT_INTEGER. | | |
| // | | |
| // N.B. The registers gp, sp, rp are part of the control context | | |
| // | | |
| | |
| ULONGLONG IntGp; // r1, volatile | | |
| ULONGLONG IntT0; // r2-r3, volatile | | |
| ULONGLONG IntT1; // | | |
| ULONGLONG IntS0; // r4-r7, preserved | | |
| ULONGLONG IntS1; | | |
| ULONGLONG IntS2; | | |
| ULONGLONG IntS3; | | |
| ULONGLONG IntV0; // r8, volatile | | |
| ULONGLONG IntT2; // r9-r11, volatile | | |
| ULONGLONG IntT3; | | |
| ULONGLONG IntT4; | | |
| ULONGLONG IntSp; // stack pointer (r12), special | | |
| ULONGLONG IntTeb; // teb (r13), special | | |
| ULONGLONG IntT5; // r14-r31, volatile | | |
| ULONGLONG IntT6; | | |
| ULONGLONG IntT7; | | |
| ULONGLONG IntT8; | | |
| ULONGLONG IntT9; | | |
| ULONGLONG IntT10; | | |
| ULONGLONG IntT11; | | |
| ULONGLONG IntT12; | | |
| ULONGLONG IntT13; | | |
| ULONGLONG IntT14; | | |
| ULONGLONG IntT15; | | |
| ULONGLONG IntT16; | | |
| ULONGLONG IntT17; | | |
| ULONGLONG IntT18; | | |
| ULONGLONG IntT19; | | |
| ULONGLONG IntT20; | | |
| ULONGLONG IntT21; | | |
| ULONGLONG IntT22; | | |
| | |
| ULONGLONG IntNats; // Nat bits for r1-r31 | | |
| // r1-r31 in bits 1 thru 31. | | |
| ULONGLONG Preds; // predicates, preserved | | |
| | |
| ULONGLONG BrRp; // return pointer, b0, preserved | | |
| ULONGLONG BrS0; // b1-b5, preserved | | |
| ULONGLONG BrS1; | | |
| ULONGLONG BrS2; | | |
| ULONGLONG BrS3; | | |
| ULONGLONG BrS4; | | |
| ULONGLONG BrT0; // b6-b7, volatile | | |
| ULONGLONG BrT1; | | |
| | |
| // | | |
| // This section is specified/returned if the ContextFlags word contains | | |
| // the flag CONTEXT_CONTROL. | | |
| // | | |
| | |
| // Other application registers | | |
| ULONGLONG ApUNAT; // User Nat collection register, preserved | | |
| ULONGLONG ApLC; // Loop counter register, preserved | | |
| ULONGLONG ApEC; // Epilog counter register, preserved | | |
| ULONGLONG ApCCV; // CMPXCHG value register, volatile | | |
| ULONGLONG ApDCR; // Default control register (TBD) | | |
| | |
| // Register stack info | | |
| ULONGLONG RsPFS; // Previous function state, preserved | | |
| ULONGLONG RsBSP; // Backing store pointer, preserved | | |
| ULONGLONG RsBSPSTORE; | | |
| ULONGLONG RsRSC; // RSE configuration, volatile | | |
| ULONGLONG RsRNAT; // RSE Nat collection register, preserved | | |
| | |
| // Trap Status Information | | |
| ULONGLONG StIPSR; // Interruption Processor Status | | |
| ULONGLONG StIIP; // Interruption IP | | |
| ULONGLONG StIFS; // Interruption Function State | | |
| | |
| // iA32 related control registers | | |
| ULONGLONG StFCR; // copy of Ar21 | | |
| ULONGLONG Eflag; // Eflag copy of Ar24 | | |
| ULONGLONG SegCSD; // iA32 CSDescriptor (Ar25) | | |
| ULONGLONG SegSSD; // iA32 SSDescriptor (Ar26) | | |
| ULONGLONG Cflag; // Cr0+Cr4 copy of Ar27 | | |
| ULONGLONG StFSR; // x86 FP status (copy of AR28) | | |
| ULONGLONG StFIR; // x86 FP status (copy of AR29) | | |
| ULONGLONG StFDR; // x86 FP status (copy of AR30) | | |
| | |
| ULONGLONG UNUSEDPACK; // added to pack StFDR to 16-bytes | | |
| | |
| } CONTEXT, *PCONTEXT; | | |
| | |
| // | | |
| // Plabel descriptor structure definition | | |
| // | | |
| | |
| typedef struct _PLABEL_DESCRIPTOR { | | |
| ULONGLONG EntryPoint; | | |
| ULONGLONG GlobalPointer; | | |
| } PLABEL_DESCRIPTOR, *PPLABEL_DESCRIPTOR; | | |
| | |
| // | | |
| // Function table entry structure definition. | | |
| // | | |
| | |
| typedef struct _RUNTIME_FUNCTION { | | |
| DWORD BeginAddress; | | |
| DWORD EndAddress; | | |
| DWORD UnwindInfoAddress; | | |
| } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; | | |
| | |
| // | | |
| // Define unwind history table structure. | | |
| // | | |
| | |
| #define UNWIND_HISTORY_TABLE_SIZE 12 | | |
| | |
| typedef struct _UNWIND_HISTORY_TABLE_ENTRY { | | |
| DWORD64 ImageBase; | | |
| DWORD64 Gp; | | |
| PRUNTIME_FUNCTION FunctionEntry; | | |
| } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; | | |
| | |
| typedef struct _UNWIND_HISTORY_TABLE { | | |
| DWORD Count; | | |
| BYTE LocalHint; | | |
| BYTE GlobalHint; | | |
| BYTE Search; | | |
| BYTE Once; | | |
| DWORD64 LowAddress; | | |
| DWORD64 HighAddress; | | |
| UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; | | |
| } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; | | |
| | |
| // | | |
| // Define dynamic function table entry. | | |
| // | | |
| | |
| typedef | | |
| _Function_class_(GET_RUNTIME_FUNCTION_CALLBACK) | | |
| PRUNTIME_FUNCTION | | |
| GET_RUNTIME_FUNCTION_CALLBACK ( | | |
| _In_ DWORD64 ControlPc, | | |
| _In_opt_ PVOID Context | | |
| ); | | |
| typedef GET_RUNTIME_FUNCTION_CALLBACK *PGET_RUNTIME_FUNCTION_CALLBACK; | | |
| | |
| typedef | | |
| _Function_class_(OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK) | | |
| _Must_inspect_result_ | | |
| DWORD | | |
| OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK ( | | |
| _In_ HANDLE Process, | | |
| _In_ PVOID TableAddress, | | |
| _Out_ PDWORD Entries, | | |
| _Outptr_ PRUNTIME_FUNCTION* Functions | | |
| ); | | |
| typedef OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK *POUT_OF_PROCESS_FUNCTION_TABLE_C | | |
| ALLBACK; | | |
| | |
| #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME \ | | |
| "OutOfProcessFunctionTableCallback" | | |
| | |
| // | | |
| // Nonvolatile context pointer record. | | |
| // | | |
| // The IA64 architecture currently doesn't have any nonvolatile kernel context | | |
| // as we capture everything in either the trap or exception frames on | | |
| // transition from user to kernel mode. We allocate a single bogus | | |
| // pointer field as usually this structure is made up of pointers to | | |
| // places in the kernel stack where the various nonvolatile items were | | |
| // pushed on to the kernel stack. | | |
| // | | |
| // TBD *** Need to fill in this structure with the relevant fields | | |
| // when we start storing the nonvolatile information only when | | |
| // necessary. | | |
| // | | |
| | |
| typedef struct _KNONVOLATILE_CONTEXT_POINTERS { | | |
| PFLOAT128 FltS0; | | |
| PFLOAT128 FltS1; | | |
| PFLOAT128 FltS2; | | |
| PFLOAT128 FltS3; | | |
| PFLOAT128 HighFloatingContext[10]; | | |
| PFLOAT128 FltS4; | | |
| PFLOAT128 FltS5; | | |
| PFLOAT128 FltS6; | | |
| PFLOAT128 FltS7; | | |
| PFLOAT128 FltS8; | | |
| PFLOAT128 FltS9; | | |
| PFLOAT128 FltS10; | | |
| PFLOAT128 FltS11; | | |
| PFLOAT128 FltS12; | | |
| PFLOAT128 FltS13; | | |
| PFLOAT128 FltS14; | | |
| PFLOAT128 FltS15; | | |
| PFLOAT128 FltS16; | | |
| PFLOAT128 FltS17; | | |
| PFLOAT128 FltS18; | | |
| PFLOAT128 FltS19; | | |
| | |
| PULONGLONG IntS0; | | |
| PULONGLONG IntS1; | | |
| PULONGLONG IntS2; | | |
| PULONGLONG IntS3; | | |
| PULONGLONG IntSp; | | |
| PULONGLONG IntS0Nat; | | |
| PULONGLONG IntS1Nat; | | |
| PULONGLONG IntS2Nat; | | |
| PULONGLONG IntS3Nat; | | |
| PULONGLONG IntSpNat; | | |
| | |
| PULONGLONG Preds; | | |
| | |
| PULONGLONG BrRp; | | |
| PULONGLONG BrS0; | | |
| PULONGLONG BrS1; | | |
| PULONGLONG BrS2; | | |
| PULONGLONG BrS3; | | |
| PULONGLONG BrS4; | | |
| | |
| PULONGLONG ApUNAT; | | |
| PULONGLONG ApLC; | | |
| PULONGLONG ApEC; | | |
| PULONGLONG RsPFS; | | |
| | |
| PULONGLONG StFSR; | | |
| PULONGLONG StFIR; | | |
| PULONGLONG StFDR; | | |
| PULONGLONG Cflag; | | |
| | |
| PULONGLONG StFPSR; | | |
| | |
| } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; | | |
| | |
| typedef struct _FRAME_POINTERS { | | |
| ULONGLONG MemoryStackFp; | | |
| ULONGLONG BackingStoreFp; | | |
| } FRAME_POINTERS, *PFRAME_POINTERS; | | |
| | |
| NTSYSAPI | | |
| VOID | | |
| NTAPI | | |
| __jump_unwind ( | | |
| ULONGLONG TargetMsFrame, | | |
| ULONGLONG TargetBsFrame, | | |
| ULONGLONG TargetPc | | |
| ); | | |
| | |
| #endif // _IA64_ | | |
| | | |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) |
| // begin_wdm begin_ntminiport | | // begin_wdm begin_ntminiport |
| | |
| #if !defined(RC_INVOKED) && !defined(MIDL_PASS) | | #if !defined(RC_INVOKED) && !defined(MIDL_PASS) |
| #if defined(_M_AMD64) || defined(_M_IX86) || defined(_M_CEE_PURE) | | #if defined(_M_AMD64) || defined(_M_IX86) || defined(_M_CEE_PURE) |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| extern "C" { | | extern "C" { |
| #endif | | #endif |
| | |
| | |
| skipping to change at line 8260 | | skipping to change at line 7666 |
| _In_ _Interlocked_operand_ BYTE const volatile *Source | | _In_ _Interlocked_operand_ BYTE const volatile *Source |
| ) | | ) |
| | |
| { | | { |
| | |
| return (BYTE )ReadNoFence8((PCHAR)Source); | | return (BYTE )ReadNoFence8((PCHAR)Source); |
| } | | } |
| | |
| FORCEINLINE | | FORCEINLINE |
| BYTE | | BYTE |
|
| | ReadBooleanAcquire ( |
| | _In_ _Interlocked_operand_ BOOLEAN const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | return (BOOLEAN)ReadAcquire8((PCHAR)Source); |
| | } |
| | |
| | FORCEINLINE |
| | BYTE |
| | ReadBooleanNoFence ( |
| | _In_ _Interlocked_operand_ BOOLEAN const volatile *Source |
| | ) |
| | |
| | { |
| | |
| | return (BOOLEAN)ReadNoFence8((PCHAR)Source); |
| | } |
| | |
| | FORCEINLINE |
| | BYTE |
| ReadUCharRaw ( | | ReadUCharRaw ( |
| _In_ _Interlocked_operand_ BYTE const volatile *Source | | _In_ _Interlocked_operand_ BYTE const volatile *Source |
| ) | | ) |
| | |
| { | | { |
| | |
| return (BYTE )ReadRaw8((PCHAR)Source); | | return (BYTE )ReadRaw8((PCHAR)Source); |
| } | | } |
| | |
| FORCEINLINE | | FORCEINLINE |
| | |
| skipping to change at line 8297 | | skipping to change at line 7725 |
| ) | | ) |
| | |
| { | | { |
| | |
| WriteNoFence8((PCHAR)Destination, (CHAR)Value); | | WriteNoFence8((PCHAR)Destination, (CHAR)Value); |
| return; | | return; |
| } | | } |
| | |
| FORCEINLINE | | FORCEINLINE |
| VOID | | VOID |
|
| | WriteBooleanRelease ( |
| | _Out_ _Interlocked_operand_ BOOLEAN volatile *Destination, |
| | _In_ BOOLEAN Value |
| | ) |
| | |
| | { |
| | |
| | WriteRelease8((PCHAR)Destination, (CHAR)Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| | WriteBooleanNoFence ( |
| | _Out_ _Interlocked_operand_ BOOLEAN volatile *Destination, |
| | _In_ BOOLEAN Value |
| | ) |
| | |
| | { |
| | |
| | WriteNoFence8((PCHAR)Destination, (CHAR)Value); |
| | return; |
| | } |
| | |
| | FORCEINLINE |
| | VOID |
| WriteUCharRaw ( | | WriteUCharRaw ( |
| _Out_ _Interlocked_operand_ BYTE volatile *Destination, | | _Out_ _Interlocked_operand_ BYTE volatile *Destination, |
| _In_ BYTE Value | | _In_ BYTE Value |
| ) | | ) |
| | |
| { | | { |
| | |
| WriteRaw8((PCHAR)Destination, (CHAR)Value); | | WriteRaw8((PCHAR)Destination, (CHAR)Value); |
| return; | | return; |
| } | | } |
| | |
| skipping to change at line 9046 | | skipping to change at line 8500 |
| // | | // |
| // So we'll declare ACCESS_MASK as DWORD | | // So we'll declare ACCESS_MASK as DWORD |
| // | | // |
| | |
| // begin_wdm | | // begin_wdm |
| // begin_ntoshvp | | // begin_ntoshvp |
| typedef DWORD ACCESS_MASK; | | typedef DWORD ACCESS_MASK; |
| typedef ACCESS_MASK *PACCESS_MASK; | | typedef ACCESS_MASK *PACCESS_MASK; |
| | |
| // end_ntoshvp | | // end_ntoshvp |
|
| | // begin_access |
| //////////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////////// |
| // // | | // // |
| // ACCESS TYPES // | | // ACCESS TYPES // |
| // // | | // // |
| //////////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////////// |
| | |
| // begin_wdm | | // begin_wdm |
| // | | // |
| // The following are masks for the predefined standard access types | | // The following are masks for the predefined standard access types |
| // | | // |
| | |
| skipping to change at line 9184 | | skipping to change at line 8639 |
| #endif | | #endif |
| | |
| #define SID_REVISION (1) // Current revision level | | #define SID_REVISION (1) // Current revision level |
| #define SID_MAX_SUB_AUTHORITIES (15) | | #define SID_MAX_SUB_AUTHORITIES (15) |
| #define SID_RECOMMENDED_SUB_AUTHORITIES (1) // Will change to around 6 | | #define SID_RECOMMENDED_SUB_AUTHORITIES (1) // Will change to around 6 |
| | |
| // in a future release. | | // in a future release. |
| #ifndef MIDL_PASS | | #ifndef MIDL_PASS |
| #define SECURITY_MAX_SID_SIZE \ | | #define SECURITY_MAX_SID_SIZE \ |
| (sizeof(SID) - sizeof(DWORD) + (SID_MAX_SUB_AUTHORITIES * sizeof(DWORD))) | | (sizeof(SID) - sizeof(DWORD) + (SID_MAX_SUB_AUTHORITIES * sizeof(DWORD))) |
|
| | |
| | #define SECURITY_SID_SIZE(SubAuthorityCount_) (sizeof(SID) - sizeof(DWORD) + \ |
| | (SubAuthorityCount_) * sizeof(DW |
| | ORD)) |
| | |
| | // |
| | // Union which can hold any valid sid. |
| | // |
| | |
| | typedef union _SE_SID { |
| | SID Sid; |
| | BYTE Buffer[SECURITY_MAX_SID_SIZE]; |
| | } SE_SID, *PSE_SID; |
| | |
| #endif // MIDL_PASS | | #endif // MIDL_PASS |
| | |
| typedef enum _SID_NAME_USE { | | typedef enum _SID_NAME_USE { |
| SidTypeUser = 1, | | SidTypeUser = 1, |
| SidTypeGroup, | | SidTypeGroup, |
| SidTypeDomain, | | SidTypeDomain, |
| SidTypeAlias, | | SidTypeAlias, |
| SidTypeWellKnownGroup, | | SidTypeWellKnownGroup, |
| SidTypeDeletedAccount, | | SidTypeDeletedAccount, |
| SidTypeInvalid, | | SidTypeInvalid, |
| SidTypeUnknown, | | SidTypeUnknown, |
| SidTypeComputer, | | SidTypeComputer, |
|
| SidTypeLabel | | SidTypeLabel, |
| | SidTypeLogonSession |
| } SID_NAME_USE, *PSID_NAME_USE; | | } SID_NAME_USE, *PSID_NAME_USE; |
| | |
| typedef struct _SID_AND_ATTRIBUTES { | | typedef struct _SID_AND_ATTRIBUTES { |
| #ifdef MIDL_PASS | | #ifdef MIDL_PASS |
| PISID Sid; | | PISID Sid; |
| #else // MIDL_PASS | | #else // MIDL_PASS |
| PSID Sid; | | PSID Sid; |
| #endif // MIDL_PASS | | #endif // MIDL_PASS |
| DWORD Attributes; | | DWORD Attributes; |
| } SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES; | | } SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES; |
| | |
| skipping to change at line 9378 | | skipping to change at line 8847 |
| | |
| #define SECURITY_COM_ID_BASE_RID (0x00000059L) | | #define SECURITY_COM_ID_BASE_RID (0x00000059L) |
| | |
| #define SECURITY_WINDOW_MANAGER_BASE_RID (0x0000005AL) | | #define SECURITY_WINDOW_MANAGER_BASE_RID (0x0000005AL) |
| | |
| #define SECURITY_RDV_GFX_BASE_RID (0x0000005BL) | | #define SECURITY_RDV_GFX_BASE_RID (0x0000005BL) |
| | |
| #define SECURITY_DASHOST_ID_BASE_RID (0x0000005CL) | | #define SECURITY_DASHOST_ID_BASE_RID (0x0000005CL) |
| #define SECURITY_DASHOST_ID_RID_COUNT (6L) | | #define SECURITY_DASHOST_ID_RID_COUNT (6L) |
| | |
|
| | #define SECURITY_USERMANAGER_ID_BASE_RID (0x0000005DL) |
| | #define SECURITY_USERMANAGER_ID_RID_COUNT (6L) |
| | |
| | #define SECURITY_WINRM_ID_BASE_RID (0x0000005EL) |
| | #define SECURITY_WINRM_ID_RID_COUNT (6L) |
| | |
| #define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (6L) | | #define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (6L) |
| | |
| #define SECURITY_MAX_BASE_RID (0x0000006FL) | | #define SECURITY_MAX_BASE_RID (0x0000006FL) |
| #define SECURITY_MAX_ALWAYS_FILTERED (0x000003E7L) | | #define SECURITY_MAX_ALWAYS_FILTERED (0x000003E7L) |
| #define SECURITY_MIN_NEVER_FILTERED (0x000003E8L) | | #define SECURITY_MIN_NEVER_FILTERED (0x000003E8L) |
| | |
| #define SECURITY_OTHER_ORGANIZATION_RID (0x000003E8L) | | #define SECURITY_OTHER_ORGANIZATION_RID (0x000003E8L) |
| | |
| // | | // |
| //Service SID type RIDs are in the range 0x50- 0x6F. Therefore, we are giving
the next available RID to Windows Mobile team. | | //Service SID type RIDs are in the range 0x50- 0x6F. Therefore, we are giving
the next available RID to Windows Mobile team. |
| // | | // |
| #define SECURITY_WINDOWSMOBILE_ID_BASE_RID (0x00000070L) | | #define SECURITY_WINDOWSMOBILE_ID_BASE_RID (0x00000070L) |
| | |
| // | | // |
|
| | // Installer Capability Group Sid related. Currently Base RID is same as LOCAL D |
| | OMAIN. |
| | // |
| | #define SECURITY_INSTALLER_GROUP_CAPABILITY_BASE (0x20) |
| | #define SECURITY_INSTALLER_GROUP_CAPABILITY_RID_COUNT (9) |
| | |
| | // Note: This is because the App Capability Rid is S-1-15-3-1024-... |
| | // whereas the service group rid is S-1-5-32-... |
| | // The number of RIDs from hash (8) are the same for both |
| | #define SECURITY_INSTALLER_CAPABILITY_RID_COUNT (10) |
| | |
| | // |
| //Well-known group for local accounts | | //Well-known group for local accounts |
| // | | // |
| #define SECURITY_LOCAL_ACCOUNT_RID (0x00000071L) | | #define SECURITY_LOCAL_ACCOUNT_RID (0x00000071L) |
| #define SECURITY_LOCAL_ACCOUNT_AND_ADMIN_RID (0x00000072L) | | #define SECURITY_LOCAL_ACCOUNT_AND_ADMIN_RID (0x00000072L) |
| | |
| ///////////////////////////////////////////////////////////////////////////// | | ///////////////////////////////////////////////////////////////////////////// |
| // // | | // // |
| // well-known domain relative sub-authority values (RIDs)... // | | // well-known domain relative sub-authority values (RIDs)... // |
| // // | | // // |
| ///////////////////////////////////////////////////////////////////////////// | | ///////////////////////////////////////////////////////////////////////////// |
| | |
| #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED (0x000001F0L) | | #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED (0x000001F0L) |
| #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS (0x000001F1L) | | #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS (0x000001F1L) |
| #define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS (0x000001F2L) | | #define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS (0x000001F2L) |
| | |
| #define FOREST_USER_RID_MAX (0x000001F3L) | | #define FOREST_USER_RID_MAX (0x000001F3L) |
| | |
| // Well-known users ... | | // Well-known users ... |
| | |
|
| #define DOMAIN_USER_RID_ADMIN (0x000001F4L) | | #define DOMAIN_USER_RID_ADMIN (0x000001F4L) |
| #define DOMAIN_USER_RID_GUEST (0x000001F5L) | | #define DOMAIN_USER_RID_GUEST (0x000001F5L) |
| #define DOMAIN_USER_RID_KRBTGT (0x000001F6L) | | #define DOMAIN_USER_RID_KRBTGT (0x000001F6L) |
| | #define DOMAIN_USER_RID_DEFAULT_ACCOUNT (0x000001F7L) |
| | |
| #define DOMAIN_USER_RID_MAX (0x000003E7L) | | #define DOMAIN_USER_RID_MAX (0x000003E7L) |
| | |
| // well-known groups ... | | // well-known groups ... |
| | |
| #define DOMAIN_GROUP_RID_ADMINS (0x00000200L) | | #define DOMAIN_GROUP_RID_ADMINS (0x00000200L) |
| #define DOMAIN_GROUP_RID_USERS (0x00000201L) | | #define DOMAIN_GROUP_RID_USERS (0x00000201L) |
| #define DOMAIN_GROUP_RID_GUESTS (0x00000202L) | | #define DOMAIN_GROUP_RID_GUESTS (0x00000202L) |
| #define DOMAIN_GROUP_RID_COMPUTERS (0x00000203L) | | #define DOMAIN_GROUP_RID_COMPUTERS (0x00000203L) |
| #define DOMAIN_GROUP_RID_CONTROLLERS (0x00000204L) | | #define DOMAIN_GROUP_RID_CONTROLLERS (0x00000204L) |
| #define DOMAIN_GROUP_RID_CERT_ADMINS (0x00000205L) | | #define DOMAIN_GROUP_RID_CERT_ADMINS (0x00000205L) |
| #define DOMAIN_GROUP_RID_SCHEMA_ADMINS (0x00000206L) | | #define DOMAIN_GROUP_RID_SCHEMA_ADMINS (0x00000206L) |
| #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (0x00000207L) | | #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (0x00000207L) |
| #define DOMAIN_GROUP_RID_POLICY_ADMINS (0x00000208L) | | #define DOMAIN_GROUP_RID_POLICY_ADMINS (0x00000208L) |
| #define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (0x00000209L) | | #define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (0x00000209L) |
| #define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS (0x0000020AL) | | #define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS (0x0000020AL) |
| #define DOMAIN_GROUP_RID_CDC_RESERVED (0x0000020CL) | | #define DOMAIN_GROUP_RID_CDC_RESERVED (0x0000020CL) |
| #define DOMAIN_GROUP_RID_PROTECTED_USERS (0x0000020DL) | | #define DOMAIN_GROUP_RID_PROTECTED_USERS (0x0000020DL) |
|
| | #define DOMAIN_GROUP_RID_KEY_ADMINS (0x0000020EL) |
| | #define DOMAIN_GROUP_RID_ENTERPRISE_KEY_ADMINS (0x0000020FL) |
| | |
| // well-known aliases ... | | // well-known aliases ... |
| | |
| #define DOMAIN_ALIAS_RID_ADMINS (0x00000220L) | | #define DOMAIN_ALIAS_RID_ADMINS (0x00000220L) |
| #define DOMAIN_ALIAS_RID_USERS (0x00000221L) | | #define DOMAIN_ALIAS_RID_USERS (0x00000221L) |
| #define DOMAIN_ALIAS_RID_GUESTS (0x00000222L) | | #define DOMAIN_ALIAS_RID_GUESTS (0x00000222L) |
| #define DOMAIN_ALIAS_RID_POWER_USERS (0x00000223L) | | #define DOMAIN_ALIAS_RID_POWER_USERS (0x00000223L) |
| | |
| #define DOMAIN_ALIAS_RID_ACCOUNT_OPS (0x00000224L) | | #define DOMAIN_ALIAS_RID_ACCOUNT_OPS (0x00000224L) |
| #define DOMAIN_ALIAS_RID_SYSTEM_OPS (0x00000225L) | | #define DOMAIN_ALIAS_RID_SYSTEM_OPS (0x00000225L) |
| | |
| skipping to change at line 9469 | | skipping to change at line 8958 |
| #define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (0x0000023BL) | | #define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (0x0000023BL) |
| #define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (0x0000023CL) | | #define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (0x0000023CL) |
| #define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (0x0000023DL) | | #define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (0x0000023DL) |
| #define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP (0x0000023EL) | | #define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP (0x0000023EL) |
| #define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS (0x0000023FL) | | #define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS (0x0000023FL) |
| #define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS (0x00000240L) | | #define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS (0x00000240L) |
| #define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS (0x00000241L) | | #define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS (0x00000241L) |
| #define DOMAIN_ALIAS_RID_HYPER_V_ADMINS (0x00000242L) | | #define DOMAIN_ALIAS_RID_HYPER_V_ADMINS (0x00000242L) |
| #define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS (0x00000243L) | | #define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS (0x00000243L) |
| #define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS (0x00000244L) | | #define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS (0x00000244L) |
|
| | #define DOMAIN_ALIAS_RID_DEFAULT_ACCOUNT (0x00000245L) |
| | #define DOMAIN_ALIAS_RID_STORAGE_REPLICA_ADMINS (0x00000246L) |
| | |
| // | | // |
| // Application Package Authority. | | // Application Package Authority. |
| // | | // |
| | |
| #define SECURITY_APP_PACKAGE_AUTHORITY {0,0,0,0,0,15} | | #define SECURITY_APP_PACKAGE_AUTHORITY {0,0,0,0,0,15} |
| | |
| #define SECURITY_APP_PACKAGE_BASE_RID (0x00000002L) | | #define SECURITY_APP_PACKAGE_BASE_RID (0x00000002L) |
| #define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (2L) | | #define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (2L) |
| #define SECURITY_APP_PACKAGE_RID_COUNT (8L) | | #define SECURITY_APP_PACKAGE_RID_COUNT (8L) |
| #define SECURITY_CAPABILITY_BASE_RID (0x00000003L) | | #define SECURITY_CAPABILITY_BASE_RID (0x00000003L) |
|
| | #define SECURITY_CAPABILITY_APP_RID (0x000000400) |
| #define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (2L) | | #define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (2L) |
| #define SECURITY_CAPABILITY_RID_COUNT (5L) | | #define SECURITY_CAPABILITY_RID_COUNT (5L) |
| #define SECURITY_PARENT_PACKAGE_RID_COUNT (SECURITY_APP_PACKAGE_RID_CO
UNT) | | #define SECURITY_PARENT_PACKAGE_RID_COUNT (SECURITY_APP_PACKAGE_RID_CO
UNT) |
| #define SECURITY_CHILD_PACKAGE_RID_COUNT (12L) | | #define SECURITY_CHILD_PACKAGE_RID_COUNT (12L) |
| | |
| // | | // |
| // Built-in Packages. | | // Built-in Packages. |
| // | | // |
| | |
| #define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (0x00000001L) | | #define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (0x00000001L) |
| | |
| skipping to change at line 9505 | | skipping to change at line 8997 |
| #define SECURITY_CAPABILITY_INTERNET_CLIENT (0x00000001L) | | #define SECURITY_CAPABILITY_INTERNET_CLIENT (0x00000001L) |
| #define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (0x00000002L) | | #define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (0x00000002L) |
| #define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (0x00000003L) | | #define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (0x00000003L) |
| #define SECURITY_CAPABILITY_PICTURES_LIBRARY (0x00000004L) | | #define SECURITY_CAPABILITY_PICTURES_LIBRARY (0x00000004L) |
| #define SECURITY_CAPABILITY_VIDEOS_LIBRARY (0x00000005L) | | #define SECURITY_CAPABILITY_VIDEOS_LIBRARY (0x00000005L) |
| #define SECURITY_CAPABILITY_MUSIC_LIBRARY (0x00000006L) | | #define SECURITY_CAPABILITY_MUSIC_LIBRARY (0x00000006L) |
| #define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (0x00000007L) | | #define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (0x00000007L) |
| #define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (0x00000008L) | | #define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (0x00000008L) |
| #define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (0x00000009L) | | #define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (0x00000009L) |
| #define SECURITY_CAPABILITY_REMOVABLE_STORAGE (0x0000000AL) | | #define SECURITY_CAPABILITY_REMOVABLE_STORAGE (0x0000000AL) |
|
| | #define SECURITY_CAPABILITY_APPOINTMENTS (0x0000000BL) |
| | #define SECURITY_CAPABILITY_CONTACTS (0x0000000CL) |
| | |
| #define SECURITY_CAPABILITY_INTERNET_EXPLORER (0x00001000L) | | #define SECURITY_CAPABILITY_INTERNET_EXPLORER (0x00001000L) |
| | |
| // | | // |
| // Mandatory Label Authority. | | // Mandatory Label Authority. |
| // | | // |
| | |
| #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} | | #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} |
| #define SECURITY_MANDATORY_UNTRUSTED_RID (0x00000000L) | | #define SECURITY_MANDATORY_UNTRUSTED_RID (0x00000000L) |
| #define SECURITY_MANDATORY_LOW_RID (0x00001000L) | | #define SECURITY_MANDATORY_LOW_RID (0x00001000L) |
| | |
| skipping to change at line 9536 | | skipping to change at line 9030 |
| #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID | | #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID |
| | |
| #define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000) | | #define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000) |
| | |
| #define SECURITY_SCOPED_POLICY_ID_AUTHORITY {0,0,0,0,0,17} | | #define SECURITY_SCOPED_POLICY_ID_AUTHORITY {0,0,0,0,0,17} |
| | |
| // | | // |
| // Authentication Authority | | // Authentication Authority |
| // | | // |
| | |
|
| #define SECURITY_AUTHENTICATION_AUTHORITY {0,0,0,0,0,18} | | #define SECURITY_AUTHENTICATION_AUTHORITY {0,0,0,0,0,18} |
| #define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (1L) | | #define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (1L) |
| #define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (0x00000001L) | | #define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (0x00000001L) |
| #define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (0x00000002L) | | #define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (0x00000002L) |
| | #define SECURITY_AUTHENTICATION_FRESH_KEY_AUTH_RID (0x00000003L) |
| | #define SECURITY_AUTHENTICATION_KEY_TRUST_RID (0x00000004L) |
| | #define SECURITY_AUTHENTICATION_KEY_PROPERTY_MFA_RID (0x00000005L) |
| | #define SECURITY_AUTHENTICATION_KEY_PROPERTY_ATTESTATION_RID (0x00000006L) |
| | |
| // | | // |
| // Process Trust Authority | | // Process Trust Authority |
| // | | // |
| | |
| #define SECURITY_PROCESS_TRUST_AUTHORITY {0,0,0,0,0,19} | | #define SECURITY_PROCESS_TRUST_AUTHORITY {0,0,0,0,0,19} |
| #define SECURITY_PROCESS_TRUST_AUTHORITY_RID_COUNT (2L) | | #define SECURITY_PROCESS_TRUST_AUTHORITY_RID_COUNT (2L) |
| | |
| #define SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID (0x00000400L) | | #define SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID (0x00000400L) |
| #define SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID (0x00000200L) | | #define SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID (0x00000200L) |
| | |
| skipping to change at line 9680 | | skipping to change at line 9178 |
| WinUserModeDriversSid = 98, | | WinUserModeDriversSid = 98, |
| WinBuiltinHyperVAdminsSid = 99, | | WinBuiltinHyperVAdminsSid = 99, |
| WinAccountCloneableControllersSid = 100, | | WinAccountCloneableControllersSid = 100, |
| WinBuiltinAccessControlAssistanceOperatorsSid = 101, | | WinBuiltinAccessControlAssistanceOperatorsSid = 101, |
| WinBuiltinRemoteManagementUsersSid = 102, | | WinBuiltinRemoteManagementUsersSid = 102, |
| WinAuthenticationAuthorityAssertedSid = 103, | | WinAuthenticationAuthorityAssertedSid = 103, |
| WinAuthenticationServiceAssertedSid = 104, | | WinAuthenticationServiceAssertedSid = 104, |
| WinLocalAccountSid = 105, | | WinLocalAccountSid = 105, |
| WinLocalAccountAndAdministratorSid = 106, | | WinLocalAccountAndAdministratorSid = 106, |
| WinAccountProtectedUsersSid = 107, | | WinAccountProtectedUsersSid = 107, |
|
| | WinCapabilityAppointmentsSid = 108, |
| | WinCapabilityContactsSid = 109, |
| | WinAccountDefaultSystemManagedSid = 110, |
| | WinBuiltinDefaultSystemManagedGroupSid = 111, |
| | WinBuiltinStorageReplicaAdminsSid = 112, |
| | WinAccountKeyAdminsSid = 113, |
| | WinAccountEnterpriseKeyAdminsSid = 114, |
| | WinAuthenticationKeyTrustSid = 115, |
| | WinAuthenticationKeyPropertyMFASid = 116, |
| | WinAuthenticationKeyPropertyAttestationSid = 117, |
| | WinAuthenticationFreshKeyAuthSid = 118, |
| } WELL_KNOWN_SID_TYPE; | | } WELL_KNOWN_SID_TYPE; |
| | |
| // | | // |
| // Allocate the System Luid. The first 1000 LUIDs are reserved. | | // Allocate the System Luid. The first 1000 LUIDs are reserved. |
| // Use #999 here (0x3e7 = 999) | | // Use #999 here (0x3e7 = 999) |
| // | | // |
| | |
| #define SYSTEM_LUID { 0x3e7, 0x0 } | | #define SYSTEM_LUID { 0x3e7, 0x0 } |
| #define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 } | | #define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 } |
| #define LOCALSERVICE_LUID { 0x3e5, 0x0 } | | #define LOCALSERVICE_LUID { 0x3e5, 0x0 } |
| | |
| skipping to change at line 10552 | | skipping to change at line 10061 |
| #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") | | #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") |
| #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") | | #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") |
| #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") | | #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") |
| #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") | | #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") |
| #define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege"
) | | #define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege"
) |
| #define SE_RELABEL_NAME TEXT("SeRelabelPrivilege") | | #define SE_RELABEL_NAME TEXT("SeRelabelPrivilege") |
| #define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege") | | #define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege") |
| #define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") | | #define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege") |
| #define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege") | | #define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege") |
| | |
|
| | // |
| | // List Of String Capabilities. |
| | // |
| | #define SE_ACTIVATE_AS_USER_CAPABILITY L"activateAsUser" |
| | #define SE_CONSTRAINED_IMPERSONATION_CAPABILITY L"constrainedImpersonation" |
| | #define SE_SESSION_IMPERSONATION_CAPABILITY L"sessionImpersonation" |
| | #define SE_MUMA_CAPABILITY L"muma" |
| | |
| //////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////// |
| // // | | // // |
| // Security Quality Of Service // | | // Security Quality Of Service // |
| // // | | // // |
| // // | | // // |
| //////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////// |
| | |
| // begin_wdm | | // begin_wdm |
| // | | // |
| // Impersonation Level | | // Impersonation Level |
| | |
| skipping to change at line 10587 | | skipping to change at line 10104 |
| #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation | | #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation |
| #define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL)
&& ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL)) | | #define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL)
&& ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL)) |
| | |
| //////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////// |
| // // | | // // |
| // Token Object Definitions // | | // Token Object Definitions // |
| // // | | // // |
| // // | | // // |
| //////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////// |
| | |
|
| | // begin_access |
| | |
| // | | // |
| // Token Specific Access Rights. | | // Token Specific Access Rights. |
| // | | // |
| | |
| #define TOKEN_ASSIGN_PRIMARY (0x0001) | | #define TOKEN_ASSIGN_PRIMARY (0x0001) |
| #define TOKEN_DUPLICATE (0x0002) | | #define TOKEN_DUPLICATE (0x0002) |
| #define TOKEN_IMPERSONATE (0x0004) | | #define TOKEN_IMPERSONATE (0x0004) |
| #define TOKEN_QUERY (0x0008) | | #define TOKEN_QUERY (0x0008) |
| #define TOKEN_QUERY_SOURCE (0x0010) | | #define TOKEN_QUERY_SOURCE (0x0010) |
| #define TOKEN_ADJUST_PRIVILEGES (0x0020) | | #define TOKEN_ADJUST_PRIVILEGES (0x0020) |
| | |
| skipping to change at line 10632 | | skipping to change at line 10151 |
| TOKEN_ADJUST_PRIVILEGES |\ | | TOKEN_ADJUST_PRIVILEGES |\ |
| TOKEN_ADJUST_GROUPS |\ | | TOKEN_ADJUST_GROUPS |\ |
| TOKEN_ADJUST_DEFAULT) | | TOKEN_ADJUST_DEFAULT) |
| | |
| #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) | | #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) |
| | |
| #define TOKEN_TRUST_CONSTRAINT_MASK (STANDARD_RIGHTS_READ | \ | | #define TOKEN_TRUST_CONSTRAINT_MASK (STANDARD_RIGHTS_READ | \ |
| TOKEN_QUERY |\ | | TOKEN_QUERY |\ |
| TOKEN_QUERY_SOURCE ) | | TOKEN_QUERY_SOURCE ) |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
| | #define TOKEN_ACCESS_PSEUDO_HANDLE_WIN8 (TOKEN_QUERY | TOKEN_QUERY_SOURCE) |
| | |
| | #define TOKEN_ACCESS_PSEUDO_HANDLE TOKEN_ACCESS_PSEUDO_HANDLE_WIN8 |
| | |
| | #endif |
| | // |
| | // end_access |
| // | | // |
| // | | // |
| // Token Types | | // Token Types |
| // | | // |
| | |
| typedef enum _TOKEN_TYPE { | | typedef enum _TOKEN_TYPE { |
| TokenPrimary = 1, | | TokenPrimary = 1, |
| TokenImpersonation | | TokenImpersonation |
| } TOKEN_TYPE; | | } TOKEN_TYPE; |
| typedef TOKEN_TYPE *PTOKEN_TYPE; | | typedef TOKEN_TYPE *PTOKEN_TYPE; |
| | |
| skipping to change at line 10701 | | skipping to change at line 10229 |
| TokenAppContainerNumber, | | TokenAppContainerNumber, |
| TokenUserClaimAttributes, | | TokenUserClaimAttributes, |
| TokenDeviceClaimAttributes, | | TokenDeviceClaimAttributes, |
| TokenRestrictedUserClaimAttributes, | | TokenRestrictedUserClaimAttributes, |
| TokenRestrictedDeviceClaimAttributes, | | TokenRestrictedDeviceClaimAttributes, |
| TokenDeviceGroups, | | TokenDeviceGroups, |
| TokenRestrictedDeviceGroups, | | TokenRestrictedDeviceGroups, |
| TokenSecurityAttributes, | | TokenSecurityAttributes, |
| TokenIsRestricted, | | TokenIsRestricted, |
| TokenProcessTrustLevel, | | TokenProcessTrustLevel, |
|
| | TokenPrivateNameSpace, |
| MaxTokenInfoClass // MaxTokenInfoClass should always be the last enum | | MaxTokenInfoClass // MaxTokenInfoClass should always be the last enum |
| } TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS; | | } TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS; |
| | |
| // | | // |
| // Token information class structures | | // Token information class structures |
| // | | // |
| | |
| typedef struct _TOKEN_USER { | | typedef struct _TOKEN_USER { |
| SID_AND_ATTRIBUTES User; | | SID_AND_ATTRIBUTES User; |
| } TOKEN_USER, *PTOKEN_USER; | | } TOKEN_USER, *PTOKEN_USER; |
| | |
|
| | #ifndef MIDL_PASS |
| | |
| | typedef struct _SE_TOKEN_USER { |
| | union { |
| | TOKEN_USER TokenUser; |
| | SID_AND_ATTRIBUTES User; |
| | } DUMMYUNIONNAME; |
| | |
| | union { |
| | SID Sid; |
| | BYTE Buffer[SECURITY_MAX_SID_SIZE]; |
| | } DUMMYUNIONNAME2; |
| | |
| | } SE_TOKEN_USER , PSE_TOKEN_USER; |
| | |
| | #define TOKEN_USER_MAX_SIZE (sizeof(TOKEN_USER) + SECURITY_MAX_SID_SIZE) |
| | |
| | #endif |
| | |
| typedef struct _TOKEN_GROUPS { | | typedef struct _TOKEN_GROUPS { |
| DWORD GroupCount; | | DWORD GroupCount; |
| #ifdef MIDL_PASS | | #ifdef MIDL_PASS |
| [size_is(GroupCount)] SID_AND_ATTRIBUTES Groups[*]; | | [size_is(GroupCount)] SID_AND_ATTRIBUTES Groups[*]; |
| #else // MIDL_PASS | | #else // MIDL_PASS |
| SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; | | SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; |
| #endif // MIDL_PASS | | #endif // MIDL_PASS |
| } TOKEN_GROUPS, *PTOKEN_GROUPS; | | } TOKEN_GROUPS, *PTOKEN_GROUPS; |
| | |
| typedef struct _TOKEN_PRIVILEGES { | | typedef struct _TOKEN_PRIVILEGES { |
| DWORD PrivilegeCount; | | DWORD PrivilegeCount; |
| LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; | | LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; |
| } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES; | | } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES; |
| | |
| typedef struct _TOKEN_OWNER { | | typedef struct _TOKEN_OWNER { |
| PSID Owner; | | PSID Owner; |
| } TOKEN_OWNER, *PTOKEN_OWNER; | | } TOKEN_OWNER, *PTOKEN_OWNER; |
| | |
|
| | #ifndef MIDL_PASS |
| | #define TOKEN_OWNER_MAX_SIZE (sizeof(TOKEN_OWNER) + SECURITY_MAX_SID_SIZE) |
| | #endif |
| | |
| typedef struct _TOKEN_PRIMARY_GROUP { | | typedef struct _TOKEN_PRIMARY_GROUP { |
| PSID PrimaryGroup; | | PSID PrimaryGroup; |
| } TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; | | } TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; |
| | |
| typedef struct _TOKEN_DEFAULT_DACL { | | typedef struct _TOKEN_DEFAULT_DACL { |
| PACL DefaultDacl; | | PACL DefaultDacl; |
| } TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; | | } TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; |
| | |
| typedef struct _TOKEN_USER_CLAIMS { | | typedef struct _TOKEN_USER_CLAIMS { |
| PCLAIMS_BLOB UserClaims; | | PCLAIMS_BLOB UserClaims; |
| | |
| skipping to change at line 10778 | | skipping to change at line 10330 |
| SID_AND_ATTRIBUTES Label; | | SID_AND_ATTRIBUTES Label; |
| } TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL; | | } TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL; |
| | |
| #define TOKEN_MANDATORY_POLICY_OFF 0x0 | | #define TOKEN_MANDATORY_POLICY_OFF 0x0 |
| #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 | | #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 |
| #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 | | #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 |
| | |
| #define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_
UP | \ | | #define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_
UP | \ |
| TOKEN_MANDATORY_POLICY_NEW_PROCE
SS_MIN) | | TOKEN_MANDATORY_POLICY_NEW_PROCE
SS_MIN) |
| | |
|
| | #ifndef MIDL_PASS |
| | #define TOKEN_INTEGRITY_LEVEL_MAX_SIZE ((((DWORD)(sizeof(TOKEN_MANDATORY_LABEL)) |
| | + sizeof(PVOID) - 1) & ~(sizeof(PVOID)-1)) + SECURITY_MAX_SID_SIZE) |
| | #endif |
| | |
| typedef struct _TOKEN_MANDATORY_POLICY { | | typedef struct _TOKEN_MANDATORY_POLICY { |
| DWORD Policy; | | DWORD Policy; |
| } TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; | | } TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; |
| | |
|
| | typedef PVOID PSECURITY_ATTRIBUTES_OPAQUE; |
| | |
| typedef struct _TOKEN_ACCESS_INFORMATION { | | typedef struct _TOKEN_ACCESS_INFORMATION { |
| PSID_AND_ATTRIBUTES_HASH SidHash; | | PSID_AND_ATTRIBUTES_HASH SidHash; |
| PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; | | PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; |
| PTOKEN_PRIVILEGES Privileges; | | PTOKEN_PRIVILEGES Privileges; |
| LUID AuthenticationId; | | LUID AuthenticationId; |
| TOKEN_TYPE TokenType; | | TOKEN_TYPE TokenType; |
| SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; | | SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; |
| TOKEN_MANDATORY_POLICY MandatoryPolicy; | | TOKEN_MANDATORY_POLICY MandatoryPolicy; |
| DWORD Flags; | | DWORD Flags; |
| DWORD AppContainerNumber; | | DWORD AppContainerNumber; |
| PSID PackageSid; | | PSID PackageSid; |
| PSID_AND_ATTRIBUTES_HASH CapabilitiesHash; | | PSID_AND_ATTRIBUTES_HASH CapabilitiesHash; |
| PSID TrustLevelSid; | | PSID TrustLevelSid; |
|
| | PSECURITY_ATTRIBUTES_OPAQUE SecurityAttributes; |
| } TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; | | } TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; |
| | |
| // | | // |
| // Valid bits for each TOKEN_AUDIT_POLICY policy mask field. | | // Valid bits for each TOKEN_AUDIT_POLICY policy mask field. |
| // | | // |
| | |
|
| #define POLICY_AUDIT_SUBCATEGORY_COUNT (56) | | #define POLICY_AUDIT_SUBCATEGORY_COUNT (58) |
| | |
| typedef struct _TOKEN_AUDIT_POLICY { | | typedef struct _TOKEN_AUDIT_POLICY { |
| BYTE PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; | | BYTE PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; |
| } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; | | } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; |
| | |
| #define TOKEN_SOURCE_LENGTH 8 | | #define TOKEN_SOURCE_LENGTH 8 |
| | |
| typedef struct _TOKEN_SOURCE { | | typedef struct _TOKEN_SOURCE { |
| CHAR SourceName[TOKEN_SOURCE_LENGTH]; | | CHAR SourceName[TOKEN_SOURCE_LENGTH]; |
| LUID SourceIdentifier; | | LUID SourceIdentifier; |
| | |
| skipping to change at line 10852 | | skipping to change at line 10411 |
| MandatoryLevelHigh, | | MandatoryLevelHigh, |
| MandatoryLevelSystem, | | MandatoryLevelSystem, |
| MandatoryLevelSecureProcess, | | MandatoryLevelSecureProcess, |
| MandatoryLevelCount | | MandatoryLevelCount |
| } MANDATORY_LEVEL, *PMANDATORY_LEVEL; | | } MANDATORY_LEVEL, *PMANDATORY_LEVEL; |
| | |
| typedef struct _TOKEN_APPCONTAINER_INFORMATION { | | typedef struct _TOKEN_APPCONTAINER_INFORMATION { |
| PSID TokenAppContainer; | | PSID TokenAppContainer; |
| } TOKEN_APPCONTAINER_INFORMATION, *PTOKEN_APPCONTAINER_INFORMATION; | | } TOKEN_APPCONTAINER_INFORMATION, *PTOKEN_APPCONTAINER_INFORMATION; |
| | |
|
| | #ifndef MIDL_PASS |
| | #define TOKEN_APPCONTAINER_SID_MAX_SIZE (sizeof(TOKEN_APPCONTAINER_INFORMATION) |
| | + SECURITY_MAX_SID_SIZE) |
| | #endif |
| | |
| typedef struct _TOKEN_SID_INFORMATION { | | typedef struct _TOKEN_SID_INFORMATION { |
| PSID Sid; | | PSID Sid; |
| } TOKEN_SID_INFORMATION, *PTOKEN_SID_INFORMATION; | | } TOKEN_SID_INFORMATION, *PTOKEN_SID_INFORMATION; |
| | |
| // | | // |
| // *** Claim Security attributes *** | | // *** Claim Security attributes *** |
| // | | // |
| // These #defines and data structures (almost) exactly mirror | | // These #defines and data structures (almost) exactly mirror |
| // the Token_XXX definitions (except for PWSTR/PUNICODE changes) | | // the Token_XXX definitions (except for PWSTR/PUNICODE changes) |
| // in ntseapi.w as well as AUTHZ_XXX in authz.w. | | // in ntseapi.w as well as AUTHZ_XXX in authz.w. |
| | |
| skipping to change at line 11154 | | skipping to change at line 10717 |
| #define SCOPE_SECURITY_INFORMATION (0x00000040L) | | #define SCOPE_SECURITY_INFORMATION (0x00000040L) |
| #define PROCESS_TRUST_LABEL_SECURITY_INFORMATION (0x00000080L) | | #define PROCESS_TRUST_LABEL_SECURITY_INFORMATION (0x00000080L) |
| #define BACKUP_SECURITY_INFORMATION (0x00010000L) | | #define BACKUP_SECURITY_INFORMATION (0x00010000L) |
| | |
| #define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L) | | #define PROTECTED_DACL_SECURITY_INFORMATION (0x80000000L) |
| #define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L) | | #define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L) |
| #define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L) | | #define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L) |
| #define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L) | | #define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L) |
| | |
| // | | // |
|
| | // Base signing levels. |
| | // |
| | |
| | typedef BYTE SE_SIGNING_LEVEL, *PSE_SIGNING_LEVEL; |
| | |
| | #define SE_SIGNING_LEVEL_UNCHECKED 0x00000000 |
| | #define SE_SIGNING_LEVEL_UNSIGNED 0x00000001 |
| | #define SE_SIGNING_LEVEL_ENTERPRISE 0x00000002 |
| | #define SE_SIGNING_LEVEL_CUSTOM_1 0x00000003 |
| | #define SE_SIGNING_LEVEL_AUTHENTICODE 0x00000004 |
| | #define SE_SIGNING_LEVEL_CUSTOM_2 0x00000005 |
| | #define SE_SIGNING_LEVEL_STORE 0x00000006 |
| | #define SE_SIGNING_LEVEL_CUSTOM_3 0x00000007 |
| | #define SE_SIGNING_LEVEL_ANTIMALWARE SE_SIGNING_LEVEL_CUSTOM_3 |
| | #define SE_SIGNING_LEVEL_MICROSOFT 0x00000008 |
| | #define SE_SIGNING_LEVEL_CUSTOM_4 0x00000009 |
| | #define SE_SIGNING_LEVEL_CUSTOM_5 0x0000000A |
| | #define SE_SIGNING_LEVEL_DYNAMIC_CODEGEN 0x0000000B |
| | #define SE_SIGNING_LEVEL_WINDOWS 0x0000000C |
| | #define SE_SIGNING_LEVEL_CUSTOM_7 0x0000000D |
| | #define SE_SIGNING_LEVEL_WINDOWS_TCB 0x0000000E |
| | #define SE_SIGNING_LEVEL_CUSTOM_6 0x0000000F |
| | |
| | // |
| | // Image signature types. |
| | // |
| | |
| | typedef enum _SE_IMAGE_SIGNATURE_TYPE |
| | { |
| | SeImageSignatureNone = 0, |
| | SeImageSignatureEmbedded, |
| | SeImageSignatureCache, |
| | SeImageSignatureCatalogCached, |
| | SeImageSignatureCatalogNotCached, |
| | SeImageSignatureCatalogHint, |
| | SeImageSignaturePackageCatalog, |
| | } SE_IMAGE_SIGNATURE_TYPE, *PSE_IMAGE_SIGNATURE_TYPE; |
| | |
| | // |
| // Learning Mode Types. | | // Learning Mode Types. |
| // | | // |
| | |
| typedef enum _SE_LEARNING_MODE_DATA_TYPE { | | typedef enum _SE_LEARNING_MODE_DATA_TYPE { |
| SeLearningModeInvalidType = 0, | | SeLearningModeInvalidType = 0, |
| SeLearningModeSettings, | | SeLearningModeSettings, |
| SeLearningModeMax | | SeLearningModeMax |
| } SE_LEARNING_MODE_DATA_TYPE; | | } SE_LEARNING_MODE_DATA_TYPE; |
| | |
| #define SE_LEARNING_MODE_FLAG_PERMISSIVE 0x00000001 | | #define SE_LEARNING_MODE_FLAG_PERMISSIVE 0x00000001 |
| | |
| typedef struct _SECURITY_CAPABILITIES { | | typedef struct _SECURITY_CAPABILITIES { |
|
| | #ifdef MIDL_PASS |
| | PISID AppContainerSid; |
| | [size_is(CapabilityCount)] PSID_AND_ATTRIBUTES Capabilities; |
| | #else // MIDL_PASS |
| PSID AppContainerSid; | | PSID AppContainerSid; |
| PSID_AND_ATTRIBUTES Capabilities; | | PSID_AND_ATTRIBUTES Capabilities; |
|
| | #endif // MIDL_PASS |
| DWORD CapabilityCount; | | DWORD CapabilityCount; |
| DWORD Reserved; | | DWORD Reserved; |
| } SECURITY_CAPABILITIES, *PSECURITY_CAPABILITIES, *LPSECURITY_CAPABILITIES; | | } SECURITY_CAPABILITIES, *PSECURITY_CAPABILITIES, *LPSECURITY_CAPABILITIES; |
| | |
| #define PROCESS_TERMINATE (0x0001) | | #define PROCESS_TERMINATE (0x0001) |
| #define PROCESS_CREATE_THREAD (0x0002) | | #define PROCESS_CREATE_THREAD (0x0002) |
| #define PROCESS_SET_SESSIONID (0x0004) | | #define PROCESS_SET_SESSIONID (0x0004) |
| #define PROCESS_VM_OPERATION (0x0008) | | #define PROCESS_VM_OPERATION (0x0008) |
| #define PROCESS_VM_READ (0x0010) | | #define PROCESS_VM_READ (0x0010) |
| #define PROCESS_VM_WRITE (0x0020) | | #define PROCESS_VM_WRITE (0x0020) |
| | |
| skipping to change at line 11194 | | skipping to change at line 10801 |
| #define PROCESS_QUERY_LIMITED_INFORMATION (0x1000) | | #define PROCESS_QUERY_LIMITED_INFORMATION (0x1000) |
| #define PROCESS_SET_LIMITED_INFORMATION (0x2000) | | #define PROCESS_SET_LIMITED_INFORMATION (0x2000) |
| #if (NTDDI_VERSION >= NTDDI_VISTA) | | #if (NTDDI_VERSION >= NTDDI_VISTA) |
| #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ | | #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ |
| 0xFFFF) | | 0xFFFF) |
| #else | | #else |
| #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ | | #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ |
| 0xFFF) | | 0xFFF) |
| #endif | | #endif |
| | |
|
| #if defined(_WIN64) | | |
| | |
| #define MAXIMUM_PROC_PER_GROUP 64 | | |
| | |
| #else | | |
| | |
| #define MAXIMUM_PROC_PER_GROUP 32 | | |
| | |
| #endif | | |
| | |
| #define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP | | |
| | | |
| #define THREAD_TERMINATE (0x0001) | | #define THREAD_TERMINATE (0x0001) |
| #define THREAD_SUSPEND_RESUME (0x0002) | | #define THREAD_SUSPEND_RESUME (0x0002) |
| #define THREAD_GET_CONTEXT (0x0008) | | #define THREAD_GET_CONTEXT (0x0008) |
| #define THREAD_SET_CONTEXT (0x0010) | | #define THREAD_SET_CONTEXT (0x0010) |
| #define THREAD_QUERY_INFORMATION (0x0040) | | #define THREAD_QUERY_INFORMATION (0x0040) |
| #define THREAD_SET_INFORMATION (0x0020) | | #define THREAD_SET_INFORMATION (0x0020) |
| #define THREAD_SET_THREAD_TOKEN (0x0080) | | #define THREAD_SET_THREAD_TOKEN (0x0080) |
| #define THREAD_IMPERSONATE (0x0100) | | #define THREAD_IMPERSONATE (0x0100) |
| #define THREAD_DIRECT_IMPERSONATION (0x0200) | | #define THREAD_DIRECT_IMPERSONATION (0x0200) |
| // begin_wdm | | // begin_wdm |
| | |
| skipping to change at line 11234 | | skipping to change at line 10829 |
| 0x3FF) | | 0x3FF) |
| #endif | | #endif |
| #define JOB_OBJECT_ASSIGN_PROCESS (0x0001) | | #define JOB_OBJECT_ASSIGN_PROCESS (0x0001) |
| #define JOB_OBJECT_SET_ATTRIBUTES (0x0002) | | #define JOB_OBJECT_SET_ATTRIBUTES (0x0002) |
| #define JOB_OBJECT_QUERY (0x0004) | | #define JOB_OBJECT_QUERY (0x0004) |
| #define JOB_OBJECT_TERMINATE (0x0008) | | #define JOB_OBJECT_TERMINATE (0x0008) |
| #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) | | #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) |
| #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ | | #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ |
| 0x1F ) | | 0x1F ) |
| | |
|
| | // end_access |
| | |
| typedef struct _JOB_SET_ARRAY { | | typedef struct _JOB_SET_ARRAY { |
| HANDLE JobHandle; // Handle to job object to insert | | HANDLE JobHandle; // Handle to job object to insert |
| DWORD MemberLevel; // Level of this job in the set. Must be > 0. Can be spa
rse. | | DWORD MemberLevel; // Level of this job in the set. Must be > 0. Can be spa
rse. |
| DWORD Flags; // Unused. Must be zero | | DWORD Flags; // Unused. Must be zero |
| } JOB_SET_ARRAY, *PJOB_SET_ARRAY; | | } JOB_SET_ARRAY, *PJOB_SET_ARRAY; |
| | |
| #define FLS_MAXIMUM_AVAILABLE 128 | | #define FLS_MAXIMUM_AVAILABLE 128 |
| #define TLS_MINIMUM_AVAILABLE 64 | | #define TLS_MINIMUM_AVAILABLE 64 |
| | |
| typedef struct _EXCEPTION_REGISTRATION_RECORD { | | typedef struct _EXCEPTION_REGISTRATION_RECORD { |
| | |
| skipping to change at line 11321 | | skipping to change at line 10918 |
| #define THREAD_BASE_PRIORITY_MAX 2 // maximum thread base priority boost | | #define THREAD_BASE_PRIORITY_MAX 2 // maximum thread base priority boost |
| #define THREAD_BASE_PRIORITY_MIN (-2) // minimum thread base priority boost | | #define THREAD_BASE_PRIORITY_MIN (-2) // minimum thread base priority boost |
| #define THREAD_BASE_PRIORITY_IDLE (-15) // value that gets a thread to idle | | #define THREAD_BASE_PRIORITY_IDLE (-15) // value that gets a thread to idle |
| | |
| typedef struct _UMS_CREATE_THREAD_ATTRIBUTES { | | typedef struct _UMS_CREATE_THREAD_ATTRIBUTES { |
| DWORD UmsVersion; | | DWORD UmsVersion; |
| PVOID UmsContext; | | PVOID UmsContext; |
| PVOID UmsCompletionList; | | PVOID UmsCompletionList; |
| } UMS_CREATE_THREAD_ATTRIBUTES, *PUMS_CREATE_THREAD_ATTRIBUTES; | | } UMS_CREATE_THREAD_ATTRIBUTES, *PUMS_CREATE_THREAD_ATTRIBUTES; |
| | |
|
| | // |
| | // Page/memory priorities. |
| | // |
| | |
| | #define MEMORY_PRIORITY_LOWEST 0 |
| | #define MEMORY_PRIORITY_VERY_LOW 1 |
| | #define MEMORY_PRIORITY_LOW 2 |
| | #define MEMORY_PRIORITY_MEDIUM 3 |
| | #define MEMORY_PRIORITY_BELOW_NORMAL 4 |
| | #define MEMORY_PRIORITY_NORMAL 5 |
| | |
| typedef struct _QUOTA_LIMITS { | | typedef struct _QUOTA_LIMITS { |
| SIZE_T PagedPoolLimit; | | SIZE_T PagedPoolLimit; |
| SIZE_T NonPagedPoolLimit; | | SIZE_T NonPagedPoolLimit; |
| SIZE_T MinimumWorkingSetSize; | | SIZE_T MinimumWorkingSetSize; |
| SIZE_T MaximumWorkingSetSize; | | SIZE_T MaximumWorkingSetSize; |
| SIZE_T PagefileLimit; | | SIZE_T PagefileLimit; |
| LARGE_INTEGER TimeLimit; | | LARGE_INTEGER TimeLimit; |
| } QUOTA_LIMITS, *PQUOTA_LIMITS; | | } QUOTA_LIMITS, *PQUOTA_LIMITS; |
| | |
| #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 | | #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001 |
| | |
| skipping to change at line 11384 | | skipping to change at line 10992 |
| MaxHardwareCounterType | | MaxHardwareCounterType |
| } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE; | | } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE; |
| typedef enum _PROCESS_MITIGATION_POLICY { | | typedef enum _PROCESS_MITIGATION_POLICY { |
| ProcessDEPPolicy, | | ProcessDEPPolicy, |
| ProcessASLRPolicy, | | ProcessASLRPolicy, |
| ProcessDynamicCodePolicy, | | ProcessDynamicCodePolicy, |
| ProcessStrictHandleCheckPolicy, | | ProcessStrictHandleCheckPolicy, |
| ProcessSystemCallDisablePolicy, | | ProcessSystemCallDisablePolicy, |
| ProcessMitigationOptionsMask, | | ProcessMitigationOptionsMask, |
| ProcessExtensionPointDisablePolicy, | | ProcessExtensionPointDisablePolicy, |
|
| ProcessReserved1Policy, | | ProcessControlFlowGuardPolicy, |
| ProcessSignaturePolicy, | | ProcessSignaturePolicy, |
|
| | ProcessFontDisablePolicy, |
| | ProcessImageLoadPolicy, |
| MaxProcessMitigationPolicy | | MaxProcessMitigationPolicy |
| } PROCESS_MITIGATION_POLICY, *PPROCESS_MITIGATION_POLICY; | | } PROCESS_MITIGATION_POLICY, *PPROCESS_MITIGATION_POLICY; |
| | |
| // | | // |
| // N.B. High entropy mode is read only and can only be set at creation time | | // N.B. High entropy mode is read only and can only be set at creation time |
| // and not via the ProcessMitigationPolicy APIs. | | // and not via the ProcessMitigationPolicy APIs. |
| // | | // |
| | |
| typedef struct _PROCESS_MITIGATION_ASLR_POLICY { | | typedef struct _PROCESS_MITIGATION_ASLR_POLICY { |
| union { | | union { |
| DWORD Flags; | | DWORD Flags; |
| struct { | | struct { |
| DWORD EnableBottomUpRandomization : 1; | | DWORD EnableBottomUpRandomization : 1; |
| DWORD EnableForceRelocateImages : 1; | | DWORD EnableForceRelocateImages : 1; |
| DWORD EnableHighEntropy : 1; | | DWORD EnableHighEntropy : 1; |
| DWORD DisallowStrippedImages : 1; | | DWORD DisallowStrippedImages : 1; |
| DWORD ReservedFlags : 28; | | DWORD ReservedFlags : 28; |
|
| }; | | } DUMMYSTRUCTNAME; |
| }; | | } DUMMYUNIONNAME; |
| } PROCESS_MITIGATION_ASLR_POLICY, *PPROCESS_MITIGATION_ASLR_POLICY; | | } PROCESS_MITIGATION_ASLR_POLICY, *PPROCESS_MITIGATION_ASLR_POLICY; |
| | |
| typedef struct _PROCESS_MITIGATION_DEP_POLICY { | | typedef struct _PROCESS_MITIGATION_DEP_POLICY { |
| union { | | union { |
| DWORD Flags; | | DWORD Flags; |
| struct { | | struct { |
| DWORD Enable : 1; | | DWORD Enable : 1; |
| DWORD DisableAtlThunkEmulation : 1; | | DWORD DisableAtlThunkEmulation : 1; |
| DWORD ReservedFlags : 30; | | DWORD ReservedFlags : 30; |
|
| }; | | } DUMMYSTRUCTNAME; |
| }; | | } DUMMYUNIONNAME; |
| BOOLEAN Permanent; | | BOOLEAN Permanent; |
| } PROCESS_MITIGATION_DEP_POLICY, *PPROCESS_MITIGATION_DEP_POLICY; | | } PROCESS_MITIGATION_DEP_POLICY, *PPROCESS_MITIGATION_DEP_POLICY; |
| | |
| typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY { | | typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY { |
| union { | | union { |
| DWORD Flags; | | DWORD Flags; |
| struct { | | struct { |
| DWORD RaiseExceptionOnInvalidHandleReference : 1; | | DWORD RaiseExceptionOnInvalidHandleReference : 1; |
| DWORD HandleExceptionsPermanentlyEnabled : 1; | | DWORD HandleExceptionsPermanentlyEnabled : 1; |
| DWORD ReservedFlags : 30; | | DWORD ReservedFlags : 30; |
|
| }; | | } DUMMYSTRUCTNAME; |
| }; | | } DUMMYUNIONNAME; |
| } PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, *PPROCESS_MITIGATION_STRICT_HAN
DLE_CHECK_POLICY; | | } PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, *PPROCESS_MITIGATION_STRICT_HAN
DLE_CHECK_POLICY; |
| | |
| typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY { | | typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY { |
| union { | | union { |
| DWORD Flags; | | DWORD Flags; |
| struct { | | struct { |
| DWORD DisallowWin32kSystemCalls : 1; | | DWORD DisallowWin32kSystemCalls : 1; |
| DWORD ReservedFlags : 31; | | DWORD ReservedFlags : 31; |
|
| }; | | } DUMMYSTRUCTNAME; |
| }; | | } DUMMYUNIONNAME; |
| } PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, *PPROCESS_MITIGATION_SYSTEM_CAL
L_DISABLE_POLICY; | | } PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, *PPROCESS_MITIGATION_SYSTEM_CAL
L_DISABLE_POLICY; |
| | |
| typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY { | | typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY { |
| union { | | union { |
| DWORD Flags; | | DWORD Flags; |
| struct { | | struct { |
| DWORD DisableExtensionPoints : 1; | | DWORD DisableExtensionPoints : 1; |
| DWORD ReservedFlags : 31; | | DWORD ReservedFlags : 31; |
|
| }; | | } DUMMYSTRUCTNAME; |
| }; | | } DUMMYUNIONNAME; |
| } PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, *PPROCESS_MITIGATION_EXTENS
ION_POINT_DISABLE_POLICY; | | } PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY, *PPROCESS_MITIGATION_EXTENS
ION_POINT_DISABLE_POLICY; |
| | |
| typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY { | | typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY { |
| union { | | union { |
| DWORD Flags; | | DWORD Flags; |
| struct { | | struct { |
| DWORD ProhibitDynamicCode : 1; | | DWORD ProhibitDynamicCode : 1; |
| DWORD ReservedFlags : 31; | | DWORD ReservedFlags : 31; |
|
| }; | | } DUMMYSTRUCTNAME; |
| }; | | } DUMMYUNIONNAME; |
| } PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLI
CY; | | } PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLI
CY; |
| | |
|
| | typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY { |
| | union { |
| | DWORD Flags; |
| | struct { |
| | DWORD EnableControlFlowGuard : 1; |
| | DWORD ReservedFlags : 31; |
| | } DUMMYSTRUCTNAME; |
| | } DUMMYUNIONNAME; |
| | } PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY, *PPROCESS_MITIGATION_CONTROL_FLO |
| | W_GUARD_POLICY; |
| | |
| typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY { | | typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY { |
| union { | | union { |
| DWORD Flags; | | DWORD Flags; |
| struct { | | struct { |
| DWORD MicrosoftSignedOnly : 1; | | DWORD MicrosoftSignedOnly : 1; |
|
| DWORD ReservedFlags : 31; | | DWORD StoreSignedOnly : 1; |
| }; | | DWORD MitigationOptIn : 1; |
| }; | | DWORD ReservedFlags : 29; |
| | } DUMMYSTRUCTNAME; |
| | } DUMMYUNIONNAME; |
| } PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNAT
URE_POLICY; | | } PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNAT
URE_POLICY; |
| | |
|
| | typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY { |
| | union { |
| | DWORD Flags; |
| | struct { |
| | DWORD DisableNonSystemFonts : 1; |
| | DWORD AuditNonSystemFontLoading : 1; |
| | DWORD ReservedFlags : 30; |
| | } DUMMYSTRUCTNAME; |
| | } DUMMYUNIONNAME; |
| | } PROCESS_MITIGATION_FONT_DISABLE_POLICY, *PPROCESS_MITIGATION_FONT_DISABLE_POLI |
| | CY; |
| | |
| | typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY { |
| | union { |
| | DWORD Flags; |
| | struct { |
| | DWORD NoRemoteImages : 1; |
| | DWORD NoLowMandatoryLabelImages : 1; |
| | DWORD ReservedFlags : 30; |
| | } DUMMYSTRUCTNAME; |
| | } DUMMYUNIONNAME; |
| | } PROCESS_MITIGATION_IMAGE_LOAD_POLICY, *PPROCESS_MITIGATION_IMAGE_LOAD_POLICY; |
| | |
| typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { | | typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { |
| LARGE_INTEGER TotalUserTime; | | LARGE_INTEGER TotalUserTime; |
| LARGE_INTEGER TotalKernelTime; | | LARGE_INTEGER TotalKernelTime; |
| LARGE_INTEGER ThisPeriodTotalUserTime; | | LARGE_INTEGER ThisPeriodTotalUserTime; |
| LARGE_INTEGER ThisPeriodTotalKernelTime; | | LARGE_INTEGER ThisPeriodTotalKernelTime; |
| DWORD TotalPageFaultCount; | | DWORD TotalPageFaultCount; |
| DWORD TotalProcesses; | | DWORD TotalProcesses; |
| DWORD ActiveProcesses; | | DWORD ActiveProcesses; |
| DWORD TotalTerminatedProcesses; | | DWORD TotalTerminatedProcesses; |
| } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION, *PJOBOBJECT_BASIC_ACCOUNTING_INFORMATI
ON; | | } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION, *PJOBOBJECT_BASIC_ACCOUNTING_INFORMATI
ON; |
| | |
| skipping to change at line 11546 | | skipping to change at line 11190 |
| } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION, *PJOBOBJECT_BASIC_AND_IO_ACCOUN
TING_INFORMATION; | | } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION, *PJOBOBJECT_BASIC_AND_IO_ACCOUN
TING_INFORMATION; |
| | |
| typedef struct _JOBOBJECT_JOBSET_INFORMATION { | | typedef struct _JOBOBJECT_JOBSET_INFORMATION { |
| DWORD MemberLevel; | | DWORD MemberLevel; |
| } JOBOBJECT_JOBSET_INFORMATION, *PJOBOBJECT_JOBSET_INFORMATION; | | } JOBOBJECT_JOBSET_INFORMATION, *PJOBOBJECT_JOBSET_INFORMATION; |
| | |
| typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE { | | typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE { |
| ToleranceLow = 1, | | ToleranceLow = 1, |
| ToleranceMedium, | | ToleranceMedium, |
| ToleranceHigh | | ToleranceHigh |
|
| } JOBOBJECT_RATE_CONTROL_TOLERANCE; | | } JOBOBJECT_RATE_CONTROL_TOLERANCE, *PJOBOBJECT_RATE_CONTROL_TOLERANCE; |
| | |
| typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL { | | typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL { |
| ToleranceIntervalShort = 1, | | ToleranceIntervalShort = 1, |
| ToleranceIntervalMedium, | | ToleranceIntervalMedium, |
| ToleranceIntervalLong | | ToleranceIntervalLong |
|
| } JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL; | | } JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL, |
| | *PJOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL; |
| | |
| typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION { | | typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION { |
| DWORD64 IoReadBytesLimit; | | DWORD64 IoReadBytesLimit; |
| DWORD64 IoWriteBytesLimit; | | DWORD64 IoWriteBytesLimit; |
| LARGE_INTEGER PerJobUserTimeLimit; | | LARGE_INTEGER PerJobUserTimeLimit; |
| DWORD64 JobMemoryLimit; | | DWORD64 JobMemoryLimit; |
| JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; | | JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; |
| JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; | | JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; |
| DWORD LimitFlags; | | DWORD LimitFlags; |
| } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION, *PJOBOBJECT_NOTIFICATION_LIMIT_INFOR
MATION; | | } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION, *PJOBOBJECT_NOTIFICATION_LIMIT_INFOR
MATION; |
| | |
|
| | typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 { |
| | DWORD64 IoReadBytesLimit; |
| | DWORD64 IoWriteBytesLimit; |
| | LARGE_INTEGER PerJobUserTimeLimit; |
| | union { |
| | DWORD64 JobHighMemoryLimit; |
| | DWORD64 JobMemoryLimit; |
| | } DUMMYUNIONNAME; |
| | |
| | union { |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance; |
| | } DUMMYUNIONNAME2; |
| | |
| | union { |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL |
| | CpuRateControlToleranceInterval; |
| | } DUMMYUNIONNAME3; |
| | |
| | DWORD LimitFlags; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance; |
| | DWORD64 JobLowMemoryLimit; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL NetRateControlToleranceInterval; |
| | } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2; |
| | |
| typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION { | | typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION { |
| DWORD LimitFlags; | | DWORD LimitFlags; |
| DWORD ViolationLimitFlags; | | DWORD ViolationLimitFlags; |
| DWORD64 IoReadBytes; | | DWORD64 IoReadBytes; |
| DWORD64 IoReadBytesLimit; | | DWORD64 IoReadBytesLimit; |
| DWORD64 IoWriteBytes; | | DWORD64 IoWriteBytes; |
| DWORD64 IoWriteBytesLimit; | | DWORD64 IoWriteBytesLimit; |
| LARGE_INTEGER PerJobUserTime; | | LARGE_INTEGER PerJobUserTime; |
| LARGE_INTEGER PerJobUserTimeLimit; | | LARGE_INTEGER PerJobUserTimeLimit; |
| DWORD64 JobMemory; | | DWORD64 JobMemory; |
| DWORD64 JobMemoryLimit; | | DWORD64 JobMemoryLimit; |
| JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; | | JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; |
|
| JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceLimit; | | JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlToleranceLimit; |
| } JOBOBJECT_LIMIT_VIOLATION_INFORMATION, *PJOBOBJECT_LIMIT_VIOLATION_INFORMATION
; | | } JOBOBJECT_LIMIT_VIOLATION_INFORMATION, *PJOBOBJECT_LIMIT_VIOLATION_INFORMATION
; |
| | |
|
| | typedef struct JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 { |
| | DWORD LimitFlags; |
| | DWORD ViolationLimitFlags; |
| | DWORD64 IoReadBytes; |
| | DWORD64 IoReadBytesLimit; |
| | DWORD64 IoWriteBytes; |
| | DWORD64 IoWriteBytesLimit; |
| | LARGE_INTEGER PerJobUserTime; |
| | LARGE_INTEGER PerJobUserTimeLimit; |
| | DWORD64 JobMemory; |
| | union { |
| | DWORD64 JobHighMemoryLimit; |
| | DWORD64 JobMemoryLimit; |
| | } DUMMYUNIONNAME; |
| | |
| | union { |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance; |
| | } DUMMYUNIONNAME2; |
| | |
| | union { |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlToleranceLimit; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlToleranceLimit; |
| | } DUMMYUNIONNAME3; |
| | |
| | DWORD64 JobLowMemoryLimit; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlToleranceLimit; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance; |
| | JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlToleranceLimit; |
| | } JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2; |
| | |
| typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { | | typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { |
| DWORD ControlFlags; | | DWORD ControlFlags; |
| union { | | union { |
| DWORD CpuRate; | | DWORD CpuRate; |
| DWORD Weight; | | DWORD Weight; |
|
| }; | | struct { |
| | WORD MinRate; |
| | WORD MaxRate; |
| | } DUMMYSTRUCTNAME; |
| | } DUMMYUNIONNAME; |
| } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, *PJOBOBJECT_CPU_RATE_CONTROL_INFORMATI
ON; | | } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, *PJOBOBJECT_CPU_RATE_CONTROL_INFORMATI
ON; |
| | |
|
| | // |
| | // Control flags for network rate control. |
| | // |
| | |
| | typedef enum JOB_OBJECT_NET_RATE_CONTROL_FLAGS { |
| | JOB_OBJECT_NET_RATE_CONTROL_ENABLE = 0x1, |
| | JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH = 0x2, |
| | JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG = 0x4, |
| | JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS = 0x7 |
| | } JOB_OBJECT_NET_RATE_CONTROL_FLAGS; |
| | |
| | #if !defined(SORTPP_PASS) && !defined(MIDL_PASS) && !defined(RC_INVOKED) |
| | |
| | DEFINE_ENUM_FLAG_OPERATORS(JOB_OBJECT_NET_RATE_CONTROL_FLAGS) |
| | C_ASSERT(JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS == |
| | (JOB_OBJECT_NET_RATE_CONTROL_ENABLE + |
| | JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH + |
| | JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG)); |
| | |
| | #endif |
| | |
| | #define JOB_OBJECT_NET_RATE_CONTROL_MAX_DSCP_TAG 64 |
| | |
| | typedef struct JOBOBJECT_NET_RATE_CONTROL_INFORMATION { |
| | DWORD64 MaxBandwidth; |
| | JOB_OBJECT_NET_RATE_CONTROL_FLAGS ControlFlags; |
| | BYTE DscpTag; |
| | } JOBOBJECT_NET_RATE_CONTROL_INFORMATION; |
| | |
| | // |
| | // Control flags for IO rate control. |
| | // |
| | |
| | // begin_ntosifs |
| | |
| | typedef enum JOB_OBJECT_IO_RATE_CONTROL_FLAGS { |
| | JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1, |
| | JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS = JOB_OBJECT_IO_RATE_CONTROL_ENABLE |
| | } JOB_OBJECT_IO_RATE_CONTROL_FLAGS; |
| | |
| | #if !defined(SORTPP_PASS) && !defined(MIDL_PASS) && !defined(RC_INVOKED) |
| | |
| | DEFINE_ENUM_FLAG_OPERATORS(JOB_OBJECT_IO_RATE_CONTROL_FLAGS) |
| | C_ASSERT(JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS == |
| | JOB_OBJECT_IO_RATE_CONTROL_ENABLE); |
| | |
| | #endif |
| | |
| | typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE { |
| | LONG64 MaxIops; |
| | LONG64 MaxBandwidth; |
| | LONG64 ReservationIops; |
| | PWSTR VolumeName; |
| | DWORD BaseIoSize; |
| | JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags; |
| | WORD VolumeNameLength; |
| | } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE; |
| | |
| | // end_ntosifs |
| | |
| #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 | | #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 |
| #define JOB_OBJECT_POST_AT_END_OF_JOB 1 | | #define JOB_OBJECT_POST_AT_END_OF_JOB 1 |
| | |
| // | | // |
| // Completion Port Messages for job objects | | // Completion Port Messages for job objects |
| // | | // |
| // These values are returned via the lpNumberOfBytesTransferred parameter | | // These values are returned via the lpNumberOfBytesTransferred parameter |
| // | | // |
| | |
| #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 | | #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 |
| #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 | | #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 |
| #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 | | #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 |
| #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 | | #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 |
| #define JOB_OBJECT_MSG_NEW_PROCESS 6 | | #define JOB_OBJECT_MSG_NEW_PROCESS 6 |
| #define JOB_OBJECT_MSG_EXIT_PROCESS 7 | | #define JOB_OBJECT_MSG_EXIT_PROCESS 7 |
| #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 | | #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 |
| #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 | | #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 |
| #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 | | #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 |
| #define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 11 | | #define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 11 |
| #define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 12 | | #define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 12 |
|
| | #define JOB_OBJECT_MSG_SILO_TERMINATED 13 |
| | |
| // | | // |
| // Define the valid notification filter values. | | // Define the valid notification filter values. |
| // | | // |
| | |
| #define JOB_OBJECT_MSG_MINIMUM 1 | | #define JOB_OBJECT_MSG_MINIMUM 1 |
|
| #define JOB_OBJECT_MSG_MAXIMUM 12 | | #define JOB_OBJECT_MSG_MAXIMUM 13 |
| | |
| #define JOB_OBJECT_VALID_COMPLETION_FILTER \ | | #define JOB_OBJECT_VALID_COMPLETION_FILTER \ |
| (((1UL << (JOB_OBJECT_MSG_MAXIMUM + 1)) - 1) - \ | | (((1UL << (JOB_OBJECT_MSG_MAXIMUM + 1)) - 1) - \ |
| ((1UL << JOB_OBJECT_MSG_MINIMUM) - 1)) | | ((1UL << JOB_OBJECT_MSG_MINIMUM) - 1)) |
| | |
| // | | // |
| // Basic Limits | | // Basic Limits |
| // | | // |
| #define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001 | | #define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001 |
| #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002 | | #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002 |
| | |
| skipping to change at line 11636 | | skipping to change at line 11406 |
| #define JOB_OBJECT_LIMIT_AFFINITY 0x00000010 | | #define JOB_OBJECT_LIMIT_AFFINITY 0x00000010 |
| #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020 | | #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020 |
| #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040 | | #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040 |
| #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080 | | #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080 |
| | |
| // | | // |
| // Extended Limits | | // Extended Limits |
| // | | // |
| #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100 | | #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100 |
| #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200 | | #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200 |
|
| | #define JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH JOB_OBJECT_LIMIT_JOB_MEMORY |
| #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400 | | #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400 |
| #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800 | | #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800 |
| #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000 | | #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000 |
| #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000 | | #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000 |
| #define JOB_OBJECT_LIMIT_SUBSET_AFFINITY 0x00004000 | | #define JOB_OBJECT_LIMIT_SUBSET_AFFINITY 0x00004000 |
|
| | #define JOB_OBJECT_LIMIT_JOB_MEMORY_LOW 0x00008000 |
| | |
| // | | // |
| // Notification Limits | | // Notification Limits |
| // | | // |
| | |
| #define JOB_OBJECT_LIMIT_JOB_READ_BYTES 0x00010000 | | #define JOB_OBJECT_LIMIT_JOB_READ_BYTES 0x00010000 |
| #define JOB_OBJECT_LIMIT_JOB_WRITE_BYTES 0x00020000 | | #define JOB_OBJECT_LIMIT_JOB_WRITE_BYTES 0x00020000 |
| #define JOB_OBJECT_LIMIT_RATE_CONTROL 0x00040000 | | #define JOB_OBJECT_LIMIT_RATE_CONTROL 0x00040000 |
|
| | | #define JOB_OBJECT_LIMIT_CPU_RATE_CONTROL JOB_OBJECT_LIMIT_RATE_CONTRO |
| // | | L |
| // Reserved flags | | #define JOB_OBJECT_LIMIT_IO_RATE_CONTROL 0x00080000 |
| // | | #define JOB_OBJECT_LIMIT_NET_RATE_CONTROL 0x00100000 |
| | | |
| #define JOB_OBJECT_LIMIT_RESERVED3 0x00008000 | | |
| | |
| // | | // |
| // Valid Job Object Limits | | // Valid Job Object Limits |
| // | | // |
| | |
|
| #define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff | | #define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff |
| #define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff | | #define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff |
| #define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00007fff | | #define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00007fff |
| #define JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS 0x00070204 | | #define JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS \ |
| #define JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS 0x0007ffff | | (JOB_OBJECT_LIMIT_JOB_READ_BYTES | \ |
| | JOB_OBJECT_LIMIT_JOB_WRITE_BYTES | \ |
| | JOB_OBJECT_LIMIT_JOB_TIME | \ |
| | JOB_OBJECT_LIMIT_JOB_MEMORY_LOW | \ |
| | JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH | \ |
| | JOB_OBJECT_LIMIT_CPU_RATE_CONTROL | \ |
| | JOB_OBJECT_LIMIT_IO_RATE_CONTROL | \ |
| | JOB_OBJECT_LIMIT_NET_RATE_CONTROL) |
| | |
| // | | // |
| // UI restrictions for jobs | | // UI restrictions for jobs |
| // | | // |
| | |
| #define JOB_OBJECT_UILIMIT_NONE 0x00000000 | | #define JOB_OBJECT_UILIMIT_NONE 0x00000000 |
| | |
| #define JOB_OBJECT_UILIMIT_HANDLES 0x00000001 | | #define JOB_OBJECT_UILIMIT_HANDLES 0x00000001 |
| #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002 | | #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002 |
| #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004 | | #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004 |
| | |
| skipping to change at line 11700 | | skipping to change at line 11476 |
| #define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f | | #define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f |
| | |
| // | | // |
| // Control flags for CPU rate control. | | // Control flags for CPU rate control. |
| // | | // |
| | |
| #define JOB_OBJECT_CPU_RATE_CONTROL_ENABLE 0x1 | | #define JOB_OBJECT_CPU_RATE_CONTROL_ENABLE 0x1 |
| #define JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 0x2 | | #define JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 0x2 |
| #define JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 0x4 | | #define JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 0x4 |
| #define JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY 0x8 | | #define JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY 0x8 |
|
| #define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0xf | | #define JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE 0x10 |
| | #define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0x1f |
| | |
| typedef enum _JOBOBJECTINFOCLASS { | | typedef enum _JOBOBJECTINFOCLASS { |
| JobObjectBasicAccountingInformation = 1, | | JobObjectBasicAccountingInformation = 1, |
| JobObjectBasicLimitInformation, | | JobObjectBasicLimitInformation, |
| JobObjectBasicProcessIdList, | | JobObjectBasicProcessIdList, |
| JobObjectBasicUIRestrictions, | | JobObjectBasicUIRestrictions, |
| JobObjectSecurityLimitInformation, // deprecated | | JobObjectSecurityLimitInformation, // deprecated |
| JobObjectEndOfJobTimeInformation, | | JobObjectEndOfJobTimeInformation, |
| JobObjectAssociateCompletionPortInformation, | | JobObjectAssociateCompletionPortInformation, |
| JobObjectBasicAndIoAccountingInformation, | | JobObjectBasicAndIoAccountingInformation, |
| | |
| skipping to change at line 11729 | | skipping to change at line 11506 |
| JobObjectCompletionCounter, | | JobObjectCompletionCounter, |
| JobObjectReserved1Information = 18, | | JobObjectReserved1Information = 18, |
| JobObjectReserved2Information, | | JobObjectReserved2Information, |
| JobObjectReserved3Information, | | JobObjectReserved3Information, |
| JobObjectReserved4Information, | | JobObjectReserved4Information, |
| JobObjectReserved5Information, | | JobObjectReserved5Information, |
| JobObjectReserved6Information, | | JobObjectReserved6Information, |
| JobObjectReserved7Information, | | JobObjectReserved7Information, |
| JobObjectReserved8Information, | | JobObjectReserved8Information, |
| JobObjectReserved9Information, | | JobObjectReserved9Information, |
|
| | JobObjectReserved10Information, |
| | JobObjectReserved11Information, |
| | JobObjectReserved12Information, |
| | JobObjectReserved13Information, |
| | JobObjectReserved14Information, |
| | JobObjectNetRateControlInformation, |
| | JobObjectNotificationLimitInformation2, |
| | JobObjectLimitViolationInformation2, |
| | JobObjectCreateSilo, |
| | JobObjectSiloBasicInformation, |
| | JobObjectSiloRootDirectory, |
| | JobObjectServerSiloBasicInformation, |
| | JobObjectServerSiloServiceSessionId, |
| | JobObjectServerSiloInitialize, |
| | JobObjectServerSiloRunningState, |
| MaxJobObjectInfoClass | | MaxJobObjectInfoClass |
| } JOBOBJECTINFOCLASS; | | } JOBOBJECTINFOCLASS; |
| | |
|
| | #define SILO_OBJECT_ASSIGN_PROCESS (0x0001) |
| | #define SILO_OBJECT_SET_ATTRIBUTES (0x0002) |
| | #define SILO_OBJECT_QUERY (0x0004) |
| | #define SILO_OBJECT_TERMINATE (0x0008) |
| | #define SILO_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) |
| | #define SILO_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ |
| | 0x1F ) |
| | |
| | typedef struct _SILOOBJECT_BASIC_INFORMATION { |
| | GUID SiloIdNumber; |
| | GUID SiloParentIdNumber; |
| | DWORD NumberOfProcesses; |
| | DWORD NumberOfChildSilos; |
| | BOOLEAN IsInServerSilo; |
| | } SILOOBJECT_BASIC_INFORMATION, *PSILOOBJECT_BASIC_INFORMATION; |
| | |
| | typedef struct _SILOOBJECT_ROOT_DIRECTORY { |
| | HANDLE DirectoryHandle; |
| | } SILOOBJECT_ROOT_DIRECTORY, *PSILOOBJECT_ROOT_DIRECTORY; |
| | |
| | typedef enum _SERVERSILO_STATE { |
| | SERVERSILO_INITING = 0, |
| | SERVERSILO_STARTED, |
| | SERVERSILO_SHUTTING_DOWN, |
| | SERVERSILO_TERMINATING, |
| | SERVERSILO_TERMINATED, |
| | } SERVERSILO_STATE, *PSERVERSILO_STATE; |
| | |
| | typedef struct _SERVERSILO_BASIC_INFORMATION { |
| | DWORD ServiceSessionId; |
| | SERVERSILO_STATE State; |
| | DWORD ExitStatus; |
| | } SERVERSILO_BASIC_INFORMATION, *PSERVERSILO_BASIC_INFORMATION; |
| | |
| | // |
| | |
| typedef enum _FIRMWARE_TYPE { | | typedef enum _FIRMWARE_TYPE { |
| FirmwareTypeUnknown, | | FirmwareTypeUnknown, |
| FirmwareTypeBios, | | FirmwareTypeBios, |
| FirmwareTypeUefi, | | FirmwareTypeUefi, |
| FirmwareTypeMax | | FirmwareTypeMax |
| } FIRMWARE_TYPE, *PFIRMWARE_TYPE; | | } FIRMWARE_TYPE, *PFIRMWARE_TYPE; |
| | |
| #define EVENT_MODIFY_STATE 0x0002 | | #define EVENT_MODIFY_STATE 0x0002 |
| #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) | | #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) |
| | |
|
| | // |
| | // Mutant Specific Access Rights |
| | // |
| #define MUTANT_QUERY_STATE 0x0001 | | #define MUTANT_QUERY_STATE 0x0001 |
| | |
| #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\ | | #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\ |
| MUTANT_QUERY_STATE) | | MUTANT_QUERY_STATE) |
| | |
| #define SEMAPHORE_MODIFY_STATE 0x0002 | | #define SEMAPHORE_MODIFY_STATE 0x0002 |
| #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) | | #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) |
| | |
| // | | // |
| // Timer Specific Access Rights. | | // Timer Specific Access Rights. |
| | |
| skipping to change at line 11813 | | skipping to change at line 11644 |
| struct { | | struct { |
| DWORD NodeNumber; | | DWORD NodeNumber; |
| } NumaNode; | | } NumaNode; |
| CACHE_DESCRIPTOR Cache; | | CACHE_DESCRIPTOR Cache; |
| ULONGLONG Reserved[2]; | | ULONGLONG Reserved[2]; |
| } DUMMYUNIONNAME; | | } DUMMYUNIONNAME; |
| } SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; | | } SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; |
| | |
| typedef struct _PROCESSOR_RELATIONSHIP { | | typedef struct _PROCESSOR_RELATIONSHIP { |
| BYTE Flags; | | BYTE Flags; |
|
| BYTE Reserved[21]; | | BYTE EfficiencyClass; |
| | BYTE Reserved[20]; |
| WORD GroupCount; | | WORD GroupCount; |
| _Field_size_(GroupCount) GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY]; | | _Field_size_(GroupCount) GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY]; |
| } PROCESSOR_RELATIONSHIP, *PPROCESSOR_RELATIONSHIP; | | } PROCESSOR_RELATIONSHIP, *PPROCESSOR_RELATIONSHIP; |
| | |
| typedef struct _NUMA_NODE_RELATIONSHIP { | | typedef struct _NUMA_NODE_RELATIONSHIP { |
| DWORD NodeNumber; | | DWORD NodeNumber; |
| BYTE Reserved[20]; | | BYTE Reserved[20]; |
| GROUP_AFFINITY GroupMask; | | GROUP_AFFINITY GroupMask; |
| } NUMA_NODE_RELATIONSHIP, *PNUMA_NODE_RELATIONSHIP; | | } NUMA_NODE_RELATIONSHIP, *PNUMA_NODE_RELATIONSHIP; |
| | |
| | |
| skipping to change at line 11861 | | skipping to change at line 11693 |
| union { | | union { |
| PROCESSOR_RELATIONSHIP Processor; | | PROCESSOR_RELATIONSHIP Processor; |
| NUMA_NODE_RELATIONSHIP NumaNode; | | NUMA_NODE_RELATIONSHIP NumaNode; |
| CACHE_RELATIONSHIP Cache; | | CACHE_RELATIONSHIP Cache; |
| GROUP_RELATIONSHIP Group; | | GROUP_RELATIONSHIP Group; |
| } DUMMYUNIONNAME; | | } DUMMYUNIONNAME; |
| }; | | }; |
| | |
| typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR
_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; | | typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR
_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; |
| | |
|
| | typedef enum _CPU_SET_INFORMATION_TYPE { |
| | CpuSetInformation |
| | } CPU_SET_INFORMATION_TYPE, *PCPU_SET_INFORMATION_TYPE; |
| | |
| | _Struct_size_bytes_(Size) struct _SYSTEM_CPU_SET_INFORMATION { |
| | DWORD Size; |
| | CPU_SET_INFORMATION_TYPE Type; |
| | union { |
| | struct { |
| | DWORD Id; |
| | WORD Group; |
| | BYTE LogicalProcessorIndex; |
| | BYTE CoreIndex; |
| | BYTE LastLevelCacheIndex; |
| | BYTE NumaNodeIndex; |
| | BYTE EfficiencyClass; |
| | union { |
| | |
| | #define SYSTEM_CPU_SET_INFORMATION_PARKED 0x1 |
| | #define SYSTEM_CPU_SET_INFORMATION_ALLOCATED 0x2 |
| | #define SYSTEM_CPU_SET_INFORMATION_ALLOCATED_TO_TARGET_PROCESS 0x4 |
| | #define SYSTEM_CPU_SET_INFORMATION_REALTIME 0x8 |
| | |
| | BYTE AllFlags; |
| | struct { |
| | BYTE Parked : 1; |
| | BYTE Allocated : 1; |
| | BYTE AllocatedToTargetProcess : 1; |
| | BYTE RealTime : 1; |
| | BYTE ReservedFlags : 4; |
| | } DUMMYSTRUCTNAME; |
| | } DUMMYUNIONNAME2; |
| | DWORD Reserved; |
| | DWORD64 AllocationTag; |
| | } CpuSet; |
| | } DUMMYUNIONNAME; |
| | }; |
| | |
| | typedef struct _SYSTEM_CPU_SET_INFORMATION SYSTEM_CPU_SET_INFORMATION, *PSYSTEM_ |
| | CPU_SET_INFORMATION; |
| | |
| // end_wdm end_ntminiport | | // end_wdm end_ntminiport |
| | |
| typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION { | | typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION { |
| DWORD64 CycleTime; | | DWORD64 CycleTime; |
| } SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION, *PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMA
TION; | | } SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION, *PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMA
TION; |
| | |
| #define PROCESSOR_INTEL_386 386 | | #define PROCESSOR_INTEL_386 386 |
| #define PROCESSOR_INTEL_486 486 | | #define PROCESSOR_INTEL_486 486 |
| #define PROCESSOR_INTEL_PENTIUM 586 | | #define PROCESSOR_INTEL_PENTIUM 586 |
| #define PROCESSOR_INTEL_IA64 2200 | | #define PROCESSOR_INTEL_IA64 2200 |
| | |
| skipping to change at line 11903 | | skipping to change at line 11775 |
| #define PROCESSOR_ARCHITECTURE_ALPHA 2 | | #define PROCESSOR_ARCHITECTURE_ALPHA 2 |
| #define PROCESSOR_ARCHITECTURE_PPC 3 | | #define PROCESSOR_ARCHITECTURE_PPC 3 |
| #define PROCESSOR_ARCHITECTURE_SHX 4 | | #define PROCESSOR_ARCHITECTURE_SHX 4 |
| #define PROCESSOR_ARCHITECTURE_ARM 5 | | #define PROCESSOR_ARCHITECTURE_ARM 5 |
| #define PROCESSOR_ARCHITECTURE_IA64 6 | | #define PROCESSOR_ARCHITECTURE_IA64 6 |
| #define PROCESSOR_ARCHITECTURE_ALPHA64 7 | | #define PROCESSOR_ARCHITECTURE_ALPHA64 7 |
| #define PROCESSOR_ARCHITECTURE_MSIL 8 | | #define PROCESSOR_ARCHITECTURE_MSIL 8 |
| #define PROCESSOR_ARCHITECTURE_AMD64 9 | | #define PROCESSOR_ARCHITECTURE_AMD64 9 |
| #define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 | | #define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 |
| #define PROCESSOR_ARCHITECTURE_NEUTRAL 11 | | #define PROCESSOR_ARCHITECTURE_NEUTRAL 11 |
|
| | #define PROCESSOR_ARCHITECTURE_ARM64 12 |
| | |
| #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF | | #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF |
| | |
|
| #define PF_FLOATING_POINT_PRECISION_ERRATA 0 | | #define PF_FLOATING_POINT_PRECISION_ERRATA 0 |
| #define PF_FLOATING_POINT_EMULATED 1 | | #define PF_FLOATING_POINT_EMULATED 1 |
| #define PF_COMPARE_EXCHANGE_DOUBLE 2 | | #define PF_COMPARE_EXCHANGE_DOUBLE 2 |
| #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 | | #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 |
| #define PF_PPC_MOVEMEM_64BIT_OK 4 | | #define PF_PPC_MOVEMEM_64BIT_OK 4 |
| #define PF_ALPHA_BYTE_INSTRUCTIONS 5 | | #define PF_ALPHA_BYTE_INSTRUCTIONS 5 |
| #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 | | #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 |
| #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 | | #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 |
| #define PF_RDTSC_INSTRUCTION_AVAILABLE 8 | | #define PF_RDTSC_INSTRUCTION_AVAILABLE 8 |
| #define PF_PAE_ENABLED 9 | | #define PF_PAE_ENABLED 9 |
| #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 | | #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 |
| #define PF_SSE_DAZ_MODE_AVAILABLE 11 | | #define PF_SSE_DAZ_MODE_AVAILABLE 11 |
| #define PF_NX_ENABLED 12 | | #define PF_NX_ENABLED 12 |
| #define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 | | #define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 |
| #define PF_COMPARE_EXCHANGE128 14 | | #define PF_COMPARE_EXCHANGE128 14 |
| #define PF_COMPARE64_EXCHANGE128 15 | | #define PF_COMPARE64_EXCHANGE128 15 |
| #define PF_CHANNELS_ENABLED 16 | | #define PF_CHANNELS_ENABLED 16 |
| #define PF_XSAVE_ENABLED 17 | | #define PF_XSAVE_ENABLED 17 |
| #define PF_ARM_VFP_32_REGISTERS_AVAILABLE 18 | | #define PF_ARM_VFP_32_REGISTERS_AVAILABLE 18 |
| #define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 19 | | #define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 19 |
| #define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 20 | | #define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 20 |
| #define PF_VIRT_FIRMWARE_ENABLED 21 | | #define PF_VIRT_FIRMWARE_ENABLED 21 |
| #define PF_RDWRFSGSBASE_AVAILABLE 22 | | #define PF_RDWRFSGSBASE_AVAILABLE 22 |
| #define PF_FASTFAIL_AVAILABLE 23 | | #define PF_FASTFAIL_AVAILABLE 23 |
| #define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 24 | | #define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 24 |
| #define PF_ARM_64BIT_LOADSTORE_ATOMIC 25 | | #define PF_ARM_64BIT_LOADSTORE_ATOMIC 25 |
| #define PF_ARM_EXTERNAL_CACHE_AVAILABLE 26 | | #define PF_ARM_EXTERNAL_CACHE_AVAILABLE 26 |
| #define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 27 | | #define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 27 |
| #define PF_RDRAND_INSTRUCTION_AVAILABLE 28 | | #define PF_RDRAND_INSTRUCTION_AVAILABLE 28 |
| | #define PF_ARM_V8_INSTRUCTIONS_AVAILABLE 29 |
| | #define PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE 30 |
| | #define PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE 31 |
| | #define PF_RDTSCP_INSTRUCTION_AVAILABLE 32 |
| | |
| // | | // |
|
| // Known extended CPU state feature IDs | | // Known extended CPU state feature BITs |
| | // |
| | // 0 x87 |
| | // 1 SSE |
| | // 2 AVX |
| | // 3 BNDREGS (B0.LB-B3.LB B0.UB-B3.UB) |
| | // 4 BNDCSR (BNDCFGU + BNDSTATUS) Persistent |
| | // 5 KMASK (KMASK [63:0][0-7]) |
| | // 6 ZMM_H (ZMM_H[511:256][0-15]) |
| | // 7 ZMM (ZMM[511:0][16-31]) |
| | // 8 IPT Supervisor |
| | // |
| | // 62 LWP Persistent |
| | // |
| | // 63 RZ0 Reserved |
| // | | // |
| | |
| #define XSTATE_LEGACY_FLOATING_POINT (0) | | #define XSTATE_LEGACY_FLOATING_POINT (0) |
| #define XSTATE_LEGACY_SSE (1) | | #define XSTATE_LEGACY_SSE (1) |
| #define XSTATE_GSSE (2) | | #define XSTATE_GSSE (2) |
| #define XSTATE_AVX (XSTATE_GSSE) | | #define XSTATE_AVX (XSTATE_GSSE) |
|
| | #define XSTATE_MPX_BNDREGS (3) |
| | #define XSTATE_MPX_BNDCSR (4) |
| | #define XSTATE_AVX512_KMASK (5) |
| | #define XSTATE_AVX512_ZMM_H (6) |
| | #define XSTATE_AVX512_ZMM (7) |
| | #define XSTATE_IPT (8) |
| | #define XSTATE_LWP (62) |
| | #define MAXIMUM_XSTATE_FEATURES (64) |
| | |
| | // |
| | // Known extended CPU state feature MASKs |
| | // |
| | |
| #define XSTATE_MASK_LEGACY_FLOATING_POINT (1ui64 << (XSTATE_LEGACY_FLOATING_PO
INT)) | | #define XSTATE_MASK_LEGACY_FLOATING_POINT (1ui64 << (XSTATE_LEGACY_FLOATING_PO
INT)) |
| #define XSTATE_MASK_LEGACY_SSE (1ui64 << (XSTATE_LEGACY_SSE)) | | #define XSTATE_MASK_LEGACY_SSE (1ui64 << (XSTATE_LEGACY_SSE)) |
|
| #define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | | | #define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | |
| XSTATE_MASK_LEGACY_SSE) | | \ |
| | XSTATE_MASK_LEGACY_SSE) |
| | |
| #define XSTATE_MASK_GSSE (1ui64 << (XSTATE_GSSE)) | | #define XSTATE_MASK_GSSE (1ui64 << (XSTATE_GSSE)) |
| #define XSTATE_MASK_AVX (XSTATE_MASK_GSSE) | | #define XSTATE_MASK_AVX (XSTATE_MASK_GSSE) |
|
| | #define XSTATE_MASK_MPX ((1ui64 << (XSTATE_MPX_BNDREGS)) | \ |
| | (1ui64 << (XSTATE_MPX_BNDCSR))) |
| | |
|
| #define MAXIMUM_XSTATE_FEATURES (64) | | #define XSTATE_MASK_AVX512 ((1ui64 << (XSTATE_AVX512_KMASK)) | |
| | \ |
| | (1ui64 << (XSTATE_AVX512_ZMM_H)) | |
| | \ |
| | (1ui64 << (XSTATE_AVX512_ZMM))) |
| | |
| | #define XSTATE_MASK_IPT (1ui64 << (XSTATE_IPT)) |
| | #define XSTATE_MASK_LWP (1ui64 << (XSTATE_LWP)) |
| | |
| | #define XSTATE_MASK_ALLOWED (XSTATE_MASK_LEGACY | \ |
| | XSTATE_MASK_AVX | \ |
| | XSTATE_MASK_MPX | \ |
| | XSTATE_MASK_AVX512 | \ |
| | XSTATE_MASK_IPT | \ |
| | XSTATE_MASK_LWP) |
| | |
| | #define XSTATE_MASK_PERSISTENT ((1ui64 << (XSTATE_MPX_BNDCSR)) | \ |
| | XSTATE_MASK_LWP) |
| | |
| | // |
| | // Flags associated with compaction mask |
| | // |
| | |
| | #define XSTATE_COMPACTION_ENABLE (63) |
| | #define XSTATE_COMPACTION_ENABLE_MASK (1ui64 << (XSTATE_COMPACTION_ENABLE) |
| | ) |
| | |
| | #define XSTATE_ALIGN_BIT (1) |
| | #define XSTATE_ALIGN_MASK (1ui64 << (XSTATE_ALIGN_BIT)) |
| | |
| // | | // |
| // Extended processor state configuration | | // Extended processor state configuration |
| // | | // |
| | |
| typedef struct _XSTATE_FEATURE { | | typedef struct _XSTATE_FEATURE { |
| DWORD Offset; | | DWORD Offset; |
| DWORD Size; | | DWORD Size; |
| } XSTATE_FEATURE, *PXSTATE_FEATURE; | | } XSTATE_FEATURE, *PXSTATE_FEATURE; |
| | |
| typedef struct _XSTATE_CONFIGURATION { | | typedef struct _XSTATE_CONFIGURATION { |
| // Mask of all enabled features | | // Mask of all enabled features |
| DWORD64 EnabledFeatures; | | DWORD64 EnabledFeatures; |
| | |
| // Mask of volatile enabled features | | // Mask of volatile enabled features |
| DWORD64 EnabledVolatileFeatures; | | DWORD64 EnabledVolatileFeatures; |
| | |
|
| // Total size of the save area | | // Total size of the save area for user states |
| DWORD Size; | | DWORD Size; |
| | |
|
| | // Control Flags |
| DWORD OptimizedSave : 1; | | DWORD OptimizedSave : 1; |
|
| | DWORD CompactionEnabled : 1; |
| | |
|
| // List of features ( | | // List of features |
| XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; | | XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; |
| | |
|
| | // Mask of all supervisor features |
| | DWORD64 EnabledSupervisorFeatures; |
| | |
| | // Mask of features that require start address to be 64 byte aligned |
| | DWORD64 AlignedFeatures; |
| | |
| | // Total size of the save area for user and supervisor states |
| | DWORD AllFeatureSize; |
| | |
| | // List which holds size of each user and supervisor state supported by CPU |
| | DWORD AllFeatures[MAXIMUM_XSTATE_FEATURES]; |
| | |
| } XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION; | | } XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION; |
| | |
|
| | // begin_ntifs |
| | |
| typedef struct _MEMORY_BASIC_INFORMATION { | | typedef struct _MEMORY_BASIC_INFORMATION { |
| PVOID BaseAddress; | | PVOID BaseAddress; |
| PVOID AllocationBase; | | PVOID AllocationBase; |
| DWORD AllocationProtect; | | DWORD AllocationProtect; |
| SIZE_T RegionSize; | | SIZE_T RegionSize; |
| DWORD State; | | DWORD State; |
| DWORD Protect; | | DWORD Protect; |
| DWORD Type; | | DWORD Type; |
| } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; | | } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; |
| | |
|
| | // end_ntifs |
| | |
| typedef struct _MEMORY_BASIC_INFORMATION32 { | | typedef struct _MEMORY_BASIC_INFORMATION32 { |
| DWORD BaseAddress; | | DWORD BaseAddress; |
| DWORD AllocationBase; | | DWORD AllocationBase; |
| DWORD AllocationProtect; | | DWORD AllocationProtect; |
| DWORD RegionSize; | | DWORD RegionSize; |
| DWORD State; | | DWORD State; |
| DWORD Protect; | | DWORD Protect; |
| DWORD Type; | | DWORD Type; |
| } MEMORY_BASIC_INFORMATION32, *PMEMORY_BASIC_INFORMATION32; | | } MEMORY_BASIC_INFORMATION32, *PMEMORY_BASIC_INFORMATION32; |
| | |
| | |
| skipping to change at line 12011 | | skipping to change at line 11961 |
| ULONGLONG AllocationBase; | | ULONGLONG AllocationBase; |
| DWORD AllocationProtect; | | DWORD AllocationProtect; |
| DWORD __alignment1; | | DWORD __alignment1; |
| ULONGLONG RegionSize; | | ULONGLONG RegionSize; |
| DWORD State; | | DWORD State; |
| DWORD Protect; | | DWORD Protect; |
| DWORD Type; | | DWORD Type; |
| DWORD __alignment2; | | DWORD __alignment2; |
| } MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64; | | } MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64; |
| | |
|
| | // |
| | // Define flags for setting process CFG valid call target entries. |
| | // |
| | |
| | // |
| | // Call target should be made valid. If not set, the call target is made |
| | // invalid. Input flag. |
| | // |
| | |
| | #define CFG_CALL_TARGET_VALID (0x00000001) |
| | |
| | // |
| | // Call target has been successfully processed. Used to report to the caller |
| | // how much progress has been made. Output flag. |
| | // |
| | |
| | #define CFG_CALL_TARGET_PROCESSED (0x00000002) |
| | |
| | typedef struct _CFG_CALL_TARGET_INFO { |
| | ULONG_PTR Offset; |
| | ULONG_PTR Flags; |
| | } CFG_CALL_TARGET_INFO, *PCFG_CALL_TARGET_INFO; |
| | |
| #define SECTION_QUERY 0x0001 | | #define SECTION_QUERY 0x0001 |
| #define SECTION_MAP_WRITE 0x0002 | | #define SECTION_MAP_WRITE 0x0002 |
| #define SECTION_MAP_READ 0x0004 | | #define SECTION_MAP_READ 0x0004 |
| #define SECTION_MAP_EXECUTE 0x0008 | | #define SECTION_MAP_EXECUTE 0x0008 |
| #define SECTION_EXTEND_SIZE 0x0010 | | #define SECTION_EXTEND_SIZE 0x0010 |
| #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 // not included in SECTION_ALL_ACCES
S | | #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 // not included in SECTION_ALL_ACCES
S |
| | |
| #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\ | | #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\ |
| SECTION_MAP_WRITE | \ | | SECTION_MAP_WRITE | \ |
| SECTION_MAP_READ | \ | | SECTION_MAP_READ | \ |
| SECTION_MAP_EXECUTE | \ | | SECTION_MAP_EXECUTE | \ |
| SECTION_EXTEND_SIZE) | | SECTION_EXTEND_SIZE) |
| | |
|
| | // |
| | // Session Specific Access Rights. |
| | // |
| | |
| #define SESSION_QUERY_ACCESS 0x0001 | | #define SESSION_QUERY_ACCESS 0x0001 |
| #define SESSION_MODIFY_ACCESS 0x0002 | | #define SESSION_MODIFY_ACCESS 0x0002 |
| | |
| #define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ | | #define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ |
| SESSION_QUERY_ACCESS | \ | | SESSION_QUERY_ACCESS | \ |
| SESSION_MODIFY_ACCESS) | | SESSION_MODIFY_ACCESS) |
| | |
|
| | // |
| | // Partition Specific Access Rights. |
| | // |
| | |
| | #define MEMORY_PARTITION_QUERY_ACCESS 0x0001 |
| | #define MEMORY_PARTITION_MODIFY_ACCESS 0x0002 |
| | |
| | #define MEMORY_PARTITION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \ |
| | SYNCHRONIZE | \ |
| | MEMORY_PARTITION_QUERY_ACCESS | \ |
| | MEMORY_PARTITION_MODIFY_ACCESS) |
| | |
| | // end_access |
| #define PAGE_NOACCESS 0x01 | | #define PAGE_NOACCESS 0x01 |
| #define PAGE_READONLY 0x02 | | #define PAGE_READONLY 0x02 |
| #define PAGE_READWRITE 0x04 | | #define PAGE_READWRITE 0x04 |
| #define PAGE_WRITECOPY 0x08 | | #define PAGE_WRITECOPY 0x08 |
|
| #pragma region Desktop Family | | |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | |
| #define PAGE_EXECUTE 0x10 | | #define PAGE_EXECUTE 0x10 |
| #define PAGE_EXECUTE_READ 0x20 | | #define PAGE_EXECUTE_READ 0x20 |
| #define PAGE_EXECUTE_READWRITE 0x40 | | #define PAGE_EXECUTE_READWRITE 0x40 |
| #define PAGE_EXECUTE_WRITECOPY 0x80 | | #define PAGE_EXECUTE_WRITECOPY 0x80 |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | |
| #pragma endregion | | |
| #define PAGE_GUARD 0x100 | | #define PAGE_GUARD 0x100 |
| #define PAGE_NOCACHE 0x200 | | #define PAGE_NOCACHE 0x200 |
| #define PAGE_WRITECOMBINE 0x400 | | #define PAGE_WRITECOMBINE 0x400 |
| #define PAGE_REVERT_TO_FILE_MAP 0x80000000 | | #define PAGE_REVERT_TO_FILE_MAP 0x80000000 |
|
| | #define PAGE_ENCLAVE_THREAD_CONTROL 0x80000000 |
| | #define PAGE_TARGETS_NO_UPDATE 0x40000000 |
| | #define PAGE_TARGETS_INVALID 0x40000000 |
| | #define PAGE_ENCLAVE_UNVALIDATED 0x20000000 |
| #define MEM_COMMIT 0x1000 | | #define MEM_COMMIT 0x1000 |
| #define MEM_RESERVE 0x2000 | | #define MEM_RESERVE 0x2000 |
| #define MEM_DECOMMIT 0x4000 | | #define MEM_DECOMMIT 0x4000 |
| #define MEM_RELEASE 0x8000 | | #define MEM_RELEASE 0x8000 |
| #define MEM_FREE 0x10000 | | #define MEM_FREE 0x10000 |
| #define MEM_PRIVATE 0x20000 | | #define MEM_PRIVATE 0x20000 |
| #define MEM_MAPPED 0x40000 | | #define MEM_MAPPED 0x40000 |
| #define MEM_RESET 0x80000 | | #define MEM_RESET 0x80000 |
| #define MEM_TOP_DOWN 0x100000 | | #define MEM_TOP_DOWN 0x100000 |
| #define MEM_WRITE_WATCH 0x200000 | | #define MEM_WRITE_WATCH 0x200000 |
| | |
| skipping to change at line 12076 | | skipping to change at line 12066 |
| #define SEC_RESERVE 0x4000000 | | #define SEC_RESERVE 0x4000000 |
| #define SEC_COMMIT 0x8000000 | | #define SEC_COMMIT 0x8000000 |
| #define SEC_NOCACHE 0x10000000 | | #define SEC_NOCACHE 0x10000000 |
| #define SEC_WRITECOMBINE 0x40000000 | | #define SEC_WRITECOMBINE 0x40000000 |
| #define SEC_LARGE_PAGES 0x80000000 | | #define SEC_LARGE_PAGES 0x80000000 |
| #define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE) | | #define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE) |
| #define MEM_IMAGE SEC_IMAGE | | #define MEM_IMAGE SEC_IMAGE |
| #define WRITE_WATCH_FLAG_RESET 0x01 | | #define WRITE_WATCH_FLAG_RESET 0x01 |
| #define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x01 | | #define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x01 |
| | |
|
| | #define ENCLAVE_TYPE_SGX 0x00000001 |
| | |
| | typedef struct _ENCLAVE_CREATE_INFO_SGX { |
| | BYTE Secs[4096]; |
| | } ENCLAVE_CREATE_INFO_SGX, *PENCLAVE_CREATE_INFO_SGX; |
| | |
| | typedef struct _ENCLAVE_INIT_INFO_SGX { |
| | BYTE SigStruct[1808]; |
| | BYTE Reserved1[240]; |
| | BYTE EInitToken[304]; |
| | BYTE Reserved2[1744]; |
| | } ENCLAVE_INIT_INFO_SGX, *PENCLAVE_INIT_INFO_SGX; |
| | |
| | // begin_access |
| | |
| // | | // |
| // Define access rights to files and directories | | // Define access rights to files and directories |
| // | | // |
| | |
| // | | // |
| // The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in | | // The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in |
| // devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these | | // devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these |
| // constants *MUST* always be in sync. | | // constants *MUST* always be in sync. |
| // The values are redefined in devioctl.h because they must be available to | | // The values are redefined in devioctl.h because they must be available to |
| // both DOS and NT. | | // both DOS and NT. |
| | |
| skipping to change at line 12131 | | skipping to change at line 12136 |
| FILE_WRITE_ATTRIBUTES |\ | | FILE_WRITE_ATTRIBUTES |\ |
| FILE_WRITE_EA |\ | | FILE_WRITE_EA |\ |
| FILE_APPEND_DATA |\ | | FILE_APPEND_DATA |\ |
| SYNCHRONIZE) | | SYNCHRONIZE) |
| | |
| #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ | | #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ |
| FILE_READ_ATTRIBUTES |\ | | FILE_READ_ATTRIBUTES |\ |
| FILE_EXECUTE |\ | | FILE_EXECUTE |\ |
| SYNCHRONIZE) | | SYNCHRONIZE) |
| | |
|
| | // end_access |
| #define FILE_SHARE_READ 0x00000001 | | #define FILE_SHARE_READ 0x00000001 |
| #define FILE_SHARE_WRITE 0x00000002 | | #define FILE_SHARE_WRITE 0x00000002 |
| #define FILE_SHARE_DELETE 0x00000004 | | #define FILE_SHARE_DELETE 0x00000004 |
| #define FILE_ATTRIBUTE_READONLY 0x00000001 | | #define FILE_ATTRIBUTE_READONLY 0x00000001 |
| #define FILE_ATTRIBUTE_HIDDEN 0x00000002 | | #define FILE_ATTRIBUTE_HIDDEN 0x00000002 |
| #define FILE_ATTRIBUTE_SYSTEM 0x00000004 | | #define FILE_ATTRIBUTE_SYSTEM 0x00000004 |
| #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 | | #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 |
| #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 | | #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 |
| #define FILE_ATTRIBUTE_DEVICE 0x00000040 | | #define FILE_ATTRIBUTE_DEVICE 0x00000040 |
| #define FILE_ATTRIBUTE_NORMAL 0x00000080 | | #define FILE_ATTRIBUTE_NORMAL 0x00000080 |
| | |
| skipping to change at line 12188 | | skipping to change at line 12194 |
| #define FILE_SUPPORTS_ENCRYPTION 0x00020000 | | #define FILE_SUPPORTS_ENCRYPTION 0x00020000 |
| #define FILE_NAMED_STREAMS 0x00040000 | | #define FILE_NAMED_STREAMS 0x00040000 |
| #define FILE_READ_ONLY_VOLUME 0x00080000 | | #define FILE_READ_ONLY_VOLUME 0x00080000 |
| #define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 | | #define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 |
| #define FILE_SUPPORTS_TRANSACTIONS 0x00200000 | | #define FILE_SUPPORTS_TRANSACTIONS 0x00200000 |
| #define FILE_SUPPORTS_HARD_LINKS 0x00400000 | | #define FILE_SUPPORTS_HARD_LINKS 0x00400000 |
| #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 | | #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 |
| #define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 | | #define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 |
| #define FILE_SUPPORTS_USN_JOURNAL 0x02000000 | | #define FILE_SUPPORTS_USN_JOURNAL 0x02000000 |
| #define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 | | #define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 |
|
| | #define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 |
| | #define FILE_SUPPORTS_SPARSE_VDL 0x10000000 |
| #define FILE_INVALID_FILE_ID ((LONGLONG)-1LL) | | #define FILE_INVALID_FILE_ID ((LONGLONG)-1LL) |
| typedef struct _FILE_ID_128 { | | typedef struct _FILE_ID_128 { |
| BYTE Identifier[16]; | | BYTE Identifier[16]; |
| } FILE_ID_128, *PFILE_ID_128; | | } FILE_ID_128, *PFILE_ID_128; |
| | |
| // | | // |
| // Define the file notification information structure | | // Define the file notification information structure |
| // | | // |
| | |
| typedef struct _FILE_NOTIFY_INFORMATION { | | typedef struct _FILE_NOTIFY_INFORMATION { |
| | |
| skipping to change at line 12354 | | skipping to change at line 12362 |
| #define IO_REPARSE_TAG_SIS (0x80000007L) | | #define IO_REPARSE_TAG_SIS (0x80000007L) |
| #define IO_REPARSE_TAG_WIM (0x80000008L) | | #define IO_REPARSE_TAG_WIM (0x80000008L) |
| #define IO_REPARSE_TAG_CSV (0x80000009L) | | #define IO_REPARSE_TAG_CSV (0x80000009L) |
| #define IO_REPARSE_TAG_DFS (0x8000000AL) | | #define IO_REPARSE_TAG_DFS (0x8000000AL) |
| #define IO_REPARSE_TAG_SYMLINK (0xA000000CL) | | #define IO_REPARSE_TAG_SYMLINK (0xA000000CL) |
| #define IO_REPARSE_TAG_DFSR (0x80000012L) | | #define IO_REPARSE_TAG_DFSR (0x80000012L) |
| #define IO_REPARSE_TAG_DEDUP (0x80000013L) | | #define IO_REPARSE_TAG_DEDUP (0x80000013L) |
| #define IO_REPARSE_TAG_NFS (0x80000014L) | | #define IO_REPARSE_TAG_NFS (0x80000014L) |
| #define IO_REPARSE_TAG_FILE_PLACEHOLDER (0x80000015L) | | #define IO_REPARSE_TAG_FILE_PLACEHOLDER (0x80000015L) |
| #define IO_REPARSE_TAG_WOF (0x80000017L) | | #define IO_REPARSE_TAG_WOF (0x80000017L) |
|
| | #define IO_REPARSE_TAG_WCI (0x80000018L) |
| | #define IO_REPARSE_TAG_GLOBAL_REPARSE (0x80000019L) |
| | |
| #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) | | #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) |
| | |
| //======================= FSCTL_SCRUB_DATA ============================= | | //======================= FSCTL_SCRUB_DATA ============================= |
| | |
| #define SCRUB_DATA_INPUT_FLAG_RESUME 0x00000001 | | #define SCRUB_DATA_INPUT_FLAG_RESUME 0x00000001 |
| #define SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC 0x00000002 | | #define SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC 0x00000002 |
| #define SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA 0x00000004 | | #define SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA 0x00000004 |
| | |
| #define SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE 0x00000001 | | #define SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE 0x00000001 |
| | |
| skipping to change at line 12568 | | skipping to change at line 12578 |
| // This field is only valid when SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE | | // This field is only valid when SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE |
| // is set. | | // is set. |
| // | | // |
| | |
| BYTE ResumeContext[816]; | | BYTE ResumeContext[816]; |
| | |
| } SCRUB_DATA_OUTPUT, *PSCRUB_DATA_OUTPUT; | | } SCRUB_DATA_OUTPUT, *PSCRUB_DATA_OUTPUT; |
| | |
| #endif /*_WIN32_WINNT >= _WIN32_WINNT_WIN8 */ | | #endif /*_WIN32_WINNT >= _WIN32_WINNT_WIN8 */ |
| | |
|
| // WINBLUE_abracadabra | | #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) |
| // | | |
| // N.B. The following #if check needs to be against NTDDI_WINBLUE when it become | | |
| s available. | | |
| #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) | | |
| // | | // |
| //=============== FSCTL_QUERY_SHARED_VIRTUAL_DISK_SUPPORT ==================== | | //=============== FSCTL_QUERY_SHARED_VIRTUAL_DISK_SUPPORT ==================== |
| // | | // |
| | |
| // | | // |
| // Whether the file system supports shared virtual disks. | | // Whether the file system supports shared virtual disks. |
| // | | // |
| typedef enum _SharedVirtualDiskSupportType | | typedef enum _SharedVirtualDiskSupportType |
| { | | { |
| // | | // |
| // Shared virtual disks are not supported. | | // Shared virtual disks are not supported. |
| // | | // |
| SharedVirtualDisksUnsupported = 0, | | SharedVirtualDisksUnsupported = 0, |
| | |
| // | | // |
| // Shared virtual disks are supported. | | // Shared virtual disks are supported. |
| // | | // |
|
| SharedVirtualDisksSupported = 1 | | SharedVirtualDisksSupported = 1, |
| | |
| | // |
| | // The target device supports taking virtual disk |
| | // snapshots. |
| | // |
| | SharedVirtualDiskSnapshotsSupported = 3, |
| | |
| | // |
| | // The target device supports Continuous Data |
| | // Protection (log based) snapshots. |
| | // |
| | SharedVirtualDiskCDPSnapshotsSupported = 7 |
| } SharedVirtualDiskSupportType; | | } SharedVirtualDiskSupportType; |
| | |
| typedef enum _SharedVirtualDiskHandleState | | typedef enum _SharedVirtualDiskHandleState |
| { | | { |
| // | | // |
| // The file handle is not related to a shared virtual disk. | | // The file handle is not related to a shared virtual disk. |
| // | | // |
| SharedVirtualDiskHandleStateNone = 0, | | SharedVirtualDiskHandleStateNone = 0, |
| | |
| // | | // |
| | |
| skipping to change at line 12636 | | skipping to change at line 12655 |
| // | | // |
| SharedVirtualDiskHandleState HandleState; | | SharedVirtualDiskHandleState HandleState; |
| } SHARED_VIRTUAL_DISK_SUPPORT, *PSHARED_VIRTUAL_DISK_SUPPORT; | | } SHARED_VIRTUAL_DISK_SUPPORT, *PSHARED_VIRTUAL_DISK_SUPPORT; |
| | |
| // | | // |
| // Determines if the provided virtual disk handle state, from FSCTL_QUERY_SHARED
_VIRTUAL_DISK_SUPPORT, | | // Determines if the provided virtual disk handle state, from FSCTL_QUERY_SHARED
_VIRTUAL_DISK_SUPPORT, |
| // indicates that the target virtual disk file is opened in shared mode. | | // indicates that the target virtual disk file is opened in shared mode. |
| // | | // |
| #define IsVirtualDiskFileShared(HandleState) (((HandleState) & SharedVirtualDisk
HandleStateFileShared) != 0) | | #define IsVirtualDiskFileShared(HandleState) (((HandleState) & SharedVirtualDisk
HandleStateFileShared) != 0) |
| | |
|
| #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) | | #endif // (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) |
| | |
|
| // begin_winioctl begin_ntosifs | | // begin_access |
| // | | |
| //=============== END FileSystem FSCTL Structure Defintions ================== | | |
| // | | |
| | |
| // | | // |
| // I/O Completion Specific Access Rights. | | // I/O Completion Specific Access Rights. |
| // | | // |
| | |
| #define IO_COMPLETION_MODIFY_STATE 0x0002 | | #define IO_COMPLETION_MODIFY_STATE 0x0002 |
| #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) | | #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) |
| | |
|
| | #define IO_QOS_MAX_RESERVATION 1000000000ULL |
| | |
| | // |
| | // Some applications include both ntioapi_x.h and winioctl.h |
| | // |
| | |
| | #ifndef SMB_CCF_APP_INSTANCE_EA_NAME |
| | #define SMB_CCF_APP_INSTANCE_EA_NAME "ClusteredApplicationInstance" |
| | #endif //SMB_CCF_APP_INSTANCE_EA_NAME |
| | |
| | #ifndef _NETWORK_APP_INSTANCE_EA_DEFINED |
| | #define _NETWORK_APP_INSTANCE_EA_DEFINED |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN10) |
| | |
| | // |
| | // Define the SMB Cluster Client Failover AppInstance Extended Attribute name |
| | // newer version of input payload assumes that EA is not just a GUID, |
| | // but instead is a structure that contains additional information |
| | // |
| | |
| | // |
| | // Is used only when file is opened directly on CSVFS. This flag is ignored when |
| | file |
| | // is opened over SMB. |
| | // Tells CSVFS that this file open should be valid only on coordinating node. |
| | // If open comes to CSVFS, and this node is not a coordinating then open would f |
| | ail. |
| | // If file is opened, and coordinating node is moved then file open will be inva |
| | lidated |
| | // |
| | #ifndef NETWORK_APP_INSTANCE_CSV_FLAGS_VALID_ONLY_IF_CSV_COORDINATOR |
| | #define NETWORK_APP_INSTANCE_CSV_FLAGS_VALID_ONLY_IF_CSV_COORDINATOR 0x00000001 |
| | #endif //NETWORK_APP_INSTANCE_CSV_FLAGS_VALID_ONLY_IF_CSV_COORDINATOR |
| | |
| | typedef struct _NETWORK_APP_INSTANCE_EA { |
| | |
| | // |
| | // The caller places a GUID that should always be unique for a single insta |
| | nce of |
| | // the application. |
| | // |
| | |
| | GUID AppInstanceID; |
| | |
| | // |
| | // Combination of the NETWORK_APP_INSTANCE_CSV_FLAGS_* flags |
| | // |
| | |
| | DWORD CsvFlags; |
| | |
| | } NETWORK_APP_INSTANCE_EA, *PNETWORK_APP_INSTANCE_EA; |
| | |
| | #endif // (NTDDI_VERSION >= NTDDI_WIN10) |
| | |
| | #endif //_NETWORK_APP_INSTANCE_EA_DEFINED |
| | |
| | // begin_access |
| | |
| // | | // |
| // Object Manager Symbolic Link Specific Access Rights. | | // Object Manager Symbolic Link Specific Access Rights. |
| // | | // |
| | |
| #define DUPLICATE_CLOSE_SOURCE 0x00000001 | | #define DUPLICATE_CLOSE_SOURCE 0x00000001 |
| #define DUPLICATE_SAME_ACCESS 0x00000002 | | #define DUPLICATE_SAME_ACCESS 0x00000002 |
| | |
| // | | // |
| // ========================================= | | // ========================================= |
| // Define GUIDs which represent well-known power schemes | | // Define GUIDs which represent well-known power schemes |
| | |
| skipping to change at line 12765 | | skipping to change at line 12836 |
| // | | // |
| // Specifies the subgroup which will contain all of the idle resiliency | | // Specifies the subgroup which will contain all of the idle resiliency |
| // settings for a single policy. | | // settings for a single policy. |
| // | | // |
| // {2E601130-5351-4d9d-8E04-252966BAD054} | | // {2E601130-5351-4d9d-8E04-252966BAD054} |
| DEFINE_GUID(GUID_IDLE_RESILIENCY_SUBGROUP, 0x2e601130, 0x5351, 0x4d9d, 0x8e, 0x4
, 0x25, 0x29, 0x66, 0xba, 0xd0, 0x54); | | DEFINE_GUID(GUID_IDLE_RESILIENCY_SUBGROUP, 0x2e601130, 0x5351, 0x4d9d, 0x8e, 0x4
, 0x25, 0x29, 0x66, 0xba, 0xd0, 0x54); |
| | |
| // | | // |
| // Specifies the maximum clock interrupt period (in ms) | | // Specifies the maximum clock interrupt period (in ms) |
| // | | // |
|
| | // N.B. This power setting is DEPRECATED. |
| | // |
| // {C42B79AA-AA3A-484b-A98F-2CF32AA90A28} | | // {C42B79AA-AA3A-484b-A98F-2CF32AA90A28} |
| DEFINE_GUID(GUID_IDLE_RESILIENCY_PERIOD, 0xc42b79aa, 0xaa3a, 0x484b, 0xa9, 0x8f,
0x2c, 0xf3, 0x2a, 0xa9, 0xa, 0x28); | | DEFINE_GUID(GUID_IDLE_RESILIENCY_PERIOD, 0xc42b79aa, 0xaa3a, 0x484b, 0xa9, 0x8f,
0x2c, 0xf3, 0x2a, 0xa9, 0xa, 0x28); |
| | |
| // | | // |
|
| | // Specifies the deep sleep policy setting. |
| | // This is intended to override the GUID_IDLE_RESILIENCY_PERIOD |
| | // {d502f7ee-1dc7-4efd-a55d-f04b6f5c0545} |
| | DEFINE_GUID(GUID_DEEP_SLEEP_ENABLED, 0xd502f7ee, 0x1dc7, 0x4efd, 0xa5, 0x5d, 0xf |
| | 0, 0x4b, 0x6f, 0x5c, 0x5, 0x45); |
| | |
| | // |
| // Specifies the platform idle state index associated with idle resiliency | | // Specifies the platform idle state index associated with idle resiliency |
| // period. | | // period. |
| // | | // |
|
| | // N.B. This power setting is DEPRECATED. |
| | // |
| // {D23F2FB8-9536-4038-9C94-1CE02E5C2152} | | // {D23F2FB8-9536-4038-9C94-1CE02E5C2152} |
|
| DEFINE_GUID(GUID_IDLE_RESILIENCY_PLATFORM_STATE, 0xd23f2fb8, 0x9536, 0x4038, 0x9
c, 0x94, 0x1c, 0xe0, 0x2e, 0x5c, 0x21, 0x52); | | DEFINE_GUID(GUID_DEEP_SLEEP_PLATFORM_STATE, 0xd23f2fb8, 0x9536, 0x4038, 0x9c, 0x
94, 0x1c, 0xe0, 0x2e, 0x5c, 0x21, 0x52); |
| | |
| // | | // |
| // Specifies (in milliseconds) how long we wait after the last disk access | | // Specifies (in milliseconds) how long we wait after the last disk access |
| // before we power off the disk in case when IO coalescing is active. | | // before we power off the disk in case when IO coalescing is active. |
| // | | // |
| // {C36F0EB4-2988-4a70-8EEE-0884FC2C2433} | | // {C36F0EB4-2988-4a70-8EEE-0884FC2C2433} |
| DEFINE_GUID(GUID_DISK_COALESCING_POWERDOWN_TIMEOUT, 0xc36f0eb4, 0x2988, 0x4a70,
0x8e, 0xee, 0x8, 0x84, 0xfc, 0x2c, 0x24, 0x33); | | DEFINE_GUID(GUID_DISK_COALESCING_POWERDOWN_TIMEOUT, 0xc36f0eb4, 0x2988, 0x4a70,
0x8e, 0xee, 0x8, 0x84, 0xfc, 0x2c, 0x24, 0x33); |
| | |
| // | | // |
| // Specifies (in seconds) how long we wait after the CS Enter before | | // Specifies (in seconds) how long we wait after the CS Enter before |
| | |
| skipping to change at line 12834 | | skipping to change at line 12915 |
| // | | // |
| DEFINE_GUID( GUID_VIDEO_DIM_TIMEOUT, 0x17aaa29b, 0x8b43, 0x4b94, 0xaa, 0xfe, 0x3
5, 0xf6, 0x4d, 0xaa, 0xf1, 0xee); | | DEFINE_GUID( GUID_VIDEO_DIM_TIMEOUT, 0x17aaa29b, 0x8b43, 0x4b94, 0xaa, 0xfe, 0x3
5, 0xf6, 0x4d, 0xaa, 0xf1, 0xee); |
| | |
| // | | // |
| // Specifies if the operating system should use adaptive timers (based on | | // Specifies if the operating system should use adaptive timers (based on |
| // previous behavior) to power down the video, | | // previous behavior) to power down the video, |
| // | | // |
| DEFINE_GUID( GUID_VIDEO_ADAPTIVE_POWERDOWN, 0x90959D22, 0xD6A1, 0x49B9, 0xAF, 0x
93, 0xBC, 0xE8, 0x85, 0xAD, 0x33, 0x5B ); | | DEFINE_GUID( GUID_VIDEO_ADAPTIVE_POWERDOWN, 0x90959D22, 0xD6A1, 0x49B9, 0xAF, 0x
93, 0xBC, 0xE8, 0x85, 0xAD, 0x33, 0x5B ); |
| | |
| // | | // |
|
| | // Specifies a maximum power consumption level. |
| | // |
| | DEFINE_GUID(GUID_DISK_MAX_POWER, 0x51dea550, 0xbb38, 0x4bc4, 0x99, 0x1b, 0xea, 0 |
| | xcf, 0x37, 0xbe, 0x5e, 0xc8); |
| | |
| | // |
| // Specifies if the monitor is currently being powered or not. | | // Specifies if the monitor is currently being powered or not. |
| // 02731015-4510-4526-99E6-E5A17EBD1AEA | | // 02731015-4510-4526-99E6-E5A17EBD1AEA |
| // | | // |
| DEFINE_GUID( GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xE6, 0xE5
, 0xA1, 0x7E, 0xBD, 0x1A, 0xEA ); | | DEFINE_GUID( GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xE6, 0xE5
, 0xA1, 0x7E, 0xBD, 0x1A, 0xEA ); |
| | |
| // | | // |
| // Monitor brightness policy when in normal state | | // Monitor brightness policy when in normal state |
| // {aded5e82-b909-4619-9949-f5d71dac0bcb} | | // {aded5e82-b909-4619-9949-f5d71dac0bcb} |
| DEFINE_GUID(GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS, 0xaded5e82L, 0xb909, 0x46
19, 0x99, 0x49, 0xf5, 0xd7, 0x1d, 0xac, 0x0b, 0xcb); | | DEFINE_GUID(GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS, 0xaded5e82L, 0xb909, 0x46
19, 0x99, 0x49, 0xf5, 0xd7, 0x1d, 0xac, 0x0b, 0xcb); |
| | |
| | |
| skipping to change at line 12991 | | skipping to change at line 13077 |
| // {B7A27025-E569-46c2-A504-2B96CAD225A1} | | // {B7A27025-E569-46c2-A504-2B96CAD225A1} |
| // | | // |
| DEFINE_GUID( GUID_CRITICAL_POWER_TRANSITION, 0xB7A27025, 0xE569, 0x46c2, 0xA5,
0x04, 0x2B, 0x96, 0xCA, 0xD2, 0x25, 0xA1); | | DEFINE_GUID( GUID_CRITICAL_POWER_TRANSITION, 0xB7A27025, 0xE569, 0x46c2, 0xA5,
0x04, 0x2B, 0x96, 0xCA, 0xD2, 0x25, 0xA1); |
| | |
| // | | // |
| // Specifies if the system is entering or exiting 'away mode'. | | // Specifies if the system is entering or exiting 'away mode'. |
| // 98A7F580-01F7-48AA-9C0F-44352C29E5C0 | | // 98A7F580-01F7-48AA-9C0F-44352C29E5C0 |
| // | | // |
| DEFINE_GUID( GUID_SYSTEM_AWAYMODE, 0x98A7F580, 0x01F7, 0x48AA, 0x9C, 0x0F, 0x44,
0x35, 0x2C, 0x29, 0xE5, 0xC0 ); | | DEFINE_GUID( GUID_SYSTEM_AWAYMODE, 0x98A7F580, 0x01F7, 0x48AA, 0x9C, 0x0F, 0x44,
0x35, 0x2C, 0x29, 0xE5, 0xC0 ); |
| | |
|
| | // |
| // Specify whether away mode is allowed | | // Specify whether away mode is allowed |
| // | | // |
| // {25DFA149-5DD1-4736-B5AB-E8A37B5B8187} | | // {25DFA149-5DD1-4736-B5AB-E8A37B5B8187} |
| // | | // |
| DEFINE_GUID( GUID_ALLOW_AWAYMODE, 0x25dfa149, 0x5dd1, 0x4736, 0xb5, 0xab, 0xe8,
0xa3, 0x7b, 0x5b, 0x81, 0x87 ); | | DEFINE_GUID( GUID_ALLOW_AWAYMODE, 0x25dfa149, 0x5dd1, 0x4736, 0xb5, 0xab, 0xe8,
0xa3, 0x7b, 0x5b, 0x81, 0x87 ); |
| | |
| // | | // |
|
| // Full-screen video playback GUID | | // Defines a guid to control User Presence Prediction mode. |
| // {3D5938F0-FF20-41EF-AE9F-EEA006F422E1} | | |
| // | | |
| DEFINE_GUID( GUID_VIDEO_FULLSCREEN_PLAYBACK, 0x3D5938F0, 0xFF20, 0x41EF, 0xAE, 0 | | |
| x9F, 0xEE, 0xA0, 0x06, 0xF4, 0x22, 0xE1 ); | | |
| | | |
| // | | // |
|
| // Audio playback GUID | | // {82011705-FB95-4D46-8D35-4042B1D20DEF} |
| // {23B61359-2977-4c74-8207-37BCA1400D9D} | | |
| // | | // |
|
| | | DEFINE_GUID( GUID_USER_PRESENCE_PREDICTION, 0x82011705, 0xfb95, 0x4d46, 0x8d, 0x |
| DEFINE_GUID( GUID_AUDIO_PLAYBACK, 0x23b61359, 0x2977, 0x4c74, 0x82, 0x7, 0x37, 0 | | 35, 0x40, 0x42, 0xb1, 0xd2, 0xd, 0xef ); |
| xbc, 0xa1, 0x40, 0xd, 0x9d ); | | |
| | |
| // | | // |
| // Defines a guid for enabling/disabling standby (S1-S3) states. This does not | | // Defines a guid for enabling/disabling standby (S1-S3) states. This does not |
| // affect hibernation (S4). | | // affect hibernation (S4). |
| // | | // |
| // {abfc2519-3608-4c2a-94ea-171b0ed546ab} | | // {abfc2519-3608-4c2a-94ea-171b0ed546ab} |
| // | | // |
| DEFINE_GUID( GUID_ALLOW_STANDBY_STATES, 0xabfc2519, 0x3608, 0x4c2a, 0x94, 0xea,
0x17, 0x1b, 0x0e, 0xd5, 0x46, 0xab ); | | DEFINE_GUID( GUID_ALLOW_STANDBY_STATES, 0xabfc2519, 0x3608, 0x4c2a, 0x94, 0xea,
0x17, 0x1b, 0x0e, 0xd5, 0x46, 0xab ); |
| | |
| // | | // |
| | |
| skipping to change at line 13033 | | skipping to change at line 13114 |
| DEFINE_GUID( GUID_ALLOW_RTC_WAKE, 0xBD3B718A, 0x0680, 0x4D9D, 0x8A, 0xB2, 0xE1,
0xD2, 0xB4, 0xAC, 0x80, 0x6D ); | | DEFINE_GUID( GUID_ALLOW_RTC_WAKE, 0xBD3B718A, 0x0680, 0x4D9D, 0x8A, 0xB2, 0xE1,
0xD2, 0xB4, 0xAC, 0x80, 0x6D ); |
| | |
| // | | // |
| // Defines a guid for enabling/disabling the ability to create system required | | // Defines a guid for enabling/disabling the ability to create system required |
| // power requests. | | // power requests. |
| // | | // |
| // {A4B195F5-8225-47D8-8012-9D41369786E2} | | // {A4B195F5-8225-47D8-8012-9D41369786E2} |
| // | | // |
| DEFINE_GUID( GUID_ALLOW_SYSTEM_REQUIRED, 0xA4B195F5, 0x8225, 0x47D8, 0x80, 0x12,
0x9D, 0x41, 0x36, 0x97, 0x86, 0xE2 ); | | DEFINE_GUID( GUID_ALLOW_SYSTEM_REQUIRED, 0xA4B195F5, 0x8225, 0x47D8, 0x80, 0x12,
0x9D, 0x41, 0x36, 0x97, 0x86, 0xE2 ); |
| | |
|
| | // Energy Saver settings |
| | // --------------------- |
| | // |
| | // Indicates if Enegry Saver is ON or OFF. |
| | // |
| | // {E00958C0-C213-4ACE-AC77-FECCED2EEEA5} |
| | // |
| | DEFINE_GUID( GUID_POWER_SAVING_STATUS, 0xe00958c0, 0xc213, 0x4ace, 0xac, 0x77, 0 |
| | xfe, 0xcc, 0xed, 0x2e, 0xee, 0xa5); |
| | |
| | // |
| | // Specifies the subgroup which will contain all of the Energy Saver settings |
| | // for a single policy. |
| | // |
| | // {DE830923-A562-41AF-A086-E3A2C6BAD2DA} |
| | // |
| | DEFINE_GUID( GUID_ENERGY_SAVER_SUBGROUP, 0xDE830923, 0xA562, 0x41AF, 0xA0, 0x86, |
| | 0xE3, 0xA2, 0xC6, 0xBA, 0xD2, 0xDA ); |
| | |
| | // |
| | // Defines a guid to engage Energy Saver at specific battery charge level |
| | // |
| | // {E69653CA-CF7F-4F05-AA73-CB833FA90AD4} |
| | // |
| | DEFINE_GUID( GUID_ENERGY_SAVER_BATTERY_THRESHOLD, 0xE69653CA, 0xCF7F, 0x4F05, 0x |
| | AA, 0x73, 0xCB, 0x83, 0x3F, 0xA9, 0x0A, 0xD4 ); |
| | |
| | // |
| | // Defines a guid to specify display brightness weight when Energy Saver is enga |
| | ged |
| | // |
| | // {13D09884-F74E-474A-A852-B6BDE8AD03A8} |
| | // |
| | DEFINE_GUID( GUID_ENERGY_SAVER_BRIGHTNESS, 0x13D09884, 0xF74E, 0x474A, 0xA8, 0x5 |
| | 2, 0xB6, 0xBD, 0xE8, 0xAD, 0x03, 0xA8 ); |
| | |
| // System button actions | | // System button actions |
| // --------------------- | | // --------------------- |
| // | | // |
| // | | // |
| // Specifies the subgroup which will contain all of the system button | | // Specifies the subgroup which will contain all of the system button |
| // settings for a single policy. | | // settings for a single policy. |
| // | | // |
| DEFINE_GUID( GUID_SYSTEM_BUTTON_SUBGROUP, 0x4F971E89, 0xEEBD, 0x4455, 0xA8, 0xDE
, 0x9E, 0x59, 0x04, 0x0E, 0x73, 0x47 ); | | DEFINE_GUID( GUID_SYSTEM_BUTTON_SUBGROUP, 0x4F971E89, 0xEEBD, 0x4455, 0xA8, 0xDE
, 0x9E, 0x59, 0x04, 0x0E, 0x73, 0x47 ); |
| | |
|
| #define POWERBUTTON_ACTION_INDEX_NOTHING 0 | | #define POWERBUTTON_ACTION_INDEX_NOTHING 0 |
| #define POWERBUTTON_ACTION_INDEX_SLEEP 1 | | #define POWERBUTTON_ACTION_INDEX_SLEEP 1 |
| #define POWERBUTTON_ACTION_INDEX_HIBERNATE 2 | | #define POWERBUTTON_ACTION_INDEX_HIBERNATE 2 |
| #define POWERBUTTON_ACTION_INDEX_SHUTDOWN 3 | | #define POWERBUTTON_ACTION_INDEX_SHUTDOWN 3 |
| | #define POWERBUTTON_ACTION_INDEX_TURN_OFF_THE_DISPLAY 4 |
| | |
| // | | // |
| // System button values which contain the PowerAction* value for each action. | | // System button values which contain the PowerAction* value for each action. |
| // | | // |
| | |
|
| #define POWERBUTTON_ACTION_VALUE_NOTHING 0 | | #define POWERBUTTON_ACTION_VALUE_NOTHING 0 |
| #define POWERBUTTON_ACTION_VALUE_SLEEP 2 | | #define POWERBUTTON_ACTION_VALUE_SLEEP 2 |
| #define POWERBUTTON_ACTION_VALUE_HIBERNATE 3 | | #define POWERBUTTON_ACTION_VALUE_HIBERNATE 3 |
| #define POWERBUTTON_ACTION_VALUE_SHUTDOWN 6 | | #define POWERBUTTON_ACTION_VALUE_SHUTDOWN 6 |
| | #define POWERBUTTON_ACTION_VALUE_TURN_OFF_THE_DISPLAY 8 |
| | |
| // Specifies (in a POWER_ACTION_POLICY structure) the appropriate action to | | // Specifies (in a POWER_ACTION_POLICY structure) the appropriate action to |
| // take when the system power button is pressed. | | // take when the system power button is pressed. |
| // | | // |
| DEFINE_GUID( GUID_POWERBUTTON_ACTION, 0x7648EFA3, 0xDD9C, 0x4E3E, 0xB5, 0x66, 0x
50, 0xF9, 0x29, 0x38, 0x62, 0x80 ); | | DEFINE_GUID( GUID_POWERBUTTON_ACTION, 0x7648EFA3, 0xDD9C, 0x4E3E, 0xB5, 0x66, 0x
50, 0xF9, 0x29, 0x38, 0x62, 0x80 ); |
| | |
| // | | // |
| // Specifies (in a POWER_ACTION_POLICY structure) the appropriate action to | | // Specifies (in a POWER_ACTION_POLICY structure) the appropriate action to |
| // take when the system sleep button is pressed. | | // take when the system sleep button is pressed. |
| // | | // |
| | |
| skipping to change at line 13115 | | skipping to change at line 13229 |
| DEFINE_GUID( GUID_BATTERY_DISCHARGE_FLAGS_1, 0xbcded951, 0x187b, 0x4d05, 0xbc, 0
xcc, 0xf7, 0xe5, 0x19, 0x60, 0xc2, 0x58 ); | | DEFINE_GUID( GUID_BATTERY_DISCHARGE_FLAGS_1, 0xbcded951, 0x187b, 0x4d05, 0xbc, 0
xcc, 0xf7, 0xe5, 0x19, 0x60, 0xc2, 0x58 ); |
| | |
| DEFINE_GUID( GUID_BATTERY_DISCHARGE_ACTION_2, 0x421CBA38, 0x1A8E, 0x4881, 0xAC,
0x89, 0xE3, 0x3A, 0x8B, 0x04, 0xEC, 0xE4 ); | | DEFINE_GUID( GUID_BATTERY_DISCHARGE_ACTION_2, 0x421CBA38, 0x1A8E, 0x4881, 0xAC,
0x89, 0xE3, 0x3A, 0x8B, 0x04, 0xEC, 0xE4 ); |
| DEFINE_GUID( GUID_BATTERY_DISCHARGE_LEVEL_2, 0x07A07CA2, 0xADAF, 0x40D7, 0xB0, 0
x77, 0x53, 0x3A, 0xAD, 0xED, 0x1B, 0xFA ); | | DEFINE_GUID( GUID_BATTERY_DISCHARGE_LEVEL_2, 0x07A07CA2, 0xADAF, 0x40D7, 0xB0, 0
x77, 0x53, 0x3A, 0xAD, 0xED, 0x1B, 0xFA ); |
| DEFINE_GUID( GUID_BATTERY_DISCHARGE_FLAGS_2, 0x7fd2f0c4, 0xfeb7, 0x4da3, 0x81, 0
x17, 0xe3, 0xfb, 0xed, 0xc4, 0x65, 0x82 ); | | DEFINE_GUID( GUID_BATTERY_DISCHARGE_FLAGS_2, 0x7fd2f0c4, 0xfeb7, 0x4da3, 0x81, 0
x17, 0xe3, 0xfb, 0xed, 0xc4, 0x65, 0x82 ); |
| | |
| DEFINE_GUID( GUID_BATTERY_DISCHARGE_ACTION_3, 0x80472613, 0x9780, 0x455E, 0xB3,
0x08, 0x72, 0xD3, 0x00, 0x3C, 0xF2, 0xF8 ); | | DEFINE_GUID( GUID_BATTERY_DISCHARGE_ACTION_3, 0x80472613, 0x9780, 0x455E, 0xB3,
0x08, 0x72, 0xD3, 0x00, 0x3C, 0xF2, 0xF8 ); |
| DEFINE_GUID( GUID_BATTERY_DISCHARGE_LEVEL_3, 0x58AFD5A6, 0xC2DD, 0x47D2, 0x9F, 0
xBF, 0xEF, 0x70, 0xCC, 0x5C, 0x59, 0x65 ); | | DEFINE_GUID( GUID_BATTERY_DISCHARGE_LEVEL_3, 0x58AFD5A6, 0xC2DD, 0x47D2, 0x9F, 0
xBF, 0xEF, 0x70, 0xCC, 0x5C, 0x59, 0x65 ); |
| DEFINE_GUID( GUID_BATTERY_DISCHARGE_FLAGS_3, 0x73613ccf, 0xdbfa, 0x4279, 0x83, 0
x56, 0x49, 0x35, 0xf6, 0xbf, 0x62, 0xf3 ); | | DEFINE_GUID( GUID_BATTERY_DISCHARGE_FLAGS_3, 0x73613ccf, 0xdbfa, 0x4279, 0x83, 0
x56, 0x49, 0x35, 0xf6, 0xbf, 0x62, 0xf3 ); |
| | |
|
| DEFINE_GUID( GUID_CS_BATTERY_SAVER_THRESHOLD, 0x1e133d45, 0xa325, 0x48DA, 0x87, | | |
| 0x69, 0x14, 0xAE, 0x6D, 0xC1, 0x17, 0x0B ); | | |
| DEFINE_GUID( GUID_CS_BATTERY_SAVER_ACTION, 0xC10CE532, 0x2EB1, 0x4B3C, 0xB3, 0xF | | |
| E, 0x37, 0x46, 0x23, 0xCD, 0xCF, 0x07 ); | | |
| DEFINE_GUID( GUID_CS_BATTERY_SAVER_TIMEOUT, 0x7398e821, 0x3937, 0x4469, 0xB0, 0x | | |
| 7B, 0x33, 0xEB, 0x78, 0x5A, 0xAC, 0xA1); | | |
| | | |
| // Processor power settings | | // Processor power settings |
| // ------------------------ | | // ------------------------ |
| // | | // |
| | |
| // Specifies the subgroup which will contain all of the processor | | // Specifies the subgroup which will contain all of the processor |
| // settings for a single policy. | | // settings for a single policy. |
| // | | // |
|
| | // {54533251-82be-4824-96c1-47b60b740d00} |
| | // |
| DEFINE_GUID( GUID_PROCESSOR_SETTINGS_SUBGROUP, 0x54533251, 0x82BE, 0x4824, 0x96,
0xC1, 0x47, 0xB6, 0x0B, 0x74, 0x0D, 0x00 ); | | DEFINE_GUID( GUID_PROCESSOR_SETTINGS_SUBGROUP, 0x54533251, 0x82BE, 0x4824, 0x96,
0xC1, 0x47, 0xB6, 0x0B, 0x74, 0x0D, 0x00 ); |
| | |
| // | | // |
| // Specifies various attributes that control processor performance/throttle | | // Specifies various attributes that control processor performance/throttle |
| // states. | | // states. |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_THROTTLE_POLICY, 0x57027304, 0x4AF6, 0x4104, 0x92, 0
x60, 0xE3, 0xD9, 0x52, 0x48, 0xFC, 0x36 ); | | DEFINE_GUID( GUID_PROCESSOR_THROTTLE_POLICY, 0x57027304, 0x4AF6, 0x4104, 0x92, 0
x60, 0xE3, 0xD9, 0x52, 0x48, 0xFC, 0x36 ); |
| | |
| #define PERFSTATE_POLICY_CHANGE_IDEAL 0 | | #define PERFSTATE_POLICY_CHANGE_IDEAL 0 |
| #define PERFSTATE_POLICY_CHANGE_SINGLE 1 | | #define PERFSTATE_POLICY_CHANGE_SINGLE 1 |
| | |
| skipping to change at line 13148 | | skipping to change at line 13260 |
| | |
| #define PERFSTATE_POLICY_CHANGE_DECREASE_MAX PERFSTATE_POLICY_CHANGE_ROCKET | | #define PERFSTATE_POLICY_CHANGE_DECREASE_MAX PERFSTATE_POLICY_CHANGE_ROCKET |
| #define PERFSTATE_POLICY_CHANGE_INCREASE_MAX PERFSTATE_POLICY_CHANGE_IDEAL_AGGRE
SSIVE | | #define PERFSTATE_POLICY_CHANGE_INCREASE_MAX PERFSTATE_POLICY_CHANGE_IDEAL_AGGRE
SSIVE |
| | |
| // | | // |
| // Specifies a percentage (between 0 and 100) that the processor frequency | | // Specifies a percentage (between 0 and 100) that the processor frequency |
| // should never go above. For example, if this value is set to 80, then | | // should never go above. For example, if this value is set to 80, then |
| // the processor frequency will never be throttled above 80 percent of its | | // the processor frequency will never be throttled above 80 percent of its |
| // maximum frequency by the system. | | // maximum frequency by the system. |
| // | | // |
|
| | // {bc5038f7-23e0-4960-96da-33abaf5935ec} |
| | // |
| DEFINE_GUID( GUID_PROCESSOR_THROTTLE_MAXIMUM, 0xBC5038F7, 0x23E0, 0x4960, 0x96,
0xDA, 0x33, 0xAB, 0xAF, 0x59, 0x35, 0xEC ); | | DEFINE_GUID( GUID_PROCESSOR_THROTTLE_MAXIMUM, 0xBC5038F7, 0x23E0, 0x4960, 0x96,
0xDA, 0x33, 0xAB, 0xAF, 0x59, 0x35, 0xEC ); |
| | |
| // | | // |
| // Specifies a percentage (between 0 and 100) that the processor frequency | | // Specifies a percentage (between 0 and 100) that the processor frequency |
|
| | // should never go above for Processor Power Efficiency Class 1. |
| | // For example, if this value is set to 80, then the processor frequency will |
| | // never be throttled above 80 percent of its maximum frequency by the system. |
| | // |
| | // {bc5038f7-23e0-4960-96da-33abaf5935ed} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_THROTTLE_MAXIMUM_1, 0xBC5038F7, 0x23E0, 0x4960, 0x96 |
| | , 0xDA, 0x33, 0xAB, 0xAF, 0x59, 0x35, 0xED ); |
| | |
| | // |
| | // Specifies a percentage (between 0 and 100) that the processor frequency |
| // should not drop below. For example, if this value is set to 50, then the | | // should not drop below. For example, if this value is set to 50, then the |
| // processor frequency will never be throttled below 50 percent of its | | // processor frequency will never be throttled below 50 percent of its |
| // maximum frequency by the system. | | // maximum frequency by the system. |
| // | | // |
|
| | // {893dee8e-2bef-41e0-89c6-b55d0929964c} |
| | // |
| DEFINE_GUID( GUID_PROCESSOR_THROTTLE_MINIMUM, 0x893DEE8E, 0x2BEF, 0x41E0, 0x89,
0xC6, 0xB5, 0x5D, 0x09, 0x29, 0x96, 0x4C ); | | DEFINE_GUID( GUID_PROCESSOR_THROTTLE_MINIMUM, 0x893DEE8E, 0x2BEF, 0x41E0, 0x89,
0xC6, 0xB5, 0x5D, 0x09, 0x29, 0x96, 0x4C ); |
| | |
| // | | // |
|
| | // Specifies a percentage (between 0 and 100) that the processor frequency |
| | // should not drop below for Processor Power Efficiency Class 1. |
| | // For example, if this value is set to 50, then the processor frequency will |
| | // never be throttled below 50 percent of its maximum frequency by the system. |
| | // |
| | // {893dee8e-2bef-41e0-89c6-b55d0929964d} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_THROTTLE_MINIMUM_1, 0x893DEE8E, 0x2BEF, 0x41E0, 0x89 |
| | , 0xC6, 0xB5, 0x5D, 0x09, 0x29, 0x96, 0x4D ); |
| | |
| | // |
| // Specifies whether throttle states are allowed to be used even when | | // Specifies whether throttle states are allowed to be used even when |
| // performance states are available. | | // performance states are available. |
| // | | // |
| // {3b04d4fd-1cc7-4f23-ab1c-d1337819c4bb} | | // {3b04d4fd-1cc7-4f23-ab1c-d1337819c4bb} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_ALLOW_THROTTLING, 0x3b04d4fd, 0x1cc7, 0x4f23, 0xab,
0x1c, 0xd1, 0x33, 0x78, 0x19, 0xc4, 0xbb ); | | DEFINE_GUID( GUID_PROCESSOR_ALLOW_THROTTLING, 0x3b04d4fd, 0x1cc7, 0x4f23, 0xab,
0x1c, 0xd1, 0x33, 0x78, 0x19, 0xc4, 0xbb ); |
| | |
|
| | #define PROCESSOR_THROTTLE_DISABLED 0 |
| | #define PROCESSOR_THROTTLE_ENABLED 1 |
| | #define PROCESSOR_THROTTLE_AUTOMATIC 2 |
| | |
| // | | // |
| // Specifies processor power settings for CState policy data | | // Specifies processor power settings for CState policy data |
| // {68F262A7-F621-4069-B9A5-4874169BE23C} | | // {68F262A7-F621-4069-B9A5-4874169BE23C} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_IDLESTATE_POLICY, 0x68f262a7, 0xf621, 0x4069, 0xb9,
0xa5, 0x48, 0x74, 0x16, 0x9b, 0xe2, 0x3c); | | DEFINE_GUID( GUID_PROCESSOR_IDLESTATE_POLICY, 0x68f262a7, 0xf621, 0x4069, 0xb9,
0xa5, 0x48, 0x74, 0x16, 0x9b, 0xe2, 0x3c); |
| | |
| // | | // |
| // Specifies processor power settings for PerfState policy data | | // Specifies processor power settings for PerfState policy data |
| // {BBDC3814-18E9-4463-8A55-D197327C45C0} | | // {BBDC3814-18E9-4463-8A55-D197327C45C0} |
| // | | // |
| | |
| skipping to change at line 13187 | | skipping to change at line 13327 |
| | |
| // | | // |
| // Specifies the increase busy percentage threshold that must be met before | | // Specifies the increase busy percentage threshold that must be met before |
| // increasing the processor performance state. | | // increasing the processor performance state. |
| // | | // |
| // {06cadf0e-64ed-448a-8927-ce7bf90eb35d} | | // {06cadf0e-64ed-448a-8927-ce7bf90eb35d} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_THRESHOLD, 0x06cadf0e, 0x64ed, 0x448a,
0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5d ); | | DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_THRESHOLD, 0x06cadf0e, 0x64ed, 0x448a,
0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5d ); |
| | |
| // | | // |
|
| | // Specifies the increase busy percentage threshold that must be met before |
| | // increasing the processor performance state for Processor Power Efficiency |
| | // Class 1. |
| | // |
| | // {06cadf0e-64ed-448a-8927-ce7bf90eb35e} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_THRESHOLD_1, 0x06cadf0e, 0x64ed, 0x448 |
| | a, 0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5e ); |
| | |
| | // |
| // Specifies the decrease busy percentage threshold that must be met before | | // Specifies the decrease busy percentage threshold that must be met before |
| // decreasing the processor performance state. | | // decreasing the processor performance state. |
| // | | // |
| // {12a0ab44-fe28-4fa9-b3bd-4b64f44960a6} | | // {12a0ab44-fe28-4fa9-b3bd-4b64f44960a6} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_THRESHOLD, 0x12a0ab44, 0xfe28, 0x4fa9,
0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa6 ); | | DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_THRESHOLD, 0x12a0ab44, 0xfe28, 0x4fa9,
0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa6 ); |
| | |
| // | | // |
|
| | // Specifies the decrease busy percentage threshold that must be met before |
| | // decreasing the processor performance state for Processor Power Efficiency |
| | // Class 1. |
| | // |
| | // {12a0ab44-fe28-4fa9-b3bd-4b64f44960a7} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_THRESHOLD_1, 0x12a0ab44, 0xfe28, 0x4fa |
| | 9, 0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa7 ); |
| | |
| | // |
| // Specifies, either as ideal, single or rocket, how aggressive performance | | // Specifies, either as ideal, single or rocket, how aggressive performance |
| // states should be selected when increasing the processor performance state. | | // states should be selected when increasing the processor performance state. |
| // | | // |
| // {465E1F50-B610-473a-AB58-00D1077DC418} | | // {465E1F50-B610-473a-AB58-00D1077DC418} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_POLICY, 0x465e1f50, 0xb610, 0x473a, 0x
ab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x18); | | DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_POLICY, 0x465e1f50, 0xb610, 0x473a, 0x
ab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x18); |
| | |
| // | | // |
| // Specifies, either as ideal, single or rocket, how aggressive performance | | // Specifies, either as ideal, single or rocket, how aggressive performance |
|
| | // states should be selected when increasing the processor performance state |
| | // for Processor Power Efficiency Class 1. |
| | // |
| | // {465E1F50-B610-473a-AB58-00D1077DC419} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_POLICY_1, 0x465e1f50, 0xb610, 0x473a, |
| | 0xab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x19); |
| | |
| | // |
| | // Specifies, either as ideal, single or rocket, how aggressive performance |
| // states should be selected when decreasing the processor performance state. | | // states should be selected when decreasing the processor performance state. |
| // | | // |
| // {40FBEFC7-2E9D-4d25-A185-0CFD8574BAC6} | | // {40FBEFC7-2E9D-4d25-A185-0CFD8574BAC6} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_POLICY, 0x40fbefc7, 0x2e9d, 0x4d25, 0x
a1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc6); | | DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_POLICY, 0x40fbefc7, 0x2e9d, 0x4d25, 0x
a1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc6); |
| | |
| // | | // |
|
| | // Specifies, either as ideal, single or rocket, how aggressive performance |
| | // states should be selected when decreasing the processor performance state for |
| | // Processor Power Efficiency Class 1. |
| | // |
| | // {40FBEFC7-2E9D-4d25-A185-0CFD8574BAC7} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_POLICY_1, 0x40fbefc7, 0x2e9d, 0x4d25, |
| | 0xa1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc7); |
| | |
| | // |
| // Specifies, in milliseconds, the minimum amount of time that must elapse after | | // Specifies, in milliseconds, the minimum amount of time that must elapse after |
| // the last processor performance state change before increasing the processor | | // the last processor performance state change before increasing the processor |
| // performance state. | | // performance state. |
| // | | // |
| // {984CF492-3BED-4488-A8F9-4286C97BF5AA} | | // {984CF492-3BED-4488-A8F9-4286C97BF5AA} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_TIME, 0x984cf492, 0x3bed, 0x4488, 0xa8
, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xaa); | | DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_TIME, 0x984cf492, 0x3bed, 0x4488, 0xa8
, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xaa); |
| | |
| // | | // |
| // Specifies, in milliseconds, the minimum amount of time that must elapse after | | // Specifies, in milliseconds, the minimum amount of time that must elapse after |
| // the last processor performance state change before increasing the processor | | // the last processor performance state change before increasing the processor |
|
| | // performance state for Processor Power Efficiency Class 1. |
| | // |
| | // {984CF492-3BED-4488-A8F9-4286C97BF5AB} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_TIME_1, 0x984cf492, 0x3bed, 0x4488, 0x |
| | a8, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xab); |
| | |
| | // |
| | // Specifies, in milliseconds, the minimum amount of time that must elapse after |
| | // the last processor performance state change before increasing the processor |
| // performance state. | | // performance state. |
| // | | // |
| // {D8EDEB9B-95CF-4f95-A73C-B061973693C8} | | // {D8EDEB9B-95CF-4f95-A73C-B061973693C8} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_TIME, 0xd8edeb9b, 0x95cf, 0x4f95, 0xa7
, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc8); | | DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_TIME, 0xd8edeb9b, 0x95cf, 0x4f95, 0xa7
, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc8); |
| | |
| // | | // |
|
| | // Specifies, in milliseconds, the minimum amount of time that must elapse after |
| | // the last processor performance state change before increasing the processor |
| | // performance state for Processor Power Efficiency Class 1. |
| | // |
| | // {D8EDEB9B-95CF-4f95-A73C-B061973693C9} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_TIME_1, 0xd8edeb9b, 0x95cf, 0x4f95, 0x |
| | a7, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc9); |
| | |
| | // |
| // Specifies the time, in milliseconds, that must expire before considering | | // Specifies the time, in milliseconds, that must expire before considering |
| // a change in the processor performance states or parked core set. | | // a change in the processor performance states or parked core set. |
| // | | // |
| // {4D2B0152-7D5C-498b-88E2-34345392A2C5} | | // {4D2B0152-7D5C-498b-88E2-34345392A2C5} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_TIME_CHECK, 0x4d2b0152, 0x7d5c, 0x498b, 0x88, 0
xe2, 0x34, 0x34, 0x53, 0x92, 0xa2, 0xc5); | | DEFINE_GUID( GUID_PROCESSOR_PERF_TIME_CHECK, 0x4d2b0152, 0x7d5c, 0x498b, 0x88, 0
xe2, 0x34, 0x34, 0x53, 0x92, 0xa2, 0xc5); |
| | |
| // | | // |
| // Specifies how the processor should manage performance and efficiency | | // Specifies how the processor should manage performance and efficiency |
| // tradeoffs when boosting frequency above the maximum. | | // tradeoffs when boosting frequency above the maximum. |
| | |
| skipping to change at line 13262 | | skipping to change at line 13456 |
| // {BE337238-0D82-4146-A960-4F3749D470C7} | | // {BE337238-0D82-4146-A960-4F3749D470C7} |
| // | | // |
| DEFINE_GUID(GUID_PROCESSOR_PERF_BOOST_MODE, | | DEFINE_GUID(GUID_PROCESSOR_PERF_BOOST_MODE, |
| 0xbe337238, 0xd82, 0x4146, 0xa9, 0x60, 0x4f, 0x37, 0x49, 0xd4, 0x70, 0xc7); | | 0xbe337238, 0xd82, 0x4146, 0xa9, 0x60, 0x4f, 0x37, 0x49, 0xd4, 0x70, 0xc7); |
| | |
| #define PROCESSOR_PERF_BOOST_MODE_DISABLED 0 | | #define PROCESSOR_PERF_BOOST_MODE_DISABLED 0 |
| #define PROCESSOR_PERF_BOOST_MODE_ENABLED 1 | | #define PROCESSOR_PERF_BOOST_MODE_ENABLED 1 |
| #define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 2 | | #define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 2 |
| #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 3 | | #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 3 |
| #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 4 | | #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 4 |
|
| #define PROCESSOR_PERF_BOOST_MODE_MAX PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRES | | #define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE_AT_GUARANTEED 5 |
| SIVE | | #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE_AT_GUARANTEED 6 |
| | #define PROCESSOR_PERF_BOOST_MODE_MAX PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRES |
| | SIVE_AT_GUARANTEED |
| | |
| | // |
| | // Specifies whether or not a procesor should autonomously select its |
| | // operating performance state. |
| | // |
| | // {8BAA4A8A-14C6-4451-8E8B-14BDBD197537} |
| | // |
| | DEFINE_GUID(GUID_PROCESSOR_PERF_AUTONOMOUS_MODE, |
| | 0x8baa4a8a, 0x14c6, 0x4451, 0x8e, 0x8b, 0x14, 0xbd, 0xbd, 0x19, 0x75, 0x37); |
| | |
| | #define PROCESSOR_PERF_AUTONOMOUS_MODE_DISABLED 0 |
| | #define PROCESSOR_PERF_AUTONOMOUS_MODE_ENABLED 1 |
| | |
| | // |
| | // Specifies the tradeoff between performance and energy the processor should |
| | // make when operating in autonomous mode. |
| | // |
| | // {36687F9E-E3A5-4dbf-B1DC-15EB381C6863} |
| | DEFINE_GUID(GUID_PROCESSOR_PERF_ENERGY_PERFORMANCE_PREFERENCE, |
| | 0x36687f9e, 0xe3a5, 0x4dbf, 0xb1, 0xdc, 0x15, 0xeb, 0x38, 0x1c, 0x68, 0x63); |
| | |
| | #define PROCESSOR_PERF_PERFORMANCE_PREFERENCE 0xff |
| | #define PROCESSOR_PERF_ENERGY_PREFERENCE 0 |
| | |
| | // |
| | // Specifies the window over which the processor should observe utilization when |
| | // operating in autonomous mode, in microseconds. |
| | // |
| | // {CFEDA3D0-7697-4566-A922-A9086CD49DFA} |
| | DEFINE_GUID(GUID_PROCESSOR_PERF_AUTONOMOUS_ACTIVITY_WINDOW, |
| | 0xcfeda3d0, 0x7697, 0x4566, 0xa9, 0x22, 0xa9, 0x8, 0x6c, 0xd4, 0x9d, 0xfa); |
| | |
| | #define PROCESSOR_PERF_MINIMUM_ACTIVITY_WINDOW 0 |
| | #define PROCESSOR_PERF_MAXIMUM_ACTIVITY_WINDOW 1270000000 |
| | |
| | // |
| | // Specifies whether the processor should perform duty cycling. |
| | // |
| | // {4E4450B3-6179-4e91-B8F1-5BB9938F81A1} |
| | DEFINE_GUID(GUID_PROCESSOR_DUTY_CYCLING, |
| | 0x4e4450b3, 0x6179, 0x4e91, 0xb8, 0xf1, 0x5b, 0xb9, 0x93, 0x8f, 0x81, 0xa1); |
| | |
| | #define PROCESSOR_DUTY_CYCLING_DISABLED 0 |
| | #define PROCESSOR_DUTY_CYCLING_ENABLED 1 |
| | |
| // | | // |
| // Specifies if idle state promotion and demotion values should be scaled based | | // Specifies if idle state promotion and demotion values should be scaled based |
| // on the current peformance state. | | // on the current peformance state. |
| // | | // |
| // {6C2993B0-8F48-481f-BCC6-00DD2742AA06} | | // {6C2993B0-8F48-481f-BCC6-00DD2742AA06} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_IDLE_ALLOW_SCALING, 0x6c2993b0, 0x8f48, 0x481f, 0xbc
, 0xc6, 0x0, 0xdd, 0x27, 0x42, 0xaa, 0x6); | | DEFINE_GUID( GUID_PROCESSOR_IDLE_ALLOW_SCALING, 0x6c2993b0, 0x8f48, 0x481f, 0xbc
, 0xc6, 0x0, 0xdd, 0x27, 0x42, 0xaa, 0x6); |
| | |
| // | | // |
| | |
| skipping to change at line 13316 | | skipping to change at line 13556 |
| // Specifies the lower busy threshold that must be met before promoting the | | // Specifies the lower busy threshold that must be met before promoting the |
| // processor to a deeper idle state (in percentage). | | // processor to a deeper idle state (in percentage). |
| // | | // |
| // {7B224883-B3CC-4d79-819F-8374152CBE7C} | | // {7B224883-B3CC-4d79-819F-8374152CBE7C} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD, 0x7b224883, 0xb3cc, 0x4d79,
0x81, 0x9f, 0x83, 0x74, 0x15, 0x2c, 0xbe, 0x7c); | | DEFINE_GUID( GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD, 0x7b224883, 0xb3cc, 0x4d79,
0x81, 0x9f, 0x83, 0x74, 0x15, 0x2c, 0xbe, 0x7c); |
| | |
| // | | // |
| // Specifies the utilization threshold in percent that must be crossed in order
to un-park cores. | | // Specifies the utilization threshold in percent that must be crossed in order
to un-park cores. |
| // | | // |
|
| | // N.B. This power setting is DEPRECATED. |
| | // |
| // {df142941-20f3-4edf-9a4a-9c83d3d717d1} | | // {df142941-20f3-4edf-9a4a-9c83d3d717d1} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD, 0xdf142941, 0x20f3,
0x4edf, 0x9a, 0x4a, 0x9c, 0x83, 0xd3, 0xd7, 0x17, 0xd1 ); | | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD, 0xdf142941, 0x20f3,
0x4edf, 0x9a, 0x4a, 0x9c, 0x83, 0xd3, 0xd7, 0x17, 0xd1 ); |
| | |
| // | | // |
| // Specifies the utilization threshold in percent that must be crossed in order
to park cores. | | // Specifies the utilization threshold in percent that must be crossed in order
to park cores. |
| // | | // |
|
| | // N.B. This power setting is DEPRECATED. |
| | // |
| // {68dd2f27-a4ce-4e11-8487-3794e4135dfa} | | // {68dd2f27-a4ce-4e11-8487-3794e4135dfa} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD, 0x68dd2f27, 0xa4ce,
0x4e11, 0x84, 0x87, 0x37, 0x94, 0xe4, 0x13, 0x5d, 0xfa); | | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD, 0x68dd2f27, 0xa4ce,
0x4e11, 0x84, 0x87, 0x37, 0x94, 0xe4, 0x13, 0x5d, 0xfa); |
| | |
| // | | // |
| // Specifies, either as ideal, single or rocket, how aggressive core parking is
when cores must be unparked. | | // Specifies, either as ideal, single or rocket, how aggressive core parking is
when cores must be unparked. |
| // | | // |
| // {c7be0679-2817-4d69-9d02-519a537ed0c6} | | // {c7be0679-2817-4d69-9d02-519a537ed0c6} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY, 0xc7be0679, 0x2817, 0x
4d69, 0x9d, 0x02, 0x51, 0x9a, 0x53, 0x7e, 0xd0, 0xc6); | | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY, 0xc7be0679, 0x2817, 0x
4d69, 0x9d, 0x02, 0x51, 0x9a, 0x53, 0x7e, 0xd0, 0xc6); |
| | |
| skipping to change at line 13355 | | skipping to change at line 13599 |
| DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY, 0x71021b41, 0xc749, 0x
4d21, 0xbe, 0x74, 0xa0, 0x0f, 0x33, 0x5d, 0x58, 0x2b); | | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY, 0x71021b41, 0xc749, 0x
4d21, 0xbe, 0x74, 0xa0, 0x0f, 0x33, 0x5d, 0x58, 0x2b); |
| | |
| // | | // |
| // Specifies, on a per processor group basis, the maximum number of cores that c
an be kept unparked. | | // Specifies, on a per processor group basis, the maximum number of cores that c
an be kept unparked. |
| // | | // |
| // {ea062031-0e34-4ff1-9b6d-eb1059334028} | | // {ea062031-0e34-4ff1-9b6d-eb1059334028} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_MAX_CORES, 0xea062031, 0x0e34, 0x4ff1,
0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x28); | | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_MAX_CORES, 0xea062031, 0x0e34, 0x4ff1,
0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x28); |
| | |
| // | | // |
|
| | // Specifies, on a per processor group basis, the maximum number of cores that |
| | // can be kept unparked for Processor Power Efficiency Class 1. |
| | // |
| | // {ea062031-0e34-4ff1-9b6d-eb1059334029} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_MAX_CORES_1, 0xea062031, 0x0e34, 0x4ff1 |
| | , 0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x29); |
| | |
| | // |
| // Specifies, on a per processor group basis, the minimum number of cores that m
ust be kept unparked. | | // Specifies, on a per processor group basis, the minimum number of cores that m
ust be kept unparked. |
| // | | // |
| // {0cc5b647-c1df-4637-891a-dec35c318583} | | // {0cc5b647-c1df-4637-891a-dec35c318583} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_MIN_CORES, 0x0cc5b647, 0xc1df, 0x4637,
0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x83); | | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_MIN_CORES, 0x0cc5b647, 0xc1df, 0x4637,
0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x83); |
| | |
| // | | // |
|
| | // Specifies, on a per processor group basis, the minimum number of cores that |
| | // must be kept unparked in Processor Power Efficiency Class 1. |
| | // |
| | // {0cc5b647-c1df-4637-891a-dec35c318584} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_MIN_CORES_1, 0x0cc5b647, 0xc1df, 0x4637 |
| | , 0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x84); |
| | |
| | // |
| // Specifies, in milliseconds, the minimum amount of time a core must be parked
before it can be unparked. | | // Specifies, in milliseconds, the minimum amount of time a core must be parked
before it can be unparked. |
| // | | // |
| // {2ddd5a84-5a71-437e-912a-db0b8c788732} | | // {2ddd5a84-5a71-437e-912a-db0b8c788732} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME, 0x2ddd5a84, 0x5a71, 0x43
7e, 0x91, 0x2a, 0xdb, 0x0b, 0x8c, 0x78, 0x87, 0x32); | | DEFINE_GUID( GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME, 0x2ddd5a84, 0x5a71, 0x43
7e, 0x91, 0x2a, 0xdb, 0x0b, 0x8c, 0x78, 0x87, 0x32); |
| | |
| // | | // |
| // Specifies, in milliseconds, the minimum amount of time a core must be unparke
d before it can be parked. | | // Specifies, in milliseconds, the minimum amount of time a core must be unparke
d before it can be parked. |
| // | | // |
| // {dfd10d17-d5eb-45dd-877a-9a34ddd15c82} | | // {dfd10d17-d5eb-45dd-877a-9a34ddd15c82} |
| | |
| skipping to change at line 13441 | | skipping to change at line 13701 |
| | |
| // | | // |
| // Specifies what performance state a processor should enter when first parked. | | // Specifies what performance state a processor should enter when first parked. |
| // | | // |
| // {447235c7-6a8d-4cc0-8e24-9eaf70b96e2b} | | // {447235c7-6a8d-4cc0-8e24-9eaf70b96e2b} |
| // | | // |
| | |
| DEFINE_GUID( GUID_PROCESSOR_PARKING_PERF_STATE, 0x447235c7, 0x6a8d, 0x4cc0, 0x8e
, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2b); | | DEFINE_GUID( GUID_PROCESSOR_PARKING_PERF_STATE, 0x447235c7, 0x6a8d, 0x4cc0, 0x8e
, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2b); |
| | |
| // | | // |
|
| | // Specifies what performance state a processor should enter when first parked |
| | // for Processor Power Efficiency Class 1. |
| | // |
| | // {447235c7-6a8d-4cc0-8e24-9eaf70b96e2c} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PARKING_PERF_STATE_1, 0x447235c7, 0x6a8d, 0x4cc0, 0x |
| | 8e, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2c); |
| | |
| | // |
| // Specify the busy threshold that must be met when calculating the concurrency
of a node's workload. | | // Specify the busy threshold that must be met when calculating the concurrency
of a node's workload. |
| // | | // |
| // {2430ab6f-a520-44a2-9601-f7f23b5134b1} | | // {2430ab6f-a520-44a2-9601-f7f23b5134b1} |
| // | | // |
| | |
| DEFINE_GUID( GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD, 0x2430ab6f, 0xa520, 0
x44a2, 0x96, 0x01, 0xf7, 0xf2, 0x3b, 0x51, 0x34, 0xb1); | | DEFINE_GUID( GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD, 0x2430ab6f, 0xa520, 0
x44a2, 0x96, 0x01, 0xf7, 0xf2, 0x3b, 0x51, 0x34, 0xb1); |
| | |
| // | | // |
| // Specify the busy threshold that must be met by all cores in a concurrency set
to unpark an extra core. | | // Specify the busy threshold that must be met by all cores in a concurrency set
to unpark an extra core. |
| // | | // |
| // {f735a673-2066-4f80-a0c5-ddee0cf1bf5d} | | // {f735a673-2066-4f80-a0c5-ddee0cf1bf5d} |
| // | | // |
| | |
| DEFINE_GUID( GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD, 0xf735a673, 0x2066, 0x4f
80, 0xa0, 0xc5, 0xdd, 0xee, 0x0c, 0xf1, 0xbf, 0x5d); | | DEFINE_GUID( GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD, 0xf735a673, 0x2066, 0x4f
80, 0xa0, 0xc5, 0xdd, 0xee, 0x0c, 0xf1, 0xbf, 0x5d); |
| | |
| // | | // |
|
| // Specifies the number of perf time check intervals to average utility over. | | // Specify the percentage utilization used to calculate the distribution concurr
ency. |
| // | | // |
|
| // N.B. This power setting is deprecated. | | // {4bdaf4e9-d103-46d7-a5f0-6280121616ef} |
| | // |
| | |
| | DEFINE_GUID( GUID_PROCESSOR_PARKING_DISTRIBUTION_THRESHOLD, 0x4bdaf4e9, 0xd103, |
| | 0x46d7, 0xa5, 0xf0, 0x62, 0x80, 0x12, 0x16, 0x16, 0xef); |
| | |
| | // |
| | // Specifies the number of perf time check intervals to average utility over. |
| // | | // |
| // {7d24baa7-0b84-480f-840c-1b0743c00f5f} | | // {7d24baa7-0b84-480f-840c-1b0743c00f5f} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_HISTORY, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x0c
, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x5f); | | DEFINE_GUID( GUID_PROCESSOR_PERF_HISTORY, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x0c
, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x5f); |
| | |
| // | | // |
|
| | // Specifies the number of perf time check intervals to average utility over in |
| | // Processor Power Efficiency Class 1. |
| | // |
| | // {7d24baa7-0b84-480f-840c-1b0743c00f60} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_HISTORY_1, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x |
| | 0c, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x60); |
| | |
| | // |
| // Specifies the number of perf time check intervals to average utility over to | | // Specifies the number of perf time check intervals to average utility over to |
| // determine performance increase. | | // determine performance increase. |
| // | | // |
|
| | // N.B. This power setting is DEPRECATED. |
| | // |
| // {99B3EF01-752F-46a1-80FB-7730011F2354} | | // {99B3EF01-752F-46a1-80FB-7730011F2354} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_HISTORY, 0x99b3ef01, 0x752f, 0x46a1, 0
x80, 0xfb, 0x77, 0x30, 0x1, 0x1f, 0x23, 0x54); | | DEFINE_GUID( GUID_PROCESSOR_PERF_INCREASE_HISTORY, 0x99b3ef01, 0x752f, 0x46a1, 0
x80, 0xfb, 0x77, 0x30, 0x1, 0x1f, 0x23, 0x54); |
| | |
| // | | // |
| // Specifies the number of perf time check intervals to average utility over to | | // Specifies the number of perf time check intervals to average utility over to |
| // determine performance decrease. | | // determine performance decrease. |
| // | | // |
|
| | // N.B. This power setting is DEPRECATED. |
| | // |
| // {0300F6F8-ABD6-45a9-B74F-4908691A40B5} | | // {0300F6F8-ABD6-45a9-B74F-4908691A40B5} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_HISTORY, 0x300f6f8, 0xabd6, 0x45a9, 0x
b7, 0x4f, 0x49, 0x8, 0x69, 0x1a, 0x40, 0xb5); | | DEFINE_GUID( GUID_PROCESSOR_PERF_DECREASE_HISTORY, 0x300f6f8, 0xabd6, 0x45a9, 0x
b7, 0x4f, 0x49, 0x8, 0x69, 0x1a, 0x40, 0xb5); |
| | |
| // | | // |
| // Specifies the number of perf time check intervals to average utility over for | | // Specifies the number of perf time check intervals to average utility over for |
| // core parking. | | // core parking. |
| // | | // |
|
| | // N.B. This power setting is DEPRECATED. |
| | // |
| // {77D7F282-8F1A-42cd-8537-45450A839BE8} | | // {77D7F282-8F1A-42cd-8537-45450A839BE8} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_CORE_PARKING_HISTORY, 0x77d7f282, 0x8f1a, 0x42c
d, 0x85, 0x37, 0x45, 0x45, 0xa, 0x83, 0x9b, 0xe8); | | DEFINE_GUID( GUID_PROCESSOR_PERF_CORE_PARKING_HISTORY, 0x77d7f282, 0x8f1a, 0x42c
d, 0x85, 0x37, 0x45, 0x45, 0xa, 0x83, 0x9b, 0xe8); |
| | |
| // | | // |
| // Specifies whether latency sensitivity hints should be taken into account by | | // Specifies whether latency sensitivity hints should be taken into account by |
| // the perf state engine. | | // the perf state engine. |
| // | | // |
|
| // N.B. This power setting is deprecated. | | // N.B. This power setting is DEPRECATED. |
| // | | // |
| // {0822df31-9c83-441c-a079-0de4cf009c7b} | | // {0822df31-9c83-441c-a079-0de4cf009c7b} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_LATENCY_HINT, 0x0822df31, 0x9c83, 0x441c, 0xa0,
0x79, 0x0d, 0xe4, 0xcf, 0x00, 0x9c, 0x7b); | | DEFINE_GUID( GUID_PROCESSOR_PERF_LATENCY_HINT, 0x0822df31, 0x9c83, 0x441c, 0xa0,
0x79, 0x0d, 0xe4, 0xcf, 0x00, 0x9c, 0x7b); |
| | |
| // | | // |
| // Specifies the processor performance state in response to latency sensitivity
hints. | | // Specifies the processor performance state in response to latency sensitivity
hints. |
| // | | // |
| // {619b7505-003b-4e82-b7a6-4dd29c300971} | | // {619b7505-003b-4e82-b7a6-4dd29c300971} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_PERF_LATENCY_HINT_PERF, 0x619b7505, 0x3b, 0x4e82, 0x
b7, 0xa6, 0x4d, 0xd2, 0x9c, 0x30, 0x9, 0x71); | | DEFINE_GUID( GUID_PROCESSOR_PERF_LATENCY_HINT_PERF, 0x619b7505, 0x3b, 0x4e82, 0x
b7, 0xa6, 0x4d, 0xd2, 0x9c, 0x30, 0x9, 0x71); |
| | |
| // | | // |
|
| | // Specifies the processor performance state in response to latency sensitivity |
| | // hints for Processor Power Efficiency Class 1. |
| | // |
| | // {619b7505-003b-4e82-b7a6-4dd29c300972} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_PERF_LATENCY_HINT_PERF_1, 0x619b7505, 0x3b, 0x4e82, |
| | 0xb7, 0xa6, 0x4d, 0xd2, 0x9c, 0x30, 0x9, 0x72); |
| | |
| | // |
| | // Specifies the minimum unparked processors when a latency hint is active |
| | // (in a percentage). |
| | // |
| | // {616cdaa5-695e-4545-97ad-97dc2d1bdd88} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_LATENCY_HINT_MIN_UNPARK, 0x616cdaa5, 0x695e, 0x4545, |
| | 0x97, 0xad, 0x97, 0xdc, 0x2d, 0x1b, 0xdd, 0x88); |
| | |
| | // |
| | // Specifies the minimum unparked processors when a latency hint is active |
| | // for Processor Power Efficiency Class 1 (in a percentage). |
| | // |
| | // {616cdaa5-695e-4545-97ad-97dc2d1bdd89} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_LATENCY_HINT_MIN_UNPARK_1, 0x616cdaa5, 0x695e, 0x454 |
| | 5, 0x97, 0xad, 0x97, 0xdc, 0x2d, 0x1b, 0xdd, 0x89); |
| | |
| | // |
| // Specifies whether the core parking engine should distribute processor | | // Specifies whether the core parking engine should distribute processor |
| // utility. | | // utility. |
| // | | // |
| // {e0007330-f589-42ed-a401-5ddb10e785d3} | | // {e0007330-f589-42ed-a401-5ddb10e785d3} |
| // | | // |
| DEFINE_GUID( GUID_PROCESSOR_DISTRIBUTE_UTILITY, 0xe0007330, 0xf589, 0x42ed, 0xa4
, 0x01, 0x5d, 0xdb, 0x10, 0xe7, 0x85, 0xd3); | | DEFINE_GUID( GUID_PROCESSOR_DISTRIBUTE_UTILITY, 0xe0007330, 0xf589, 0x42ed, 0xa4
, 0x01, 0x5d, 0xdb, 0x10, 0xe7, 0x85, 0xd3); |
| | |
| // | | // |
|
| | // GUIDS to control PPM settings on computer system with more than one |
| | // Processor Power Efficiency Classes (heterogeneous system). |
| | // ----------------- |
| | // |
| | // Specifies the current active heterogeneous policy. |
| | // |
| | // {7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_HETEROGENEOUS_POLICY, 0x7f2f5cfa, 0xf10c, 0x4823, 0x |
| | b5, 0xe1, 0xe9, 0x3a, 0xe8, 0x5f, 0x46, 0xb5); |
| | |
| | // |
| | // Specifies the number of perf check cycles required to decrease the number of |
| | // Processor Power Efficiency Class 1 processors. |
| | // |
| | // {7f2492b6-60b1-45e5-ae55-773f8cd5caec} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_HETERO_DECREASE_TIME, 0x7f2492b6, 0x60b1, 0x45e5, 0x |
| | ae, 0x55, 0x77, 0x3f, 0x8c, 0xd5, 0xca, 0xec); |
| | |
| | // |
| | // Specifies the number of perf check cycles required to increase the number of |
| | // Processor Power Efficiency Class 1 processors. |
| | // |
| | // {4009efa7-e72d-4cba-9edf-91084ea8cbc3} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_HETERO_INCREASE_TIME, 0x4009efa7, 0xe72d, 0x4cba, 0x |
| | 9e, 0xdf, 0x91, 0x08, 0x4e, 0xa8, 0xcb, 0xc3); |
| | |
| | // |
| | // Specifies the performance level (in units of Processor Power Efficiency |
| | // Class 0 processor performance) at which the number of Processor Power |
| | // Efficiency Class 1 processors is decreased. |
| | // |
| | // {f8861c27-95e7-475c-865b-13c0cb3f9d6b} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_HETERO_DECREASE_THRESHOLD, 0xf8861c27, 0x95e7, 0x475 |
| | c, 0x86, 0x5b, 0x13, 0xc0, 0xcb, 0x3f, 0x9d, 0x6b); |
| | |
| | // |
| | // Specifies the performance level (in units of Processor Power Efficiency |
| | // Class 0 processor performance) at which the number of Processor Power |
| | // Efficiency Class 1 processors is increased. |
| | // |
| | // {b000397d-9b0b-483d-98c9-692a6060cfbf} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_HETERO_INCREASE_THRESHOLD, 0xb000397d, 0x9b0b, 0x483 |
| | d, 0x98, 0xc9, 0x69, 0x2a, 0x60, 0x60, 0xcf, 0xbf); |
| | |
| | // |
| | // Specifies the performance target floor of a Processor Power Efficiency |
| | // Class 0 processor when the system unparks Processor Power Efficiency Class 1 |
| | // processor(s). |
| | // |
| | // {fddc842b-8364-4edc-94cf-c17f60de1c80} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_CLASS0_FLOOR_PERF, 0xfddc842b, 0x8364, 0x4edc, 0x94, |
| | 0xcf, 0xc1, 0x7f, 0x60, 0xde, 0x1c, 0x80); |
| | |
| | // |
| | // Specifies the initial performance target of a Processor Power Efficiency |
| | // Class 1 processor when the system makes a transition up from zero Processor |
| | // Power Efficiency Class 1 processors. |
| | // |
| | // {1facfc65-a930-4bc5-9f38-504ec097bbc0} |
| | // |
| | DEFINE_GUID( GUID_PROCESSOR_CLASS1_INITIAL_PERF, 0x1facfc65, 0xa930, 0x4bc5, 0x9 |
| | f, 0x38, 0x50, 0x4e, 0xc0, 0x97, 0xbb, 0xc0); |
| | |
| | // |
| // Specifies active vs passive cooling. Although not directly related to | | // Specifies active vs passive cooling. Although not directly related to |
| // processor settings, it is the processor that gets throttled if we're doing | | // processor settings, it is the processor that gets throttled if we're doing |
| // passive cooling, so it is fairly strongly related. | | // passive cooling, so it is fairly strongly related. |
| // {94D3A615-A899-4AC5-AE2B-E4D8F634367F} | | // {94D3A615-A899-4AC5-AE2B-E4D8F634367F} |
| // | | // |
| DEFINE_GUID( GUID_SYSTEM_COOLING_POLICY, 0x94D3A615, 0xA899, 0x4AC5, 0xAE, 0x2B,
0xE4, 0xD8, 0xF6, 0x34, 0x36, 0x7F); | | DEFINE_GUID( GUID_SYSTEM_COOLING_POLICY, 0x94D3A615, 0xA899, 0x4AC5, 0xAE, 0x2B,
0xE4, 0xD8, 0xF6, 0x34, 0x36, 0x7F); |
| | |
| // Lock Console on Wake | | // Lock Console on Wake |
| // -------------------- | | // -------------------- |
| // | | // |
| | |
| skipping to change at line 13545 | | skipping to change at line 13920 |
| // Specifies whether to use the "performance" or "conservative" timeouts for | | // Specifies whether to use the "performance" or "conservative" timeouts for |
| // device idle management. | | // device idle management. |
| // | | // |
| // 4faab71a-92e5-4726-b531-224559672d19 | | // 4faab71a-92e5-4726-b531-224559672d19 |
| // | | // |
| DEFINE_GUID( GUID_DEVICE_IDLE_POLICY, 0x4faab71a, 0x92e5, 0x4726, 0xb5, 0x31, 0x
22, 0x45, 0x59, 0x67, 0x2d, 0x19 ); | | DEFINE_GUID( GUID_DEVICE_IDLE_POLICY, 0x4faab71a, 0x92e5, 0x4726, 0xb5, 0x31, 0x
22, 0x45, 0x59, 0x67, 0x2d, 0x19 ); |
| | |
| #define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0 | | #define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0 |
| #define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1 | | #define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1 |
| | |
|
| | // |
| | // Specifies Disconnected Standby preference for WiFi devices. |
| | // |
| | // F15576E8-98B7-4186-B944-EAFA664402D9 |
| | DEFINE_GUID( GUID_WIFI_IN_STANDBY, 0xF15576E8, 0x98B7, 0x4186, 0xB9, 0x44, 0xEA, |
| | 0xFA, 0x66, 0x44, 0x02, 0xD9 ); |
| | |
| | #define POWER_WIFI_IN_STANDBY_DISABLED 0 |
| | #define POWER_WIFI_IN_STANDBY_ENABLED 1 |
| | |
| // AC/DC power source | | // AC/DC power source |
| // ------------------ | | // ------------------ |
| // | | // |
| | |
| // Specifies the power source for the system. consumers may register for | | // Specifies the power source for the system. consumers may register for |
| // notification when the power source changes and will be notified with | | // notification when the power source changes and will be notified with |
| // one of 3 values: | | // one of 3 values: |
| // 0 - Indicates the system is being powered by an AC power source. | | // 0 - Indicates the system is being powered by an AC power source. |
| // 1 - Indicates the system is being powered by a DC power source. | | // 1 - Indicates the system is being powered by a DC power source. |
| // 2 - Indicates the system is being powered by a short-term DC power | | // 2 - Indicates the system is being powered by a short-term DC power |
| | |
| skipping to change at line 13596 | | skipping to change at line 13980 |
| // | | // |
| // Once registered, the consumer can expect to be notified as the battery | | // Once registered, the consumer can expect to be notified as the battery |
| // life percentage changes. | | // life percentage changes. |
| // | | // |
| // The consumer will recieve a value between 0 and 100 (inclusive) which | | // The consumer will recieve a value between 0 and 100 (inclusive) which |
| // indicates percent battery life remaining. | | // indicates percent battery life remaining. |
| // | | // |
| // { A7AD8041-B45A-4CAE-87A3-EECBB468A9E1 } | | // { A7AD8041-B45A-4CAE-87A3-EECBB468A9E1 } |
| DEFINE_GUID( GUID_BATTERY_PERCENTAGE_REMAINING, 0xA7AD8041, 0xB45A, 0x4CAE, 0x87
, 0xA3, 0xEE, 0xCB, 0xB4, 0x68, 0xA9, 0xE1 ); | | DEFINE_GUID( GUID_BATTERY_PERCENTAGE_REMAINING, 0xA7AD8041, 0xB45A, 0x4CAE, 0x87
, 0xA3, 0xEE, 0xCB, 0xB4, 0x68, 0xA9, 0xE1 ); |
| | |
|
| | // Specifies change in number of batteries present on the system. The consumer |
| | // may register for notification in order to track change in number of batteries |
| | // available on a system. |
| | // |
| | // Once registered, the consumer can expect to be notified whenever the |
| | // batteries are added or removed from the system. |
| | // |
| | // The consumer will recieve a value indicating number of batteries currently |
| | // present on the system. |
| | // |
| | // {7D263F15-FCA4-49E5-854B-A9F2BFBD5C24} |
| | DEFINE_GUID( GUID_BATTERY_COUNT, 0x7d263f15, 0xfca4, 0x49e5, 0x85, 0x4b, 0xa9, 0 |
| | xf2, 0xbf, 0xbd, 0x5c, 0x24 ); |
| | |
| // | | // |
| // Global notification indicating to listeners user activity/presence accross | | // Global notification indicating to listeners user activity/presence accross |
| // all sessions in the system (Present, NotPresent, Inactive) | | // all sessions in the system (Present, NotPresent, Inactive) |
| // | | // |
| // {786E8A1D-B427-4344-9207-09E70BDCBEA9} | | // {786E8A1D-B427-4344-9207-09E70BDCBEA9} |
| DEFINE_GUID( GUID_GLOBAL_USER_PRESENCE, 0x786e8a1d, 0xb427, 0x4344, 0x92, 0x7, 0
x9, 0xe7, 0xb, 0xdc, 0xbe, 0xa9 ); | | DEFINE_GUID( GUID_GLOBAL_USER_PRESENCE, 0x786e8a1d, 0xb427, 0x4344, 0x92, 0x7, 0
x9, 0xe7, 0xb, 0xdc, 0xbe, 0xa9 ); |
| | |
| // | | // |
| // Session specific notification indicating to listeners whether or not the disp
lay | | // Session specific notification indicating to listeners whether or not the disp
lay |
| // related to the given session is on/off/dim | | // related to the given session is on/off/dim |
| | |
| skipping to change at line 13715 | | skipping to change at line 14112 |
| #define POWER_SYSTEM_MAXIMUM 7 | | #define POWER_SYSTEM_MAXIMUM 7 |
| | |
| typedef enum { | | typedef enum { |
| PowerActionNone = 0, | | PowerActionNone = 0, |
| PowerActionReserved, | | PowerActionReserved, |
| PowerActionSleep, | | PowerActionSleep, |
| PowerActionHibernate, | | PowerActionHibernate, |
| PowerActionShutdown, | | PowerActionShutdown, |
| PowerActionShutdownReset, | | PowerActionShutdownReset, |
| PowerActionShutdownOff, | | PowerActionShutdownOff, |
|
| PowerActionWarmEject | | PowerActionWarmEject, |
| | PowerActionDisplayOff |
| } POWER_ACTION, *PPOWER_ACTION; | | } POWER_ACTION, *PPOWER_ACTION; |
| | |
| typedef enum _DEVICE_POWER_STATE { | | typedef enum _DEVICE_POWER_STATE { |
| PowerDeviceUnspecified = 0, | | PowerDeviceUnspecified = 0, |
| PowerDeviceD0, | | PowerDeviceD0, |
| PowerDeviceD1, | | PowerDeviceD1, |
| PowerDeviceD2, | | PowerDeviceD2, |
| PowerDeviceD3, | | PowerDeviceD3, |
| PowerDeviceMaximum | | PowerDeviceMaximum |
| } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; | | } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; |
| | |
| skipping to change at line 13754 | | skipping to change at line 14152 |
| #define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040) | | #define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040) |
| #define ES_CONTINUOUS ((DWORD)0x80000000) | | #define ES_CONTINUOUS ((DWORD)0x80000000) |
| | |
| typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE; | | typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE; |
| | |
| typedef enum { | | typedef enum { |
| LT_DONT_CARE, | | LT_DONT_CARE, |
| LT_LOWEST_LATENCY | | LT_LOWEST_LATENCY |
| } LATENCY_TIME; | | } LATENCY_TIME; |
| | |
|
| #define DIAGNOSTIC_REASON_VERSION 0 | | #define DIAGNOSTIC_REASON_VERSION 0 |
| | |
|
| #define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001 | | #define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001 |
| #define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002 | | #define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002 |
| #define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 | | #define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000 |
| #define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003) | | #define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000007) |
| | |
| // | | // |
| // Defines for power request APIs | | // Defines for power request APIs |
| // | | // |
| | |
|
| #define POWER_REQUEST_CONTEXT_VERSION 0 | | #define POWER_REQUEST_CONTEXT_VERSION DIAGNOSTIC_REASON_VERSION |
| | |
|
| #define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001 | | #define POWER_REQUEST_CONTEXT_SIMPLE_STRING DIAGNOSTIC_REASON_SIMPLE_STR |
| #define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002 | | ING |
| | #define POWER_REQUEST_CONTEXT_DETAILED_STRING DIAGNOSTIC_REASON_DETAILED_S |
| | TRING |
| | |
| typedef enum _POWER_REQUEST_TYPE { | | typedef enum _POWER_REQUEST_TYPE { |
| PowerRequestDisplayRequired, | | PowerRequestDisplayRequired, |
| PowerRequestSystemRequired, | | PowerRequestSystemRequired, |
| PowerRequestAwayModeRequired, | | PowerRequestAwayModeRequired, |
| PowerRequestExecutionRequired | | PowerRequestExecutionRequired |
| } POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE; | | } POWER_REQUEST_TYPE, *PPOWER_REQUEST_TYPE; |
| | |
| // end_ntminiport | | // end_ntminiport |
| | |
| | |
| skipping to change at line 13897 | | skipping to change at line 14295 |
| PlatformRole, | | PlatformRole, |
| LastResumePerformance, | | LastResumePerformance, |
| DisplayBurst, | | DisplayBurst, |
| ExitLatencySamplingPercentage, | | ExitLatencySamplingPercentage, |
| RegisterSpmPowerSettings, | | RegisterSpmPowerSettings, |
| PlatformIdleStates, | | PlatformIdleStates, |
| ProcessorIdleVeto, | | ProcessorIdleVeto, |
| PlatformIdleVeto, | | PlatformIdleVeto, |
| SystemBatteryStatePrecise, | | SystemBatteryStatePrecise, |
| ThermalEvent, | | ThermalEvent, |
|
| | PowerRequestActionInternal, |
| | BatteryDeviceState, |
| | PowerInformationInternal, |
| | ThermalStandby, |
| | SystemHiberFileType, |
| PowerInformationLevelMaximum | | PowerInformationLevelMaximum |
| } POWER_INFORMATION_LEVEL; | | } POWER_INFORMATION_LEVEL; |
| | |
| // | | // |
| // User Presence Values | | // User Presence Values |
| // | | // |
| | |
| typedef enum { | | typedef enum { |
| UserNotPresent = 0, | | UserNotPresent = 0, |
| UserPresent = 1, | | UserPresent = 1, |
| UserUnknown = 0xff | | UserUnknown = 0xff |
| } POWER_USER_PRESENCE_TYPE, *PPOWER_USER_PRESENCE_TYPE; | | } POWER_USER_PRESENCE_TYPE, *PPOWER_USER_PRESENCE_TYPE; |
| | |
| typedef struct _POWER_USER_PRESENCE { | | typedef struct _POWER_USER_PRESENCE { |
|
| POWER_USER_PRESENCE_TYPE UserPresence; | | POWER_USER_PRESENCE_TYPE UserPresence; |
| } POWER_USER_PRESENCE, *PPOWER_USER_PRESENCE; | | } POWER_USER_PRESENCE, *PPOWER_USER_PRESENCE; |
| | |
| // | | // |
| // Session Connect/Disconnect | | // Session Connect/Disconnect |
| // | | // |
| typedef struct _POWER_SESSION_CONNECT { | | typedef struct _POWER_SESSION_CONNECT { |
| BOOLEAN Connected; // TRUE - connected, FALSE - disconnected | | BOOLEAN Connected; // TRUE - connected, FALSE - disconnected |
| BOOLEAN Console; // TRUE - console, FALSE - TS (not used for Connected =
FALSE) | | BOOLEAN Console; // TRUE - console, FALSE - TS (not used for Connected =
FALSE) |
| } POWER_SESSION_CONNECT, *PPOWER_SESSION_CONNECT; | | } POWER_SESSION_CONNECT, *PPOWER_SESSION_CONNECT; |
| | |
| | |
| skipping to change at line 13973 | | skipping to change at line 14376 |
| MonitorRequestReasonPoSetSystemState, | | MonitorRequestReasonPoSetSystemState, |
| MonitorRequestReasonSetThreadExecutionState, | | MonitorRequestReasonSetThreadExecutionState, |
| MonitorRequestReasonFullWake, | | MonitorRequestReasonFullWake, |
| MonitorRequestReasonSessionUnlock, | | MonitorRequestReasonSessionUnlock, |
| MonitorRequestReasonScreenOffRequest, | | MonitorRequestReasonScreenOffRequest, |
| MonitorRequestReasonIdleTimeout, | | MonitorRequestReasonIdleTimeout, |
| MonitorRequestReasonPolicyChange, | | MonitorRequestReasonPolicyChange, |
| MonitorRequestReasonSleepButton, | | MonitorRequestReasonSleepButton, |
| MonitorRequestReasonLid, | | MonitorRequestReasonLid, |
| MonitorRequestReasonBatteryCountChange, | | MonitorRequestReasonBatteryCountChange, |
|
| | MonitorRequestReasonGracePeriod, |
| | MonitorRequestReasonPnP, |
| | MonitorRequestReasonDP, |
| | MonitorRequestReasonSxTransition, |
| | MonitorRequestReasonSystemIdle, |
| | MonitorRequestReasonNearProximity, |
| | MonitorRequestReasonThermalStandby, |
| | MonitorRequestReasonResumePdc, |
| | MonitorRequestReasonResumeS4, |
| MonitorRequestReasonMax | | MonitorRequestReasonMax |
| } POWER_MONITOR_REQUEST_REASON; | | } POWER_MONITOR_REQUEST_REASON; |
| | |
| // | | // |
| // Monitor invocation | | // Monitor invocation |
| // | | // |
| typedef struct _POWER_MONITOR_INVOCATION { | | typedef struct _POWER_MONITOR_INVOCATION { |
| BOOLEAN On; | | BOOLEAN On; |
| BOOLEAN Console; | | BOOLEAN Console; |
| POWER_MONITOR_REQUEST_REASON RequestReason; | | POWER_MONITOR_REQUEST_REASON RequestReason; |
| | |
| skipping to change at line 14642 | | skipping to change at line 15054 |
| | |
| // video policies | | // video policies |
| DWORD MinVideoTimeout; | | DWORD MinVideoTimeout; |
| DWORD MaxVideoTimeout; | | DWORD MaxVideoTimeout; |
| | |
| // disk policies | | // disk policies |
| DWORD MinSpindownTimeout; | | DWORD MinSpindownTimeout; |
| DWORD MaxSpindownTimeout; | | DWORD MaxSpindownTimeout; |
| } ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY; | | } ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY; |
| | |
|
| | typedef enum _HIBERFILE_BUCKET_SIZE { |
| | HiberFileBucket1GB = 0, |
| | HiberFileBucket2GB, |
| | HiberFileBucket4GB, |
| | HiberFileBucket8GB, |
| | HiberFileBucket16GB, |
| | HiberFileBucket32GB, |
| | HiberFileBucketUnlimited, |
| | HiberFileBucketMax |
| | } HIBERFILE_BUCKET_SIZE, *PHIBERFILE_BUCKET_SIZE; |
| | |
| | #define HIBERFILE_TYPE_NONE 0x00 |
| | #define HIBERFILE_TYPE_REDUCED 0x01 |
| | #define HIBERFILE_TYPE_FULL 0x02 |
| | #define HIBERFILE_TYPE_MAX 0x03 |
| | |
| | typedef struct _HIBERFILE_BUCKET { |
| | DWORD64 MaxPhysicalMemory; |
| | DWORD PhysicalMemoryPercent[HIBERFILE_TYPE_MAX]; |
| | } HIBERFILE_BUCKET, *PHIBERFILE_BUCKET; |
| | |
| typedef struct { | | typedef struct { |
| // Misc supported system features | | // Misc supported system features |
| BOOLEAN PowerButtonPresent; | | BOOLEAN PowerButtonPresent; |
| BOOLEAN SleepButtonPresent; | | BOOLEAN SleepButtonPresent; |
| BOOLEAN LidPresent; | | BOOLEAN LidPresent; |
| BOOLEAN SystemS1; | | BOOLEAN SystemS1; |
| BOOLEAN SystemS2; | | BOOLEAN SystemS2; |
| BOOLEAN SystemS3; | | BOOLEAN SystemS3; |
| BOOLEAN SystemS4; // hibernate | | BOOLEAN SystemS4; // hibernate |
| BOOLEAN SystemS5; // off | | BOOLEAN SystemS5; // off |
| | |
| skipping to change at line 14676 | | skipping to change at line 15109 |
| #else | | #else |
| BYTE ProcessorMaxThrottle; | | BYTE ProcessorMaxThrottle; |
| BOOLEAN FastSystemS4; | | BOOLEAN FastSystemS4; |
| BOOLEAN Hiberboot; | | BOOLEAN Hiberboot; |
| BOOLEAN WakeAlarmPresent; | | BOOLEAN WakeAlarmPresent; |
| BOOLEAN AoAc; | | BOOLEAN AoAc; |
| #endif // (NTDDI_VERSION < NTDDI_WINXP) | | #endif // (NTDDI_VERSION < NTDDI_WINXP) |
| | |
| // Disk | | // Disk |
| BOOLEAN DiskSpinDown; | | BOOLEAN DiskSpinDown; |
|
| | |
| | #if (NTDDI_VERSION < NTDDI_WINTHRESHOLD) |
| BYTE spare3[8]; | | BYTE spare3[8]; |
|
| | # else |
| | // HiberFile |
| | BYTE HiberFileType; |
| | BOOLEAN AoAcConnectivitySupported; |
| | BYTE spare3[6]; |
| | #endif // (NTDDI_VERSION < NTDDI_WINTHRESHOLD) |
| | |
| // System Battery | | // System Battery |
| BOOLEAN SystemBatteriesPresent; | | BOOLEAN SystemBatteriesPresent; |
| BOOLEAN BatteriesAreShortTerm; | | BOOLEAN BatteriesAreShortTerm; |
| BATTERY_REPORTING_SCALE BatteryScale[3]; | | BATTERY_REPORTING_SCALE BatteryScale[3]; |
| | |
| // Wake | | // Wake |
| SYSTEM_POWER_STATE AcOnLineWake; | | SYSTEM_POWER_STATE AcOnLineWake; |
| SYSTEM_POWER_STATE SoftLidWake; | | SYSTEM_POWER_STATE SoftLidWake; |
| SYSTEM_POWER_STATE RtcWake; | | SYSTEM_POWER_STATE RtcWake; |
| | |
| skipping to change at line 14909 | | skipping to change at line 15350 |
| #define IMAGE_FILE_MACHINE_MIPS16 0x0266 // MIPS | | #define IMAGE_FILE_MACHINE_MIPS16 0x0266 // MIPS |
| #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 // ALPHA64 | | #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 // ALPHA64 |
| #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 // MIPS | | #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 // MIPS |
| #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 // MIPS | | #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 // MIPS |
| #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 | | #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 |
| #define IMAGE_FILE_MACHINE_TRICORE 0x0520 // Infineon | | #define IMAGE_FILE_MACHINE_TRICORE 0x0520 // Infineon |
| #define IMAGE_FILE_MACHINE_CEF 0x0CEF | | #define IMAGE_FILE_MACHINE_CEF 0x0CEF |
| #define IMAGE_FILE_MACHINE_EBC 0x0EBC // EFI Byte Code | | #define IMAGE_FILE_MACHINE_EBC 0x0EBC // EFI Byte Code |
| #define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8) | | #define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8) |
| #define IMAGE_FILE_MACHINE_M32R 0x9041 // M32R little-endian | | #define IMAGE_FILE_MACHINE_M32R 0x9041 // M32R little-endian |
|
| | #define IMAGE_FILE_MACHINE_ARM64 0xAA64 // ARM64 Little-Endian |
| #define IMAGE_FILE_MACHINE_CEE 0xC0EE | | #define IMAGE_FILE_MACHINE_CEE 0xC0EE |
| | |
| // | | // |
| // Directory format. | | // Directory format. |
| // | | // |
| | |
| typedef struct _IMAGE_DATA_DIRECTORY { | | typedef struct _IMAGE_DATA_DIRECTORY { |
| DWORD VirtualAddress; | | DWORD VirtualAddress; |
| DWORD Size; | | DWORD Size; |
| } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; | | } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; |
| | |
| skipping to change at line 15081 | | skipping to change at line 15523 |
| #define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 chara
cter subsystem. | | #define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 chara
cter subsystem. |
| #define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image runs in the Posix char
acter subsystem. | | #define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image runs in the Posix char
acter subsystem. |
| #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 // image is a native Win9x driv
er. | | #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 // image is a native Win9x driv
er. |
| #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 // Image runs in the Windows CE
subsystem. | | #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 // Image runs in the Windows CE
subsystem. |
| #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 // | | #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 // |
| #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 // | | #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 // |
| #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 // | | #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 // |
| #define IMAGE_SUBSYSTEM_EFI_ROM 13 | | #define IMAGE_SUBSYSTEM_EFI_ROM 13 |
| #define IMAGE_SUBSYSTEM_XBOX 14 | | #define IMAGE_SUBSYSTEM_XBOX 14 |
| #define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16 | | #define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16 |
|
| | #define IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG 17 |
| | |
| // DllCharacteristics Entries | | // DllCharacteristics Entries |
| | |
| // IMAGE_LIBRARY_PROCESS_INIT 0x0001 // Reserved. | | // IMAGE_LIBRARY_PROCESS_INIT 0x0001 // Reserved. |
| // IMAGE_LIBRARY_PROCESS_TERM 0x0002 // Reserved. | | // IMAGE_LIBRARY_PROCESS_TERM 0x0002 // Reserved. |
| // IMAGE_LIBRARY_THREAD_INIT 0x0004 // Reserved. | | // IMAGE_LIBRARY_THREAD_INIT 0x0004 // Reserved. |
| // IMAGE_LIBRARY_THREAD_TERM 0x0008 // Reserved. | | // IMAGE_LIBRARY_THREAD_TERM 0x0008 // Reserved. |
| #define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020 // Image can handle
a high entropy 64-bit virtual address space. | | #define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020 // Image can handle
a high entropy 64-bit virtual address space. |
| #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 // DLL can move. | | #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 // DLL can move. |
| #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 // Code Integrity
Image | | #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 // Code Integrity
Image |
| | |
| skipping to change at line 15496 | | skipping to change at line 15939 |
| DWORD CheckSum; // checksum for communal | | DWORD CheckSum; // checksum for communal |
| SHORT Number; // section number to associate w
ith | | SHORT Number; // section number to associate w
ith |
| BYTE Selection; // communal selection type | | BYTE Selection; // communal selection type |
| BYTE bReserved; | | BYTE bReserved; |
| SHORT HighNumber; // high bits of the section numb
er | | SHORT HighNumber; // high bits of the section numb
er |
| BYTE rgbReserved[2]; | | BYTE rgbReserved[2]; |
| } Section; | | } Section; |
| struct{ | | struct{ |
| IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; | | IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; |
| BYTE rgbReserved[2]; | | BYTE rgbReserved[2]; |
|
| }; | | } DUMMYSTRUCTNAME; |
| struct { | | struct { |
| DWORD crc; | | DWORD crc; |
| BYTE rgbReserved[16]; | | BYTE rgbReserved[16]; |
| } CRC; | | } CRC; |
| } IMAGE_AUX_SYMBOL_EX; | | } IMAGE_AUX_SYMBOL_EX; |
| typedef IMAGE_AUX_SYMBOL_EX UNALIGNED *PIMAGE_AUX_SYMBOL_EX; | | typedef IMAGE_AUX_SYMBOL_EX UNALIGNED *PIMAGE_AUX_SYMBOL_EX; |
| | |
| typedef enum IMAGE_AUX_SYMBOL_TYPE { | | typedef enum IMAGE_AUX_SYMBOL_TYPE { |
| IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1, | | IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1, |
| } IMAGE_AUX_SYMBOL_TYPE; | | } IMAGE_AUX_SYMBOL_TYPE; |
| | |
| skipping to change at line 15708 | | skipping to change at line 16151 |
| #define IMAGE_REL_AM_ADDR32NB 0x0002 | | #define IMAGE_REL_AM_ADDR32NB 0x0002 |
| #define IMAGE_REL_AM_CALL32 0x0003 | | #define IMAGE_REL_AM_CALL32 0x0003 |
| #define IMAGE_REL_AM_FUNCINFO 0x0004 | | #define IMAGE_REL_AM_FUNCINFO 0x0004 |
| #define IMAGE_REL_AM_REL32_1 0x0005 | | #define IMAGE_REL_AM_REL32_1 0x0005 |
| #define IMAGE_REL_AM_REL32_2 0x0006 | | #define IMAGE_REL_AM_REL32_2 0x0006 |
| #define IMAGE_REL_AM_SECREL 0x0007 | | #define IMAGE_REL_AM_SECREL 0x0007 |
| #define IMAGE_REL_AM_SECTION 0x0008 | | #define IMAGE_REL_AM_SECTION 0x0008 |
| #define IMAGE_REL_AM_TOKEN 0x0009 | | #define IMAGE_REL_AM_TOKEN 0x0009 |
| | |
| // | | // |
|
| | // ARM64 relocations types. |
| | // |
| | |
| | #define IMAGE_REL_ARM64_ABSOLUTE 0x0000 // No relocation required |
| | #define IMAGE_REL_ARM64_ADDR32 0x0001 // 32 bit address. Review! do we |
| | need it? |
| | #define IMAGE_REL_ARM64_ADDR32NB 0x0002 // 32 bit address w/o image base |
| | (RVA: for Data/PData/XData) |
| | #define IMAGE_REL_ARM64_BRANCH26 0x0003 // 26 bit offset << 2 & sign ext |
| | . for B & BL |
| | #define IMAGE_REL_ARM64_PAGEBASE_REL21 0x0004 // ADRP |
| | #define IMAGE_REL_ARM64_REL21 0x0005 // ADR |
| | #define IMAGE_REL_ARM64_PAGEOFFSET_12A 0x0006 // ADD/ADDS (immediate) with zer |
| | o shift, for page offset |
| | #define IMAGE_REL_ARM64_PAGEOFFSET_12L 0x0007 // LDR (indexed, unsigned immedi |
| | ate), for page offset |
| | #define IMAGE_REL_ARM64_SECREL 0x0008 // Offset within section |
| | #define IMAGE_REL_ARM64_SECREL_LOW12A 0x0009 // ADD/ADDS (immediate) with zer |
| | o shift, for bit 0:11 of section offset |
| | #define IMAGE_REL_ARM64_SECREL_HIGH12A 0x000A // ADD/ADDS (immediate) with zer |
| | o shift, for bit 12:23 of section offset |
| | #define IMAGE_REL_ARM64_SECREL_LOW12L 0x000B // LDR (indexed, unsigned immedi |
| | ate), for bit 0:11 of section offset |
| | #define IMAGE_REL_ARM64_TOKEN 0x000C |
| | #define IMAGE_REL_ARM64_SECTION 0x000D // Section table index |
| | #define IMAGE_REL_ARM64_ADDR64 0x000E // 64 bit address |
| | |
| | // |
| // x64 relocations | | // x64 relocations |
| // | | // |
| #define IMAGE_REL_AMD64_ABSOLUTE 0x0000 // Reference is absolute, no rel
ocation is necessary | | #define IMAGE_REL_AMD64_ABSOLUTE 0x0000 // Reference is absolute, no rel
ocation is necessary |
| #define IMAGE_REL_AMD64_ADDR64 0x0001 // 64-bit address (VA). | | #define IMAGE_REL_AMD64_ADDR64 0x0001 // 64-bit address (VA). |
| #define IMAGE_REL_AMD64_ADDR32 0x0002 // 32-bit address (VA). | | #define IMAGE_REL_AMD64_ADDR32 0x0002 // 32-bit address (VA). |
| #define IMAGE_REL_AMD64_ADDR32NB 0x0003 // 32-bit address w/o image base
(RVA). | | #define IMAGE_REL_AMD64_ADDR32NB 0x0003 // 32-bit address w/o image base
(RVA). |
| #define IMAGE_REL_AMD64_REL32 0x0004 // 32-bit relative address from
byte following reloc | | #define IMAGE_REL_AMD64_REL32 0x0004 // 32-bit relative address from
byte following reloc |
| #define IMAGE_REL_AMD64_REL32_1 0x0005 // 32-bit relative address from
byte distance 1 from reloc | | #define IMAGE_REL_AMD64_REL32_1 0x0005 // 32-bit relative address from
byte distance 1 from reloc |
| #define IMAGE_REL_AMD64_REL32_2 0x0006 // 32-bit relative address from
byte distance 2 from reloc | | #define IMAGE_REL_AMD64_REL32_2 0x0006 // 32-bit relative address from
byte distance 2 from reloc |
| #define IMAGE_REL_AMD64_REL32_3 0x0007 // 32-bit relative address from
byte distance 3 from reloc | | #define IMAGE_REL_AMD64_REL32_3 0x0007 // 32-bit relative address from
byte distance 3 from reloc |
| | |
| skipping to change at line 16149 | | skipping to change at line 16612 |
| WORD OffsetModuleName; | | WORD OffsetModuleName; |
| WORD Reserved; | | WORD Reserved; |
| } IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF; | | } IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF; |
| | |
| typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR { | | typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR { |
| union { | | union { |
| DWORD AllAttributes; | | DWORD AllAttributes; |
| struct { | | struct { |
| DWORD RvaBased : 1; // Delay load version 2 | | DWORD RvaBased : 1; // Delay load version 2 |
| DWORD ReservedAttributes : 31; | | DWORD ReservedAttributes : 31; |
|
| }; | | } DUMMYSTRUCTNAME; |
| } Attributes; | | } Attributes; |
| | |
| DWORD DllNameRVA; // RVA to the name of the target lib
rary (NULL-terminate ASCII string) | | DWORD DllNameRVA; // RVA to the name of the target lib
rary (NULL-terminate ASCII string) |
| DWORD ModuleHandleRVA; // RVA to the HMODULE caching locati
on (PHMODULE) | | DWORD ModuleHandleRVA; // RVA to the HMODULE caching locati
on (PHMODULE) |
| DWORD ImportAddressTableRVA; // RVA to the start of the IAT (PIMA
GE_THUNK_DATA) | | DWORD ImportAddressTableRVA; // RVA to the start of the IAT (PIMA
GE_THUNK_DATA) |
| DWORD ImportNameTableRVA; // RVA to the start of the name tabl
e (PIMAGE_THUNK_DATA::AddressOfData) | | DWORD ImportNameTableRVA; // RVA to the start of the name tabl
e (PIMAGE_THUNK_DATA::AddressOfData) |
| DWORD BoundImportAddressTableRVA; // RVA to an optional bound IAT | | DWORD BoundImportAddressTableRVA; // RVA to an optional bound IAT |
| DWORD UnloadInformationTableRVA; // RVA to an optional unload info ta
ble | | DWORD UnloadInformationTableRVA; // RVA to an optional unload info ta
ble |
| DWORD TimeDateStamp; // 0 if not bound, | | DWORD TimeDateStamp; // 0 if not bound, |
| // Otherwise, date/time of the targe
t DLL | | // Otherwise, date/time of the targe
t DLL |
| | |
| skipping to change at line 16264 | | skipping to change at line 16727 |
| // | | // |
| | |
| typedef struct _IMAGE_RESOURCE_DATA_ENTRY { | | typedef struct _IMAGE_RESOURCE_DATA_ENTRY { |
| DWORD OffsetToData; | | DWORD OffsetToData; |
| DWORD Size; | | DWORD Size; |
| DWORD CodePage; | | DWORD CodePage; |
| DWORD Reserved; | | DWORD Reserved; |
| } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; | | } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; |
| | |
| // | | // |
|
| | // Code Integrity in loadconfig (CI) |
| | // |
| | |
| | typedef struct _IMAGE_LOAD_CONFIG_CODE_INTEGRITY { |
| | WORD Flags; // Flags to indicate if CI information is available, |
| | etc. |
| | WORD Catalog; // 0xFFFF means not available |
| | DWORD CatalogOffset; |
| | DWORD Reserved; // Additional bitmask to be defined later |
| | } IMAGE_LOAD_CONFIG_CODE_INTEGRITY, *PIMAGE_LOAD_CONFIG_CODE_INTEGRITY; |
| | |
| | // |
| // Load Configuration Directory Entry | | // Load Configuration Directory Entry |
| // | | // |
| | |
| typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 { | | typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 { |
| DWORD Size; | | DWORD Size; |
| DWORD TimeDateStamp; | | DWORD TimeDateStamp; |
| WORD MajorVersion; | | WORD MajorVersion; |
| WORD MinorVersion; | | WORD MinorVersion; |
| DWORD GlobalFlagsClear; | | DWORD GlobalFlagsClear; |
| DWORD GlobalFlagsSet; | | DWORD GlobalFlagsSet; |
| | |
| skipping to change at line 16289 | | skipping to change at line 16763 |
| DWORD VirtualMemoryThreshold; | | DWORD VirtualMemoryThreshold; |
| DWORD ProcessHeapFlags; | | DWORD ProcessHeapFlags; |
| DWORD ProcessAffinityMask; | | DWORD ProcessAffinityMask; |
| WORD CSDVersion; | | WORD CSDVersion; |
| WORD Reserved1; | | WORD Reserved1; |
| DWORD EditList; // VA | | DWORD EditList; // VA |
| DWORD SecurityCookie; // VA | | DWORD SecurityCookie; // VA |
| DWORD SEHandlerTable; // VA | | DWORD SEHandlerTable; // VA |
| DWORD SEHandlerCount; | | DWORD SEHandlerCount; |
| DWORD GuardCFCheckFunctionPointer; // VA | | DWORD GuardCFCheckFunctionPointer; // VA |
|
| DWORD Reserved2; | | DWORD GuardCFDispatchFunctionPointer; // VA |
| DWORD GuardCFFunctionTable; // VA | | DWORD GuardCFFunctionTable; // VA |
| DWORD GuardCFFunctionCount; | | DWORD GuardCFFunctionCount; |
| DWORD GuardFlags; | | DWORD GuardFlags; |
|
| | IMAGE_LOAD_CONFIG_CODE_INTEGRITY CodeIntegrity; |
| } IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32; | | } IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32; |
| | |
| typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64 { | | typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64 { |
| DWORD Size; | | DWORD Size; |
| DWORD TimeDateStamp; | | DWORD TimeDateStamp; |
| WORD MajorVersion; | | WORD MajorVersion; |
| WORD MinorVersion; | | WORD MinorVersion; |
| DWORD GlobalFlagsClear; | | DWORD GlobalFlagsClear; |
| DWORD GlobalFlagsSet; | | DWORD GlobalFlagsSet; |
| DWORD CriticalSectionDefaultTimeout; | | DWORD CriticalSectionDefaultTimeout; |
| ULONGLONG DeCommitFreeBlockThreshold; | | ULONGLONG DeCommitFreeBlockThreshold; |
| ULONGLONG DeCommitTotalFreeThreshold; | | ULONGLONG DeCommitTotalFreeThreshold; |
|
| ULONGLONG LockPrefixTable; // VA | | ULONGLONG LockPrefixTable; // VA |
| ULONGLONG MaximumAllocationSize; | | ULONGLONG MaximumAllocationSize; |
| ULONGLONG VirtualMemoryThreshold; | | ULONGLONG VirtualMemoryThreshold; |
| ULONGLONG ProcessAffinityMask; | | ULONGLONG ProcessAffinityMask; |
| DWORD ProcessHeapFlags; | | DWORD ProcessHeapFlags; |
| WORD CSDVersion; | | WORD CSDVersion; |
| WORD Reserved1; | | WORD Reserved1; |
|
| ULONGLONG EditList; // VA | | ULONGLONG EditList; // VA |
| ULONGLONG SecurityCookie; // VA | | ULONGLONG SecurityCookie; // VA |
| ULONGLONG SEHandlerTable; // VA | | ULONGLONG SEHandlerTable; // VA |
| ULONGLONG SEHandlerCount; | | ULONGLONG SEHandlerCount; |
|
| ULONGLONG GuardCFCheckFunctionPointer; // VA | | ULONGLONG GuardCFCheckFunctionPointer; // VA |
| ULONGLONG Reserved2; | | ULONGLONG GuardCFDispatchFunctionPointer; // VA |
| ULONGLONG GuardCFFunctionTable; // VA | | ULONGLONG GuardCFFunctionTable; // VA |
| ULONGLONG GuardCFFunctionCount; | | ULONGLONG GuardCFFunctionCount; |
| DWORD GuardFlags; | | DWORD GuardFlags; |
|
| | IMAGE_LOAD_CONFIG_CODE_INTEGRITY CodeIntegrity; |
| } IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64; | | } IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64; |
| | |
| #ifdef _WIN64 | | #ifdef _WIN64 |
| typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; | | typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; |
| typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; | | typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; |
| #else | | #else |
| typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; | | typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; |
| typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; | | typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; |
| #endif | | #endif |
| | |
|
| #define IMAGE_GUARD_CF_INSTRUMENTED 0x00000100 | | #define IMAGE_GUARD_CF_INSTRUMENTED 0x00000100 // Module perfo |
| #define IMAGE_GUARD_CFW_INSTRUMENTED 0x00000200 | | rms control flow integrity checks using system-supplied support |
| #define IMAGE_GUARD_CF_FUNCTION_TABLE_PRESENT 0x00000400 | | #define IMAGE_GUARD_CFW_INSTRUMENTED 0x00000200 // Module perfo |
| #define IMAGE_GUARD_SECURITY_COOKIE_UNUSED 0x00000800 | | rms control flow and write integrity checks |
| #define IMAGE_GUARD_PROTECT_DELAYLOAD_IAT 0x00001000 | | #define IMAGE_GUARD_CF_FUNCTION_TABLE_PRESENT 0x00000400 // Module conta |
| #define IMAGE_GUARD_DELAYLOAD_IAT_IN_ITS_OWN_SECTION 0x00002000 | | ins valid control flow target metadata |
| #define IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_MASK 0xF0000000 | | #define IMAGE_GUARD_SECURITY_COOKIE_UNUSED 0x00000800 // Module does |
| #define IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_SHIFT 28 | | not make use of the /GS security cookie |
| | #define IMAGE_GUARD_PROTECT_DELAYLOAD_IAT 0x00001000 // Module suppo |
| | rts read only delay load IAT |
| | #define IMAGE_GUARD_DELAYLOAD_IAT_IN_ITS_OWN_SECTION 0x00002000 // Delayload im |
| | port table in its own .didat section (with nothing else in it) that can be freel |
| | y reprotected |
| | #define IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_MASK 0xF0000000 // Stride of Gu |
| | ard CF function table encoded in these bits (additional count of bytes per eleme |
| | nt) |
| | #define IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_SHIFT 28 // Shift to rig |
| | ht-justify Guard CF function table stride |
| | |
| | // |
| | // GFIDS table entry flags. |
| | // |
| | |
| | #define IMAGE_GUARD_FLAG_FID_SUPPRESSED 0x01 // The containi |
| | ng GFIDS entry is suppressed |
| | |
| // | | // |
| // WIN CE Exception table format | | // WIN CE Exception table format |
| // | | // |
| | |
| // | | // |
| // Function table entry format. Function table is pointed to by the | | // Function table entry format. Function table is pointed to by the |
| // IMAGE_DIRECTORY_ENTRY_EXCEPTION directory entry. | | // IMAGE_DIRECTORY_ENTRY_EXCEPTION directory entry. |
| // | | // |
| | |
| | |
| skipping to change at line 16375 | | skipping to change at line 16857 |
| DWORD H : 1; | | DWORD H : 1; |
| DWORD Reg : 3; | | DWORD Reg : 3; |
| DWORD R : 1; | | DWORD R : 1; |
| DWORD L : 1; | | DWORD L : 1; |
| DWORD C : 1; | | DWORD C : 1; |
| DWORD StackAdjust : 10; | | DWORD StackAdjust : 10; |
| } DUMMYSTRUCTNAME; | | } DUMMYSTRUCTNAME; |
| } DUMMYUNIONNAME; | | } DUMMYUNIONNAME; |
| } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY, * PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY; | | } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY, * PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY; |
| | |
|
| | typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY { |
| | DWORD BeginAddress; |
| | union { |
| | DWORD UnwindData; |
| | struct { |
| | DWORD Flag : 2; |
| | DWORD FunctionLength : 11; |
| | DWORD RegF : 3; |
| | DWORD RegI : 4; |
| | DWORD H : 1; |
| | DWORD CR : 2; |
| | DWORD FrameSize : 9; |
| | } DUMMYSTRUCTNAME; |
| | } DUMMYUNIONNAME; |
| | } IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY, * PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY; |
| | |
| typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { | | typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { |
| ULONGLONG BeginAddress; | | ULONGLONG BeginAddress; |
| ULONGLONG EndAddress; | | ULONGLONG EndAddress; |
| ULONGLONG ExceptionHandler; | | ULONGLONG ExceptionHandler; |
| ULONGLONG HandlerData; | | ULONGLONG HandlerData; |
| ULONGLONG PrologEndAddress; | | ULONGLONG PrologEndAddress; |
| } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY, *PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; | | } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY, *PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; |
| | |
| typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { | | typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { |
| DWORD BeginAddress; | | DWORD BeginAddress; |
| | |
| skipping to change at line 16415 | | skipping to change at line 16913 |
| typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_AXP64_RUNTIME_FUNCTION_ENTR
Y; | | typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_AXP64_RUNTIME_FUNCTION_ENTR
Y; |
| typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_AXP64_RUNTIME_FUNCTION_ENTR
Y; | | typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_AXP64_RUNTIME_FUNCTION_ENTR
Y; |
| typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; |
| typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; |
| | |
| #elif defined(_ALPHA_) | | #elif defined(_ALPHA_) |
| | |
| typedef IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; |
| typedef PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; |
| | |
|
| | #elif defined(_ARM64_) |
| | |
| | typedef IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; |
| | typedef PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; |
| | |
| #elif defined(_ARM_) | | #elif defined(_ARM_) |
| | |
| typedef IMAGE_ARM_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef IMAGE_ARM_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; |
| typedef PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; |
| | |
| #else | | #else |
| | |
| typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; |
| typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; | | typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; |
| | |
| | |
| skipping to change at line 16454 | | skipping to change at line 16957 |
| #define IMAGE_DEBUG_TYPE_CODEVIEW 2 | | #define IMAGE_DEBUG_TYPE_CODEVIEW 2 |
| #define IMAGE_DEBUG_TYPE_FPO 3 | | #define IMAGE_DEBUG_TYPE_FPO 3 |
| #define IMAGE_DEBUG_TYPE_MISC 4 | | #define IMAGE_DEBUG_TYPE_MISC 4 |
| #define IMAGE_DEBUG_TYPE_EXCEPTION 5 | | #define IMAGE_DEBUG_TYPE_EXCEPTION 5 |
| #define IMAGE_DEBUG_TYPE_FIXUP 6 | | #define IMAGE_DEBUG_TYPE_FIXUP 6 |
| #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 | | #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 |
| #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 | | #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 |
| #define IMAGE_DEBUG_TYPE_BORLAND 9 | | #define IMAGE_DEBUG_TYPE_BORLAND 9 |
| #define IMAGE_DEBUG_TYPE_RESERVED10 10 | | #define IMAGE_DEBUG_TYPE_RESERVED10 10 |
| #define IMAGE_DEBUG_TYPE_CLSID 11 | | #define IMAGE_DEBUG_TYPE_CLSID 11 |
|
| | #define IMAGE_DEBUG_TYPE_VC_FEATURE 12 |
| | #define IMAGE_DEBUG_TYPE_POGO 13 |
| | #define IMAGE_DEBUG_TYPE_ILTCG 14 |
| | #define IMAGE_DEBUG_TYPE_MPX 15 |
| | |
| typedef struct _IMAGE_COFF_SYMBOLS_HEADER { | | typedef struct _IMAGE_COFF_SYMBOLS_HEADER { |
| DWORD NumberOfSymbols; | | DWORD NumberOfSymbols; |
| DWORD LvaToFirstSymbol; | | DWORD LvaToFirstSymbol; |
| DWORD NumberOfLinenumbers; | | DWORD NumberOfLinenumbers; |
| DWORD LvaToFirstLinenumber; | | DWORD LvaToFirstLinenumber; |
| DWORD RvaToFirstByteOfCode; | | DWORD RvaToFirstByteOfCode; |
| DWORD RvaToLastByteOfCode; | | DWORD RvaToLastByteOfCode; |
| DWORD RvaToFirstByteOfData; | | DWORD RvaToFirstByteOfData; |
| DWORD RvaToLastByteOfData; | | DWORD RvaToLastByteOfData; |
| | |
| skipping to change at line 16553 | | skipping to change at line 17060 |
| DWORD CheckSum; | | DWORD CheckSum; |
| DWORD ImageBase; | | DWORD ImageBase; |
| DWORD SizeOfImage; | | DWORD SizeOfImage; |
| DWORD NumberOfSections; | | DWORD NumberOfSections; |
| DWORD ExportedNamesSize; | | DWORD ExportedNamesSize; |
| DWORD DebugDirectorySize; | | DWORD DebugDirectorySize; |
| DWORD SectionAlignment; | | DWORD SectionAlignment; |
| DWORD Reserved[2]; | | DWORD Reserved[2]; |
| } IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER; | | } IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER; |
| | |
|
| | // begin_ntoshvp |
| | |
| typedef struct _NON_PAGED_DEBUG_INFO { | | typedef struct _NON_PAGED_DEBUG_INFO { |
| WORD Signature; | | WORD Signature; |
| WORD Flags; | | WORD Flags; |
| DWORD Size; | | DWORD Size; |
| WORD Machine; | | WORD Machine; |
| WORD Characteristics; | | WORD Characteristics; |
| DWORD TimeDateStamp; | | DWORD TimeDateStamp; |
| DWORD CheckSum; | | DWORD CheckSum; |
| DWORD SizeOfImage; | | DWORD SizeOfImage; |
| ULONGLONG ImageBase; | | ULONGLONG ImageBase; |
| //DebugDirectorySize | | //DebugDirectorySize |
| //IMAGE_DEBUG_DIRECTORY | | //IMAGE_DEBUG_DIRECTORY |
| } NON_PAGED_DEBUG_INFO, *PNON_PAGED_DEBUG_INFO; | | } NON_PAGED_DEBUG_INFO, *PNON_PAGED_DEBUG_INFO; |
| | |
|
| | // end_ntoshvp |
| | |
| #ifndef _MAC | | #ifndef _MAC |
| #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 | | #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 |
| #define NON_PAGED_DEBUG_SIGNATURE 0x494E | | #define NON_PAGED_DEBUG_SIGNATURE 0x494E |
| #else | | #else |
| #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4449 // DI | | #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4449 // DI |
| #define NON_PAGED_DEBUG_SIGNATURE 0x4E49 // NI | | #define NON_PAGED_DEBUG_SIGNATURE 0x4E49 // NI |
| #endif | | #endif |
| | |
| #define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 | | #define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 |
| #define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 // when DBG was updated, the | | #define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 // when DBG was updated, the |
| | |
| skipping to change at line 16656 | | skipping to change at line 17167 |
| | |
| typedef enum ReplacesCorHdrNumericDefines | | typedef enum ReplacesCorHdrNumericDefines |
| { | | { |
| // COM+ Header entry point flags. | | // COM+ Header entry point flags. |
| COMIMAGE_FLAGS_ILONLY =0x00000001, | | COMIMAGE_FLAGS_ILONLY =0x00000001, |
| COMIMAGE_FLAGS_32BITREQUIRED =0x00000002, | | COMIMAGE_FLAGS_32BITREQUIRED =0x00000002, |
| COMIMAGE_FLAGS_IL_LIBRARY =0x00000004, | | COMIMAGE_FLAGS_IL_LIBRARY =0x00000004, |
| COMIMAGE_FLAGS_STRONGNAMESIGNED =0x00000008, | | COMIMAGE_FLAGS_STRONGNAMESIGNED =0x00000008, |
| COMIMAGE_FLAGS_NATIVE_ENTRYPOINT =0x00000010, | | COMIMAGE_FLAGS_NATIVE_ENTRYPOINT =0x00000010, |
| COMIMAGE_FLAGS_TRACKDEBUGDATA =0x00010000, | | COMIMAGE_FLAGS_TRACKDEBUGDATA =0x00010000, |
|
| | COMIMAGE_FLAGS_32BITPREFERRED =0x00020000, |
| | |
| // Version flags for image. | | // Version flags for image. |
| COR_VERSION_MAJOR_V2 =2, | | COR_VERSION_MAJOR_V2 =2, |
| COR_VERSION_MAJOR =COR_VERSION_MAJOR_V2, | | COR_VERSION_MAJOR =COR_VERSION_MAJOR_V2, |
| COR_VERSION_MINOR =5, | | COR_VERSION_MINOR =5, |
| COR_DELETED_NAME_LENGTH =8, | | COR_DELETED_NAME_LENGTH =8, |
| COR_VTABLEGAP_NAME_LENGTH =8, | | COR_VTABLEGAP_NAME_LENGTH =8, |
| | |
| // Maximum size of a NativeType descriptor. | | // Maximum size of a NativeType descriptor. |
| NATIVE_TYPE_MAX_CB =1, | | NATIVE_TYPE_MAX_CB =1, |
| | |
| skipping to change at line 16736 | | skipping to change at line 17248 |
| // | | // |
| | |
| #include <apiset.h> | | #include <apiset.h> |
| | |
| // | | // |
| // prototypes | | // prototypes |
| // | | // |
| | |
| // begin_ntifs | | // begin_ntifs |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| #if (NTDDI_VERSION > NTDDI_WINXP) | | #if (NTDDI_VERSION > NTDDI_WINXP) |
| | |
| NTSYSAPI | | NTSYSAPI |
| _Success_(return != 0) | | _Success_(return != 0) |
| WORD | | WORD |
| NTAPI | | NTAPI |
| RtlCaptureStackBackTrace( | | RtlCaptureStackBackTrace( |
| _In_ DWORD FramesToSkip, | | _In_ DWORD FramesToSkip, |
| _In_ DWORD FramesToCapture, | | _In_ DWORD FramesToCapture, |
| _Out_writes_to_(FramesToCapture, return) PVOID * BackTrace, | | _Out_writes_to_(FramesToCapture, return) PVOID * BackTrace, |
| _Out_opt_ PDWORD BackTraceHash | | _Out_opt_ PDWORD BackTraceHash |
| ); | | ); |
| | |
| #endif | | #endif |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| #if (NTDDI_VERSION > NTDDI_WIN2K) | | #if (NTDDI_VERSION > NTDDI_WIN2K) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlCaptureContext( | | RtlCaptureContext( |
| _Out_ PCONTEXT ContextRecord | | _Out_ PCONTEXT ContextRecord |
| ); | | ); |
| | |
| #endif | | #endif |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| // end_ntifs | | // end_ntifs |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlUnwind( | | RtlUnwind( |
| _In_opt_ PVOID TargetFrame, | | _In_opt_ PVOID TargetFrame, |
| _In_opt_ PVOID TargetIp, | | _In_opt_ PVOID TargetIp, |
| _In_opt_ PEXCEPTION_RECORD ExceptionRecord, | | _In_opt_ PEXCEPTION_RECORD ExceptionRecord, |
| _In_ PVOID ReturnValue | | _In_ PVOID ReturnValue |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #if defined(_AMD64_) | | #if defined(_AMD64_) |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| BOOLEAN | | BOOLEAN |
| __cdecl | | __cdecl |
| RtlAddFunctionTable( | | RtlAddFunctionTable( |
| _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable, | | _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable, |
| _In_ DWORD EntryCount, | | _In_ DWORD EntryCount, |
| _In_ DWORD64 BaseAddress | | _In_ DWORD64 BaseAddress |
| ); | | ); |
| | |
| | |
| skipping to change at line 16864 | | skipping to change at line 17376 |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlDeleteGrowableFunctionTable( | | RtlDeleteGrowableFunctionTable( |
| _In_ PVOID DynamicTable | | _In_ PVOID DynamicTable |
| ); | | ); |
| | |
| #endif // ((NTDDI_VERSION >= NTDDI_WIN8) && !defined(_CONTRACT_GEN)) || (_APISET
_RTLSUPPORT_VER > 0x0100) | | #endif // ((NTDDI_VERSION >= NTDDI_WIN8) && !defined(_CONTRACT_GEN)) || (_APISET
_RTLSUPPORT_VER > 0x0100) |
| | |
| // begin_1_0 | | // begin_1_0 |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| PRUNTIME_FUNCTION | | PRUNTIME_FUNCTION |
| NTAPI | | NTAPI |
| RtlLookupFunctionEntry( | | RtlLookupFunctionEntry( |
| _In_ DWORD64 ControlPc, | | _In_ DWORD64 ControlPc, |
| _Out_ PDWORD64 ImageBase, | | _Out_ PDWORD64 ImageBase, |
| _Inout_opt_ PUNWIND_HISTORY_TABLE HistoryTable | | _Inout_opt_ PUNWIND_HISTORY_TABLE HistoryTable |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| __cdecl | | __cdecl |
| RtlRestoreContext( | | RtlRestoreContext( |
| _In_ PCONTEXT ContextRecord, | | _In_ PCONTEXT ContextRecord, |
| _In_opt_ struct _EXCEPTION_RECORD * ExceptionRecord | | _In_opt_ struct _EXCEPTION_RECORD * ExceptionRecord |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlUnwindEx( | | RtlUnwindEx( |
| _In_opt_ PVOID TargetFrame, | | _In_opt_ PVOID TargetFrame, |
| _In_opt_ PVOID TargetIp, | | _In_opt_ PVOID TargetIp, |
| _In_opt_ PEXCEPTION_RECORD ExceptionRecord, | | _In_opt_ PEXCEPTION_RECORD ExceptionRecord, |
| _In_ PVOID ReturnValue, | | _In_ PVOID ReturnValue, |
| _In_ PCONTEXT ContextRecord, | | _In_ PCONTEXT ContextRecord, |
| _In_opt_ PUNWIND_HISTORY_TABLE HistoryTable | | _In_opt_ PUNWIND_HISTORY_TABLE HistoryTable |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| PEXCEPTION_ROUTINE | | PEXCEPTION_ROUTINE |
| NTAPI | | NTAPI |
| RtlVirtualUnwind( | | RtlVirtualUnwind( |
| _In_ DWORD HandlerType, | | _In_ DWORD HandlerType, |
| _In_ DWORD64 ImageBase, | | _In_ DWORD64 ImageBase, |
| _In_ DWORD64 ControlPc, | | _In_ DWORD64 ControlPc, |
| _In_ PRUNTIME_FUNCTION FunctionEntry, | | _In_ PRUNTIME_FUNCTION FunctionEntry, |
| _Inout_ PCONTEXT ContextRecord, | | _Inout_ PCONTEXT ContextRecord, |
| _Out_ PVOID * HandlerData, | | _Out_ PVOID * HandlerData, |
| _Out_ PDWORD64 EstablisherFrame, | | _Out_ PDWORD64 EstablisherFrame, |
| _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers | | _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #endif // _AMD64_ | | #endif // _AMD64_ |
| | |
| #if defined(_ARM_) | | #if defined(_ARM_) |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| BOOLEAN | | BOOLEAN |
| __cdecl | | __cdecl |
| RtlAddFunctionTable( | | RtlAddFunctionTable( |
| _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable, | | _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable, |
| _In_ DWORD EntryCount, | | _In_ DWORD EntryCount, |
| _In_ DWORD BaseAddress | | _In_ DWORD BaseAddress |
| ); | | ); |
| | |
| | |
| skipping to change at line 17009 | | skipping to change at line 17521 |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlDeleteGrowableFunctionTable( | | RtlDeleteGrowableFunctionTable( |
| _In_ PVOID DynamicTable | | _In_ PVOID DynamicTable |
| ); | | ); |
| | |
| #endif // ((NTDDI_VERSION >= NTDDI_WIN8) && !defined(_CONTRACT_GEN)) || (_APISET
_RTLSUPPORT_VER > 0x0100) | | #endif // ((NTDDI_VERSION >= NTDDI_WIN8) && !defined(_CONTRACT_GEN)) || (_APISET
_RTLSUPPORT_VER > 0x0100) |
| | |
| // begin_1_0 | | // begin_1_0 |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| PRUNTIME_FUNCTION | | PRUNTIME_FUNCTION |
| NTAPI | | NTAPI |
| RtlLookupFunctionEntry( | | RtlLookupFunctionEntry( |
| _In_ ULONG_PTR ControlPc, | | _In_ ULONG_PTR ControlPc, |
| _Out_ PDWORD ImageBase, | | _Out_ PDWORD ImageBase, |
| _Inout_opt_ PUNWIND_HISTORY_TABLE HistoryTable | | _Inout_opt_ PUNWIND_HISTORY_TABLE HistoryTable |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| __cdecl | | __cdecl |
| RtlRestoreContext( | | RtlRestoreContext( |
| _In_ PCONTEXT ContextRecord, | | _In_ PCONTEXT ContextRecord, |
| _In_opt_ struct _EXCEPTION_RECORD * ExceptionRecord | | _In_opt_ struct _EXCEPTION_RECORD * ExceptionRecord |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlUnwindEx( | | RtlUnwindEx( |
| _In_opt_ PVOID TargetFrame, | | _In_opt_ PVOID TargetFrame, |
| _In_opt_ PVOID TargetIp, | | _In_opt_ PVOID TargetIp, |
| _In_opt_ PEXCEPTION_RECORD ExceptionRecord, | | _In_opt_ PEXCEPTION_RECORD ExceptionRecord, |
| _In_ PVOID ReturnValue, | | _In_ PVOID ReturnValue, |
| _In_ PCONTEXT ContextRecord, | | _In_ PCONTEXT ContextRecord, |
| _In_opt_ PUNWIND_HISTORY_TABLE HistoryTable | | _In_opt_ PUNWIND_HISTORY_TABLE HistoryTable |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| PEXCEPTION_ROUTINE | | PEXCEPTION_ROUTINE |
| NTAPI | | NTAPI |
| RtlVirtualUnwind( | | RtlVirtualUnwind( |
| _In_ DWORD HandlerType, | | _In_ DWORD HandlerType, |
| _In_ DWORD ImageBase, | | _In_ DWORD ImageBase, |
| _In_ DWORD ControlPc, | | _In_ DWORD ControlPc, |
| _In_ PRUNTIME_FUNCTION FunctionEntry, | | _In_ PRUNTIME_FUNCTION FunctionEntry, |
| _Inout_ PCONTEXT ContextRecord, | | _Inout_ PCONTEXT ContextRecord, |
| _Out_ PVOID * HandlerData, | | _Out_ PVOID * HandlerData, |
| _Out_ PDWORD EstablisherFrame, | | _Out_ PDWORD EstablisherFrame, |
| _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers | | _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #endif // _ARM_ | | #endif // _ARM_ |
| | |
|
| | #if defined(_ARM64_) |
| | |
| | #pragma region Desktop Family or OneCore Family |
| | |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| | NTSYSAPI |
| | BOOLEAN |
| | __cdecl |
| | RtlAddFunctionTable( |
| | _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable, |
| | _In_ DWORD EntryCount, |
| | _In_ ULONG_PTR BaseAddress |
| | ); |
| | |
| | NTSYSAPI |
| | BOOLEAN |
| | __cdecl |
| | RtlDeleteFunctionTable( |
| | _In_ PRUNTIME_FUNCTION FunctionTable |
| | ); |
| | |
| | NTSYSAPI |
| | BOOLEAN |
| | __cdecl |
| | RtlInstallFunctionTableCallback( |
| | _In_ ULONG_PTR TableIdentifier, |
| | _In_ ULONG_PTR BaseAddress, |
| | _In_ DWORD Length, |
| | _In_ PGET_RUNTIME_FUNCTION_CALLBACK Callback, |
| | _In_opt_ PVOID Context, |
| | _In_opt_ PCWSTR OutOfProcessCallbackDll |
| | ); |
| | |
| | // end_1_0 |
| | |
| | #if ((NTDDI_VERSION >= NTDDI_WIN8) && !defined(_CONTRACT_GEN)) || (_APISET_RTLSU |
| | PPORT_VER > 0x0100) |
| | |
| | NTSYSAPI |
| | DWORD |
| | NTAPI |
| | RtlAddGrowableFunctionTable( |
| | _Out_ PVOID * DynamicTable, |
| | _In_reads_(MaximumEntryCount) PRUNTIME_FUNCTION FunctionTable, |
| | _In_ DWORD EntryCount, |
| | _In_ DWORD MaximumEntryCount, |
| | _In_ ULONG_PTR RangeBase, |
| | _In_ ULONG_PTR RangeEnd |
| | ); |
| | |
| | NTSYSAPI |
| | VOID |
| | NTAPI |
| | RtlGrowFunctionTable( |
| | _Inout_ PVOID DynamicTable, |
| | _In_ DWORD NewEntryCount |
| | ); |
| | |
| | NTSYSAPI |
| | VOID |
| | NTAPI |
| | RtlDeleteGrowableFunctionTable( |
| | _In_ PVOID DynamicTable |
| | ); |
| | |
| | #endif // ((NTDDI_VERSION >= NTDDI_WIN8) && !defined(_CONTRACT_GEN)) || (_APISET |
| | _RTLSUPPORT_VER > 0x0100) |
| | |
| | // begin_1_0 |
| | |
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY |
| | STEM) */ |
| | #pragma endregion |
| | |
| | #pragma region Application or OneCore Family |
| | |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| | NTSYSAPI |
| | PRUNTIME_FUNCTION |
| | NTAPI |
| | RtlLookupFunctionEntry( |
| | _In_ ULONG_PTR ControlPc, |
| | _Out_ PULONG_PTR ImageBase, |
| | _Inout_opt_ PUNWIND_HISTORY_TABLE HistoryTable |
| | ); |
| | |
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM |
| | ) */ |
| | #pragma endregion |
| | |
| | #pragma region Desktop Family or OneCore Family |
| | |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| | NTSYSAPI |
| | VOID |
| | __cdecl |
| | RtlRestoreContext( |
| | _In_ PCONTEXT ContextRecord, |
| | _In_opt_ struct _EXCEPTION_RECORD * ExceptionRecord |
| | ); |
| | |
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY |
| | STEM) */ |
| | #pragma endregion |
| | |
| | #pragma region Application or OneCore Family |
| | |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| | NTSYSAPI |
| | VOID |
| | NTAPI |
| | RtlUnwindEx( |
| | _In_opt_ PVOID TargetFrame, |
| | _In_opt_ PVOID TargetIp, |
| | _In_opt_ PEXCEPTION_RECORD ExceptionRecord, |
| | _In_ PVOID ReturnValue, |
| | _In_ PCONTEXT ContextRecord, |
| | _In_opt_ PUNWIND_HISTORY_TABLE HistoryTable |
| | ); |
| | |
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM |
| | ) */ |
| | #pragma endregion |
| | |
| | #pragma region Desktop Family or OneCore Family |
| | |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| | NTSYSAPI |
| | PEXCEPTION_ROUTINE |
| | NTAPI |
| | RtlVirtualUnwind( |
| | _In_ DWORD HandlerType, |
| | _In_ ULONG_PTR ImageBase, |
| | _In_ ULONG_PTR ControlPc, |
| | _In_ PRUNTIME_FUNCTION FunctionEntry, |
| | _Inout_ PCONTEXT ContextRecord, |
| | _Out_ PVOID * HandlerData, |
| | _Out_ PULONG_PTR EstablisherFrame, |
| | _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers |
| | ); |
| | |
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY |
| | STEM) */ |
| | #pragma endregion |
| | |
| | #endif // _ARM64_ |
| | |
| #if defined(_IA64_) | | #if defined(_IA64_) |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| _IRQL_requires_max_(PASSIVE_LEVEL) | | _IRQL_requires_max_(PASSIVE_LEVEL) |
| _Success_(return!=0) | | _Success_(return!=0) |
| NTSYSAPI | | NTSYSAPI |
| BOOLEAN | | BOOLEAN |
| NTAPI | | NTAPI |
| RtlAddFunctionTable( | | RtlAddFunctionTable( |
| _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable, | | _In_reads_(EntryCount) PRUNTIME_FUNCTION FunctionTable, |
| _In_ DWORD EntryCount, | | _In_ DWORD EntryCount, |
| _In_ ULONGLONG BaseAddress, | | _In_ ULONGLONG BaseAddress, |
| | |
| skipping to change at line 17127 | | skipping to change at line 17784 |
| RtlInstallFunctionTableCallback( | | RtlInstallFunctionTableCallback( |
| _In_ DWORD64 TableIdentifier, | | _In_ DWORD64 TableIdentifier, |
| _In_ DWORD64 BaseAddress, | | _In_ DWORD64 BaseAddress, |
| _In_ DWORD Length, | | _In_ DWORD Length, |
| _In_ DWORD64 TargetGp, | | _In_ DWORD64 TargetGp, |
| _In_ PGET_RUNTIME_FUNCTION_CALLBACK Callback, | | _In_ PGET_RUNTIME_FUNCTION_CALLBACK Callback, |
| _In_opt_ PVOID Context, | | _In_opt_ PVOID Context, |
| _In_opt_ PCWSTR OutOfProcessCallbackDll | | _In_opt_ PCWSTR OutOfProcessCallbackDll |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| _IRQL_requires_max_(SYNCH_LEVEL) | | _IRQL_requires_max_(SYNCH_LEVEL) |
| _IRQL_requires_min_(PASSIVE_LEVEL) | | _IRQL_requires_min_(PASSIVE_LEVEL) |
| NTSYSAPI | | NTSYSAPI |
| PRUNTIME_FUNCTION | | PRUNTIME_FUNCTION |
| NTAPI | | NTAPI |
| RtlLookupFunctionEntry( | | RtlLookupFunctionEntry( |
| _In_ ULONGLONG ControlPc, | | _In_ ULONGLONG ControlPc, |
| _Out_ PULONGLONG ImageBase, | | _Out_ PULONGLONG ImageBase, |
| _Out_ PULONGLONG TargetGp | | _Out_ PULONGLONG TargetGp |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlRestoreContext( | | RtlRestoreContext( |
| _In_ PCONTEXT ContextRecord, | | _In_ PCONTEXT ContextRecord, |
| _In_opt_ struct _EXCEPTION_RECORD * ExceptionRecord | | _In_opt_ struct _EXCEPTION_RECORD * ExceptionRecord |
| ); | | ); |
| | |
| NTSYSAPI | | NTSYSAPI |
| | |
| skipping to change at line 17173 | | skipping to change at line 17830 |
| RtlVirtualUnwind( | | RtlVirtualUnwind( |
| _In_ ULONGLONG ImageBase, | | _In_ ULONGLONG ImageBase, |
| _In_ ULONGLONG ControlPc, | | _In_ ULONGLONG ControlPc, |
| _In_ PRUNTIME_FUNCTION FunctionEntry, | | _In_ PRUNTIME_FUNCTION FunctionEntry, |
| _Inout_ PCONTEXT ContextRecord, | | _Inout_ PCONTEXT ContextRecord, |
| _Out_ PBOOLEAN InFunction, | | _Out_ PBOOLEAN InFunction, |
| _Out_ PFRAME_POINTERS EstablisherFrame, | | _Out_ PFRAME_POINTERS EstablisherFrame, |
| _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers | | _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #endif // _IA64_ | | #endif // _IA64_ |
| | |
| #if defined(_IA64_) | | #if defined(_IA64_) |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlUnwindEx( | | RtlUnwindEx( |
| _In_opt_ FRAME_POINTERS TargetFrame, | | _In_opt_ FRAME_POINTERS TargetFrame, |
| _In_opt_ PVOID TargetIp, | | _In_opt_ PVOID TargetIp, |
| _In_opt_ PEXCEPTION_RECORD ExceptionRecord, | | _In_opt_ PEXCEPTION_RECORD ExceptionRecord, |
| _In_ PVOID ReturnValue, | | _In_ PVOID ReturnValue, |
| _In_ PCONTEXT ContextRecord, | | _In_ PCONTEXT ContextRecord, |
| _In_opt_ PUNWIND_HISTORY_TABLE HistoryTable | | _In_opt_ PUNWIND_HISTORY_TABLE HistoryTable |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #endif // _IA64_ | | #endif // _IA64_ |
| | |
|
| #pragma region Application Family | | #pragma region Application or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) |
| | |
| #if !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defined(_X
86_)) | | #if !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defined(_X
86_)) |
| | |
| NTSYSAPI | | NTSYSAPI |
| PVOID | | PVOID |
| NTAPI | | NTAPI |
| RtlPcToFileHeader( | | RtlPcToFileHeader( |
| _In_ PVOID PcValue, | | _In_ PVOID PcValue, |
| _Out_ PVOID * BaseOfImage | | _Out_ PVOID * BaseOfImage |
| ); | | ); |
| | |
| #endif // !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defi
ned(_X86_)) | | #endif // !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defi
ned(_X86_)) |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */ |
| #pragma endregion | | #pragma endregion |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| | |
|
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| #if !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defined(_X
86_)) | | #if !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defined(_X
86_)) |
| | |
| #if (NTDDI_VERSION >= NTDDI_WIN2K) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
| _Check_return_ | | _Check_return_ |
| NTSYSAPI | | NTSYSAPI |
| SIZE_T | | SIZE_T |
| NTAPI | | NTAPI |
| RtlCompareMemory( | | RtlCompareMemory( |
| _In_ const VOID * Source1, | | _In_ const VOID * Source1, |
| _In_ const VOID * Source2, | | _In_ const VOID * Source2, |
| _In_ SIZE_T Length | | _In_ SIZE_T Length |
| ); | | ); |
| | |
| #endif | | #endif |
| | |
| #endif // !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defi
ned(_X86_)) | | #endif // !(defined(_CONTRACT_GEN) && (_APISET_RTLSUPPORT_VER <= 0x0100) && defi
ned(_X86_)) |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| // | | // |
| // for move macros | | // for move macros |
| // | | // |
| #ifdef _MAC | | #ifdef _MAC |
| #ifndef _INC_STRING | | #ifndef _INC_STRING |
| #include <string.h> | | #include <string.h> |
| #endif /* _INC_STRING */ | | #endif /* _INC_STRING */ |
| #else | | #else |
| | |
| skipping to change at line 17299 | | skipping to change at line 17956 |
| ULONGLONG Region; | | ULONGLONG Region; |
| } DUMMYSTRUCTNAME; | | } DUMMYSTRUCTNAME; |
| struct { // x64 16-byte header | | struct { // x64 16-byte header |
| ULONGLONG Depth:16; | | ULONGLONG Depth:16; |
| ULONGLONG Sequence:48; | | ULONGLONG Sequence:48; |
| ULONGLONG Reserved:4; | | ULONGLONG Reserved:4; |
| ULONGLONG NextEntry:60; // last 4 bits are always 0's | | ULONGLONG NextEntry:60; // last 4 bits are always 0's |
| } HeaderX64; | | } HeaderX64; |
| } SLIST_HEADER, *PSLIST_HEADER; | | } SLIST_HEADER, *PSLIST_HEADER; |
| | |
|
| | #elif defined(_ARM64_) |
| | |
| | // ARM64_WORKITEM: should this be merged with AMD64 above? |
| | typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER { |
| | struct { // original struct |
| | ULONGLONG Alignment; |
| | ULONGLONG Region; |
| | } DUMMYSTRUCTNAME; |
| | struct { // ARM64 16-byte header |
| | ULONGLONG Depth:16; |
| | ULONGLONG Sequence:48; |
| | ULONGLONG Reserved:4; |
| | ULONGLONG NextEntry:60; // last 4 bits are always 0's |
| | } HeaderArm64; |
| | } SLIST_HEADER, *PSLIST_HEADER; |
| | |
| #elif defined(_X86_) | | #elif defined(_X86_) |
| | |
| typedef union _SLIST_HEADER { | | typedef union _SLIST_HEADER { |
| ULONGLONG Alignment; | | ULONGLONG Alignment; |
| struct { | | struct { |
| SLIST_ENTRY Next; | | SLIST_ENTRY Next; |
| WORD Depth; | | WORD Depth; |
| WORD CpuId; | | WORD CpuId; |
| } DUMMYSTRUCTNAME; | | } DUMMYSTRUCTNAME; |
| } SLIST_HEADER, *PSLIST_HEADER; | | } SLIST_HEADER, *PSLIST_HEADER; |
| | |
| skipping to change at line 17325 | | skipping to change at line 17998 |
| SLIST_ENTRY Next; | | SLIST_ENTRY Next; |
| WORD Depth; | | WORD Depth; |
| WORD Reserved; | | WORD Reserved; |
| } DUMMYSTRUCTNAME; | | } DUMMYSTRUCTNAME; |
| } SLIST_HEADER, *PSLIST_HEADER; | | } SLIST_HEADER, *PSLIST_HEADER; |
| | |
| #endif | | #endif |
| | |
| #endif // _SLIST_HEADER_ | | #endif // _SLIST_HEADER_ |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| NTSYSAPI | | NTSYSAPI |
| VOID | | VOID |
| NTAPI | | NTAPI |
| RtlInitializeSListHead ( | | RtlInitializeSListHead ( |
| _Out_ PSLIST_HEADER ListHead | | _Out_ PSLIST_HEADER ListHead |
| ); | | ); |
| | |
| _Must_inspect_result_ | | _Must_inspect_result_ |
| NTSYSAPI | | NTSYSAPI |
| | |
| skipping to change at line 17382 | | skipping to change at line 18055 |
| _Inout_ PSLIST_HEADER ListHead | | _Inout_ PSLIST_HEADER ListHead |
| ); | | ); |
| | |
| NTSYSAPI | | NTSYSAPI |
| WORD | | WORD |
| NTAPI | | NTAPI |
| RtlQueryDepthSList ( | | RtlQueryDepthSList ( |
| _In_ PSLIST_HEADER ListHead | | _In_ PSLIST_HEADER ListHead |
| ); | | ); |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #ifndef _RTL_RUN_ONCE_DEF | | #ifndef _RTL_RUN_ONCE_DEF |
| #define _RTL_RUN_ONCE_DEF | | #define _RTL_RUN_ONCE_DEF |
| | |
| // | | // |
| // Run once | | // Run once |
| // | | // |
| | |
| #define RTL_RUN_ONCE_INIT {0} // Static initializer | | #define RTL_RUN_ONCE_INIT {0} // Static initializer |
| | |
| skipping to change at line 17424 | | skipping to change at line 18097 |
| | |
| typedef struct _RTL_BARRIER { | | typedef struct _RTL_BARRIER { |
| DWORD Reserved1; | | DWORD Reserved1; |
| DWORD Reserved2; | | DWORD Reserved2; |
| ULONG_PTR Reserved3[2]; | | ULONG_PTR Reserved3[2]; |
| DWORD Reserved4; | | DWORD Reserved4; |
| DWORD Reserved5; | | DWORD Reserved5; |
| } RTL_BARRIER, *PRTL_BARRIER; | | } RTL_BARRIER, *PRTL_BARRIER; |
| // begin_ntoshvp | | // begin_ntoshvp |
| | |
|
| | // Include the more obscure SAL annotations (like __drv_aliasesMem) instead of a |
| | ssuming the crtdefs.h will include them. |
| | #include <specstrings.h> |
| | |
| // | | // |
| // Fast fail failure codes. | | // Fast fail failure codes. |
| // | | // |
| // N.B. Failure code zero should not be used, but is required to be reserved | | // N.B. Failure code zero should not be used, but is required to be reserved |
| // for compatibility with previous handling of the | | // for compatibility with previous handling of the |
| // STATUS_STACK_BUFFER_OVERRUN exception status code. | | // STATUS_STACK_BUFFER_OVERRUN exception status code. |
| // | | // |
| | |
|
| #define FAST_FAIL_LEGACY_GS_VIOLATION 0 | | #define FAST_FAIL_LEGACY_GS_VIOLATION 0 |
| #define FAST_FAIL_VTGUARD_CHECK_FAILURE 1 | | #define FAST_FAIL_VTGUARD_CHECK_FAILURE 1 |
| #define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 | | #define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2 |
| #define FAST_FAIL_CORRUPT_LIST_ENTRY 3 | | #define FAST_FAIL_CORRUPT_LIST_ENTRY 3 |
| #define FAST_FAIL_INCORRECT_STACK 4 | | #define FAST_FAIL_INCORRECT_STACK 4 |
| #define FAST_FAIL_INVALID_ARG 5 | | #define FAST_FAIL_INVALID_ARG 5 |
| #define FAST_FAIL_GS_COOKIE_INIT 6 | | #define FAST_FAIL_GS_COOKIE_INIT 6 |
| #define FAST_FAIL_FATAL_APP_EXIT 7 | | #define FAST_FAIL_FATAL_APP_EXIT 7 |
| #define FAST_FAIL_RANGE_CHECK_FAILURE 8 | | #define FAST_FAIL_RANGE_CHECK_FAILURE 8 |
| #define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 | | #define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9 |
| #define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 10 | | #define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 10 |
| #define FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 11 | | #define FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 11 |
| #define FAST_FAIL_INVALID_FIBER_SWITCH 12 | | #define FAST_FAIL_INVALID_FIBER_SWITCH 12 |
| #define FAST_FAIL_INVALID_SET_OF_CONTEXT 13 | | #define FAST_FAIL_INVALID_SET_OF_CONTEXT 13 |
| #define FAST_FAIL_INVALID_REFERENCE_COUNT 14 | | #define FAST_FAIL_INVALID_REFERENCE_COUNT 14 |
| #define FAST_FAIL_INVALID_JUMP_BUFFER 18 | | #define FAST_FAIL_INVALID_JUMP_BUFFER 18 |
| #define FAST_FAIL_MRDATA_MODIFIED 19 | | #define FAST_FAIL_MRDATA_MODIFIED 19 |
| #define FAST_FAIL_CERTIFICATION_FAILURE 20 | | #define FAST_FAIL_CERTIFICATION_FAILURE 20 |
| #define FAST_FAIL_INVALID_EXCEPTION_CHAIN 21 | | #define FAST_FAIL_INVALID_EXCEPTION_CHAIN 21 |
| #define FAST_FAIL_CRYPTO_LIBRARY 22 | | #define FAST_FAIL_CRYPTO_LIBRARY 22 |
| #define FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT 23 | | #define FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT 23 |
| #define FAST_FAIL_INVALID_IMAGE_BASE 24 | | #define FAST_FAIL_INVALID_IMAGE_BASE 24 |
| #define FAST_FAIL_DLOAD_PROTECTION_FAILURE 25 | | #define FAST_FAIL_DLOAD_PROTECTION_FAILURE 25 |
| #define FAST_FAIL_UNSAFE_EXTENSION_CALL 26 | | #define FAST_FAIL_UNSAFE_EXTENSION_CALL 26 |
| #define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xFFFFFFFF | | #define FAST_FAIL_DEPRECATED_SERVICE_INVOKED 27 |
| | #define FAST_FAIL_INVALID_BUFFER_ACCESS 28 |
| | #define FAST_FAIL_INVALID_BALANCED_TREE 29 |
| | #define FAST_FAIL_INVALID_NEXT_THREAD 30 |
| | #define FAST_FAIL_GUARD_ICALL_CHECK_SUPPRESSED 31 // Telemetry, nonfatal |
| | #define FAST_FAIL_APCS_DISABLED 32 |
| | #define FAST_FAIL_INVALID_IDLE_STATE 33 |
| | #define FAST_FAIL_MRDATA_PROTECTION_FAILURE 34 |
| | #define FAST_FAIL_UNEXPECTED_HEAP_EXCEPTION 35 |
| | #define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xFFFFFFFF |
| | |
| #if _MSC_VER >= 1610 | | #if _MSC_VER >= 1610 |
| | |
| DECLSPEC_NORETURN | | DECLSPEC_NORETURN |
| VOID | | VOID |
| __fastfail( | | __fastfail( |
| _In_ unsigned int Code | | _In_ unsigned int Code |
| ); | | ); |
| | |
| #pragma intrinsic(__fastfail) | | #pragma intrinsic(__fastfail) |
| | |
| skipping to change at line 17581 | | skipping to change at line 18266 |
| volatile char *vptr = (volatile char *)ptr; | | volatile char *vptr = (volatile char *)ptr; |
| | |
| #if defined(_M_AMD64) | | #if defined(_M_AMD64) |
| | |
| __stosb((PBYTE )((DWORD64)vptr), 0, cnt); | | __stosb((PBYTE )((DWORD64)vptr), 0, cnt); |
| | |
| #else | | #else |
| | |
| while (cnt) { | | while (cnt) { |
| | |
|
| #if !defined(_M_CEE) && defined(_M_ARM) | | #if !defined(_M_CEE) && (defined(_M_ARM) || defined(_M_ARM64)) |
| | |
| __iso_volatile_store8(vptr, 0); | | __iso_volatile_store8(vptr, 0); |
| | |
| #else | | #else |
| | |
| *vptr = 0; | | *vptr = 0; |
| | |
| #endif | | #endif |
| | |
| vptr++; | | vptr++; |
| cnt--; | | cnt--; |
| } | | } |
| | |
| #endif // _M_AMD64 | | #endif // _M_AMD64 |
| | |
| return ptr; | | return ptr; |
| } | | } |
| | |
| #endif | | #endif |
| | |
|
| | // begin_wdm |
| | |
| #define SEF_DACL_AUTO_INHERIT 0x01 | | #define SEF_DACL_AUTO_INHERIT 0x01 |
| #define SEF_SACL_AUTO_INHERIT 0x02 | | #define SEF_SACL_AUTO_INHERIT 0x02 |
| #define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04 | | #define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04 |
| #define SEF_AVOID_PRIVILEGE_CHECK 0x08 | | #define SEF_AVOID_PRIVILEGE_CHECK 0x08 |
| #define SEF_AVOID_OWNER_CHECK 0x10 | | #define SEF_AVOID_OWNER_CHECK 0x10 |
| #define SEF_DEFAULT_OWNER_FROM_PARENT 0x20 | | #define SEF_DEFAULT_OWNER_FROM_PARENT 0x20 |
| #define SEF_DEFAULT_GROUP_FROM_PARENT 0x40 | | #define SEF_DEFAULT_GROUP_FROM_PARENT 0x40 |
| #define SEF_MACL_NO_WRITE_UP 0x100 | | #define SEF_MACL_NO_WRITE_UP 0x100 |
| #define SEF_MACL_NO_READ_UP 0x200 | | #define SEF_MACL_NO_READ_UP 0x200 |
| #define SEF_MACL_NO_EXECUTE_UP 0x400 | | #define SEF_MACL_NO_EXECUTE_UP 0x400 |
| #define SEF_AI_USE_EXTRA_PARAMS 0x800 | | #define SEF_AI_USE_EXTRA_PARAMS 0x800 |
| #define SEF_AVOID_OWNER_RESTRICTION 0x1000 | | #define SEF_AVOID_OWNER_RESTRICTION 0x1000 |
| | |
| #define SEF_MACL_VALID_FLAGS (SEF_MACL_NO_WRITE_UP | \ | | #define SEF_MACL_VALID_FLAGS (SEF_MACL_NO_WRITE_UP | \ |
| SEF_MACL_NO_READ_UP | \ | | SEF_MACL_NO_READ_UP | \ |
| SEF_MACL_NO_EXECUTE_UP) | | SEF_MACL_NO_EXECUTE_UP) |
| | |
|
| | // end_wdm |
| | |
| typedef struct _MESSAGE_RESOURCE_ENTRY { | | typedef struct _MESSAGE_RESOURCE_ENTRY { |
| WORD Length; | | WORD Length; |
| WORD Flags; | | WORD Flags; |
| BYTE Text[ 1 ]; | | BYTE Text[ 1 ]; |
| } MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY; | | } MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY; |
| | |
| #define MESSAGE_RESOURCE_UNICODE 0x0001 | | #define MESSAGE_RESOURCE_UNICODE 0x0001 |
| | |
| typedef struct _MESSAGE_RESOURCE_BLOCK { | | typedef struct _MESSAGE_RESOURCE_BLOCK { |
| DWORD LowId; | | DWORD LowId; |
| | |
| skipping to change at line 17701 | | skipping to change at line 18390 |
| #ifdef UNICODE | | #ifdef UNICODE |
| typedef OSVERSIONINFOEXW OSVERSIONINFOEX; | | typedef OSVERSIONINFOEXW OSVERSIONINFOEX; |
| typedef POSVERSIONINFOEXW POSVERSIONINFOEX; | | typedef POSVERSIONINFOEXW POSVERSIONINFOEX; |
| typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; | | typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; |
| #else | | #else |
| typedef OSVERSIONINFOEXA OSVERSIONINFOEX; | | typedef OSVERSIONINFOEXA OSVERSIONINFOEX; |
| typedef POSVERSIONINFOEXA POSVERSIONINFOEX; | | typedef POSVERSIONINFOEXA POSVERSIONINFOEX; |
| typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; | | typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; |
| #endif // UNICODE | | #endif // UNICODE |
| | |
|
| | // begin_wudfpwdm |
| | |
| // | | // |
| // RtlVerifyVersionInfo() conditions | | // RtlVerifyVersionInfo() conditions |
| // | | // |
| | |
| #define VER_EQUAL 1 | | #define VER_EQUAL 1 |
| #define VER_GREATER 2 | | #define VER_GREATER 2 |
| #define VER_GREATER_EQUAL 3 | | #define VER_GREATER_EQUAL 3 |
| #define VER_LESS 4 | | #define VER_LESS 4 |
| #define VER_LESS_EQUAL 5 | | #define VER_LESS_EQUAL 5 |
| #define VER_AND 6 | | #define VER_AND 6 |
| | |
| skipping to change at line 17745 | | skipping to change at line 18436 |
| #define VER_NT_SERVER 0x0000003 | | #define VER_NT_SERVER 0x0000003 |
| | |
| // | | // |
| // dwPlatformId defines: | | // dwPlatformId defines: |
| // | | // |
| | |
| #define VER_PLATFORM_WIN32s 0 | | #define VER_PLATFORM_WIN32s 0 |
| #define VER_PLATFORM_WIN32_WINDOWS 1 | | #define VER_PLATFORM_WIN32_WINDOWS 1 |
| #define VER_PLATFORM_WIN32_NT 2 | | #define VER_PLATFORM_WIN32_NT 2 |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| // | | // |
| // | | // |
| // VerifyVersionInfo() macro to set the condition mask | | // VerifyVersionInfo() macro to set the condition mask |
| // | | // |
| // For documentation sakes here's the old version of the macro that got | | // For documentation sakes here's the old version of the macro that got |
| // changed to call an API | | // changed to call an API |
| // #define VER_SET_CONDITION(_m_,_t_,_c_) _m_=(_m_|(_c_<<(1<<_t_))) | | // #define VER_SET_CONDITION(_m_,_t_,_c_) _m_=(_m_|(_c_<<(1<<_t_))) |
| // | | // |
| | |
| | |
| skipping to change at line 17777 | | skipping to change at line 18468 |
| VerSetConditionMask( | | VerSetConditionMask( |
| _In_ ULONGLONG ConditionMask, | | _In_ ULONGLONG ConditionMask, |
| _In_ DWORD TypeMask, | | _In_ DWORD TypeMask, |
| _In_ BYTE Condition | | _In_ BYTE Condition |
| ); | | ); |
| | |
| #endif | | #endif |
| | |
| #endif // !defined(_WINBASE_) && !defined(MIDL_PASS) | | #endif // !defined(_WINBASE_) && !defined(MIDL_PASS) |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| // | | // |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| // begin_ntddk | | // begin_ntddk |
| | |
| #if (NTDDI_VERSION >= NTDDI_VISTA) | | #if (NTDDI_VERSION >= NTDDI_VISTA) |
| | |
| NTSYSAPI | | NTSYSAPI |
| BOOLEAN | | BOOLEAN |
| NTAPI | | NTAPI |
| RtlGetProductInfo( | | RtlGetProductInfo( |
| _In_ DWORD OSMajorVersion, | | _In_ DWORD OSMajorVersion, |
| _In_ DWORD OSMinorVersion, | | _In_ DWORD OSMinorVersion, |
| _In_ DWORD SpMajorVersion, | | _In_ DWORD SpMajorVersion, |
| _In_ DWORD SpMinorVersion, | | _In_ DWORD SpMinorVersion, |
| _Out_ PDWORD ReturnedProductType | | _Out_ PDWORD ReturnedProductType |
| ); | | ); |
| | |
| #endif | | #endif |
| | |
| // end_ntddk | | // end_ntddk |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| #define RTL_UMS_VERSION (0x0100) | | #define RTL_UMS_VERSION (0x0100) |
| | |
| typedef enum _RTL_UMS_THREAD_INFO_CLASS { | | typedef enum _RTL_UMS_THREAD_INFO_CLASS { |
| UmsThreadInvalidInfoClass = 0, | | UmsThreadInvalidInfoClass = 0, |
| UmsThreadUserContext, | | UmsThreadUserContext, |
| UmsThreadPriority, // Reserved | | UmsThreadPriority, // Reserved |
| UmsThreadAffinity, // Reserved | | UmsThreadAffinity, // Reserved |
| UmsThreadTeb, | | UmsThreadTeb, |
| | |
| skipping to change at line 17887 | | skipping to change at line 18578 |
| | |
| #define CTMF_INCLUDE_APPCONTAINER 0x00000001UL | | #define CTMF_INCLUDE_APPCONTAINER 0x00000001UL |
| #define CTMF_VALID_FLAGS (CTMF_INCLUDE_APPCONTAINER) | | #define CTMF_VALID_FLAGS (CTMF_INCLUDE_APPCONTAINER) |
| | |
| #endif // (NTDDI_VERSION >= NTDDI_WIN8) | | #endif // (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
| #if (NTDDI_VERSION >= NTDDI_WIN8) | | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
| // end_ntosp | | // end_ntosp |
| | |
|
| #pragma region Desktop Family | | #pragma region Desktop Family or OneCore Family |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) |
| | |
| // begin_ntosp | | // begin_ntosp |
| | |
| // | | // |
| // Crc32 and Crc64 routines that use standardized algorithms | | // Crc32 and Crc64 routines that use standardized algorithms |
| // | | // |
| | |
| NTSYSAPI | | NTSYSAPI |
| DWORD | | DWORD |
| NTAPI | | NTAPI |
| | |
| skipping to change at line 17916 | | skipping to change at line 18607 |
| ULONGLONG | | ULONGLONG |
| NTAPI | | NTAPI |
| RtlCrc64( | | RtlCrc64( |
| _In_reads_bytes_(Size) const void *Buffer, | | _In_reads_bytes_(Size) const void *Buffer, |
| _In_ size_t Size, | | _In_ size_t Size, |
| _In_ ULONGLONG InitialCrc | | _In_ ULONGLONG InitialCrc |
| ); | | ); |
| | |
| // end_ntosp | | // end_ntosp |
| | |
|
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */ |
| #pragma endregion | | #pragma endregion |
| | |
| // begin_ntosp | | // begin_ntosp |
| | |
| #endif // (NTDDI_VERSION >= NTDDI_WIN8) | | #endif // (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | // |
| | // API to detect what type of OS Deployment this is. Current valid values |
| | // are listed below |
| | // |
| | |
| | // |
| | // Valid OsDeployment values that can be returned |
| | // |
| | |
| | typedef enum _OS_DEPLOYEMENT_STATE_VALUES { |
| | OS_DEPLOYMENT_STANDARD = 1, |
| | OS_DEPLOYMENT_COMPACT |
| | } OS_DEPLOYEMENT_STATE_VALUES; |
| | |
| | NTSYSAPI |
| | OS_DEPLOYEMENT_STATE_VALUES |
| | NTAPI |
| | RtlOsDeploymentState( |
| | _In_ DWORD Flags /* No flags currently defined, passed 0 */ |
| | ); |
| | |
| | #endif // NTDDI_VERSION >= NTDDI_WINTHRESHOLD |
| | |
| typedef struct _RTL_CRITICAL_SECTION_DEBUG { | | typedef struct _RTL_CRITICAL_SECTION_DEBUG { |
| WORD Type; | | WORD Type; |
| WORD CreatorBackTraceIndex; | | WORD CreatorBackTraceIndex; |
| struct _RTL_CRITICAL_SECTION *CriticalSection; | | struct _RTL_CRITICAL_SECTION *CriticalSection; |
| LIST_ENTRY ProcessLocksList; | | LIST_ENTRY ProcessLocksList; |
| DWORD EntryCount; | | DWORD EntryCount; |
| DWORD ContentionCount; | | DWORD ContentionCount; |
| DWORD Flags; | | DWORD Flags; |
| WORD CreatorBackTraceIndexHigh; | | WORD CreatorBackTraceIndexHigh; |
| WORD SpareWORD ; | | WORD SpareWORD ; |
| } RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG,
*PRTL_RESOURCE_DEBUG; | | } RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG,
*PRTL_RESOURCE_DEBUG; |
| | |
|
| #define RTL_CRITSECT_TYPE 0 | | |
| #define RTL_RESOURCE_TYPE 1 | | |
| | | |
| // | | // |
| // These flags define the upper byte of the critical section SpinCount field | | // These flags define the upper byte of the critical section SpinCount field |
| // | | // |
| #define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x01000000 | | #define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x01000000 |
| #define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x02000000 | | #define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x02000000 |
| #define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x04000000 | | #define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x04000000 |
| #define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x08000000 | | #define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x08000000 |
| #define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000 | | #define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000 |
| #define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xFF000000 | | #define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xFF000000 |
| #define RTL_CRITICAL_SECTION_FLAG_RESERVED (RTL_CRITICAL_SECTION_AL
L_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))) | | #define RTL_CRITICAL_SECTION_FLAG_RESERVED (RTL_CRITICAL_SECTION_AL
L_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))) |
| | |
| skipping to change at line 18157 | | skipping to change at line 18869 |
| ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION | | ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION |
| } ACTCTX_COMPATIBILITY_ELEMENT_TYPE; | | } ACTCTX_COMPATIBILITY_ELEMENT_TYPE; |
| | |
| typedef struct _COMPATIBILITY_CONTEXT_ELEMENT { | | typedef struct _COMPATIBILITY_CONTEXT_ELEMENT { |
| GUID Id; | | GUID Id; |
| ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type; | | ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type; |
| } COMPATIBILITY_CONTEXT_ELEMENT, *PCOMPATIBILITY_CONTEXT_ELEMENT; | | } COMPATIBILITY_CONTEXT_ELEMENT, *PCOMPATIBILITY_CONTEXT_ELEMENT; |
| | |
| typedef const struct _COMPATIBILITY_CONTEXT_ELEMENT *PCCOMPATIBILITY_CONTEXT_ELE
MENT; | | typedef const struct _COMPATIBILITY_CONTEXT_ELEMENT *PCCOMPATIBILITY_CONTEXT_ELE
MENT; |
| | |
|
| | #ifdef _MSC_EXTENSIONS |
| | |
| | #if _MSC_VER >= 1200 |
| #pragma warning(push) | | #pragma warning(push) |
|
| #pragma warning(disable:4200) | | #pragma warning(disable:4200) // zero length array |
| | #endif |
| | |
| typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION { | | typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION { |
| DWORD ElementCount; | | DWORD ElementCount; |
| COMPATIBILITY_CONTEXT_ELEMENT Elements[]; | | COMPATIBILITY_CONTEXT_ELEMENT Elements[]; |
| } ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION, * PACTIVATION_CONTEXT_COMPATIBIL
ITY_INFORMATION; | | } ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION, * PACTIVATION_CONTEXT_COMPATIBIL
ITY_INFORMATION; |
| | |
|
| | #if _MSC_VER >= 1200 |
| #pragma warning(pop) | | #pragma warning(pop) |
|
| | #endif |
| | |
| typedef const struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION * PCACTIVATIO
N_CONTEXT_COMPATIBILITY_INFORMATION; | | typedef const struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION * PCACTIVATIO
N_CONTEXT_COMPATIBILITY_INFORMATION; |
| | |
|
| #define MAX_SUPPORTED_OS_NUM (4) | | #endif |
| #define INVALID_OS_COUNT (0xffff) | | |
| | |
| typedef struct _SUPPORTED_OS_INFO { | | typedef struct _SUPPORTED_OS_INFO { |
|
| WORD OsCount; | | WORD MajorVersion; |
| WORD MitigationExist; | | WORD MinorVersion; |
| WORD OsList[MAX_SUPPORTED_OS_NUM]; | | |
| } SUPPORTED_OS_INFO, *PSUPPORTED_OS_INFO; | | } SUPPORTED_OS_INFO, *PSUPPORTED_OS_INFO; |
| | |
| typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION { | | typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION { |
| DWORD dwFlags; | | DWORD dwFlags; |
| DWORD ulFormatVersion; | | DWORD ulFormatVersion; |
| DWORD ulAssemblyCount; | | DWORD ulAssemblyCount; |
| DWORD ulRootManifestPathType; | | DWORD ulRootManifestPathType; |
| DWORD ulRootManifestPathChars; | | DWORD ulRootManifestPathChars; |
| DWORD ulRootConfigurationPathType; | | DWORD ulRootConfigurationPathType; |
| DWORD ulRootConfigurationPathChars; | | DWORD ulRootConfigurationPathChars; |
| | |
| skipping to change at line 18219 | | skipping to change at line 18935 |
| DWORD ContextSwitchCount; | | DWORD ContextSwitchCount; |
| DWORD64 WaitReasonBitMap; | | DWORD64 WaitReasonBitMap; |
| DWORD64 CycleTime; | | DWORD64 CycleTime; |
| DWORD RetryCount; | | DWORD RetryCount; |
| DWORD Reserved; | | DWORD Reserved; |
| HARDWARE_COUNTER_DATA HwCounters[MAX_HW_COUNTERS]; | | HARDWARE_COUNTER_DATA HwCounters[MAX_HW_COUNTERS]; |
| } PERFORMANCE_DATA, *PPERFORMANCE_DATA; | | } PERFORMANCE_DATA, *PPERFORMANCE_DATA; |
| | |
| #define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x00000001 | | #define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x00000001 |
| #define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x00000002 | | #define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x00000002 |
|
| | |
| | #pragma region Desktop Family |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | |
| | #define UNIFIEDBUILDREVISION_KEY L"\\Registry\\Machine\\S |
| | oftware\\Microsoft\\Windows NT\\CurrentVersion" |
| | #define UNIFIEDBUILDREVISION_VALUE L"UBR" |
| | #define UNIFIEDBUILDREVISION_MIN 0x00000000 |
| | |
| | #define DEVICEFAMILYDEVICEFORM_KEY L"\\Registry\\Machine\\S |
| | oftware\\Microsoft\\Windows NT\\CurrentVersion\\OEM" |
| | #define DEVICEFAMILYDEVICEFORM_VALUE L"DeviceForm" |
| | |
| | #define DEVICEFAMILYINFOENUM_UAP 0x00000000 |
| | #define DEVICEFAMILYINFOENUM_WINDOWS_8X 0x00000001 |
| | #define DEVICEFAMILYINFOENUM_WINDOWS_PHONE_8X 0x00000002 |
| | #define DEVICEFAMILYINFOENUM_DESKTOP 0x00000003 |
| | #define DEVICEFAMILYINFOENUM_MOBILE 0x00000004 |
| | #define DEVICEFAMILYINFOENUM_XBOX 0x00000005 |
| | #define DEVICEFAMILYINFOENUM_TEAM 0x00000006 |
| | #define DEVICEFAMILYINFOENUM_IOT 0x00000007 |
| | #define DEVICEFAMILYINFOENUM_IOT_HEADLESS 0x00000008 |
| | #define DEVICEFAMILYINFOENUM_SERVER 0x00000009 |
| | #define DEVICEFAMILYINFOENUM_HOLOGRAPHIC 0x0000000A |
| | #define DEVICEFAMILYINFOENUM_XBOXSRA 0x0000000B |
| | #define DEVICEFAMILYINFOENUM_XBOXERA 0x0000000C |
| | |
| | #define DEVICEFAMILYINFOENUM_MAX 0x0000000C |
| | |
| | #define DEVICEFAMILYDEVICEFORM_UNKNOWN 0x00000000 |
| | #define DEVICEFAMILYDEVICEFORM_PHONE 0x00000001 |
| | #define DEVICEFAMILYDEVICEFORM_TABLET 0x00000002 |
| | #define DEVICEFAMILYDEVICEFORM_DESKTOP 0x00000003 |
| | #define DEVICEFAMILYDEVICEFORM_NOTEBOOK 0x00000004 |
| | #define DEVICEFAMILYDEVICEFORM_CONVERTIBLE 0x00000005 |
| | #define DEVICEFAMILYDEVICEFORM_DETACHABLE 0x00000006 |
| | #define DEVICEFAMILYDEVICEFORM_ALLINONE 0x00000007 |
| | #define DEVICEFAMILYDEVICEFORM_STICKPC 0x00000008 |
| | #define DEVICEFAMILYDEVICEFORM_PUCK 0x00000009 |
| | #define DEVICEFAMILYDEVICEFORM_LARGESCREEN 0x0000000A |
| | #define DEVICEFAMILYDEVICEFORM_HMD 0x0000000B |
| | #define DEVICEFAMILYDEVICEFORM_INDUSTRY_HANDHELD 0x0000000C |
| | #define DEVICEFAMILYDEVICEFORM_INDUSTRY_TABLET 0x0000000D |
| | #define DEVICEFAMILYDEVICEFORM_BANKING 0x0000000E |
| | #define DEVICEFAMILYDEVICEFORM_BUILDING_AUTOMATION 0x0000000F |
| | #define DEVICEFAMILYDEVICEFORM_DIGITAL_SIGNAGE 0x00000010 |
| | #define DEVICEFAMILYDEVICEFORM_GAMING 0x00000011 |
| | #define DEVICEFAMILYDEVICEFORM_HOME_AUTOMATION 0x00000012 |
| | #define DEVICEFAMILYDEVICEFORM_INDUSTRIAL_AUTOMATION 0x00000013 |
| | #define DEVICEFAMILYDEVICEFORM_KIOSK 0x00000014 |
| | #define DEVICEFAMILYDEVICEFORM_MAKER_BOARD 0x00000015 |
| | #define DEVICEFAMILYDEVICEFORM_MEDICAL 0x00000016 |
| | #define DEVICEFAMILYDEVICEFORM_NETWORKING 0x00000017 |
| | #define DEVICEFAMILYDEVICEFORM_POINT_OF_SERVICE 0x00000018 |
| | #define DEVICEFAMILYDEVICEFORM_PRINTING 0x00000019 |
| | #define DEVICEFAMILYDEVICEFORM_THIN_CLIENT 0x0000001A |
| | #define DEVICEFAMILYDEVICEFORM_TOY 0x0000001B |
| | #define DEVICEFAMILYDEVICEFORM_VENDING 0x0000001C |
| | #define DEVICEFAMILYDEVICEFORM_INDUSTRY_OTHER 0x0000001D |
| | |
| | #define DEVICEFAMILYDEVICEFORM_MAX 0x0000001D |
| | |
| | VOID |
| | NTAPI |
| | RtlGetDeviceFamilyInfoEnum( |
| | _Out_opt_ ULONGLONG *pullUAPInfo, |
| | _Out_opt_ DWORD *pulDeviceFamily, |
| | _Out_opt_ DWORD *pulDeviceForm |
| | ); |
| | |
| | DWORD |
| | NTAPI |
| | RtlConvertDeviceFamilyInfoToString( |
| | _Inout_ PDWORD pulDeviceFamilyBufferSize, |
| | _Inout_ PDWORD pulDeviceFormBufferSize, |
| | _Out_writes_bytes_(*pulDeviceFamilyBufferSize) PWSTR DeviceFamily, |
| | _Out_writes_bytes_(*pulDeviceFormBufferSize) PWSTR DeviceForm |
| | |
| | ); |
| | |
| | DWORD |
| | NTAPI |
| | RtlSwitchedVVI( |
| | _In_ PRTL_OSVERSIONINFOEXW VersionInfo, |
| | _In_ DWORD TypeMask, |
| | _In_ ULONGLONG ConditionMask |
| | ); |
| | |
| | #endif // (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) |
| | |
| | #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) |
| | #pragma endregion |
| | |
| #define DLL_PROCESS_ATTACH 1 | | #define DLL_PROCESS_ATTACH 1 |
| #define DLL_THREAD_ATTACH 2 | | #define DLL_THREAD_ATTACH 2 |
| #define DLL_THREAD_DETACH 3 | | #define DLL_THREAD_DETACH 3 |
| #define DLL_PROCESS_DETACH 0 | | #define DLL_PROCESS_DETACH 0 |
| | |
| // | | // |
| // Defines for the READ flags for Eventlogging | | // Defines for the READ flags for Eventlogging |
| // | | // |
| #define EVENTLOG_SEQUENTIAL_READ 0x0001 | | #define EVENTLOG_SEQUENTIAL_READ 0x0001 |
| #define EVENTLOG_SEEK_READ 0x0002 | | #define EVENTLOG_SEEK_READ 0x0002 |
| | |
| skipping to change at line 18335 | | skipping to change at line 19144 |
| | |
| #if _MSC_VER >= 1200 | | #if _MSC_VER >= 1200 |
| #pragma warning(pop) | | #pragma warning(pop) |
| #else | | #else |
| #pragma warning(default : 4200) /* nonstandard extension used : zero-sized array
in struct/union */ | | #pragma warning(default : 4200) /* nonstandard extension used : zero-sized array
in struct/union */ |
| #endif | | #endif |
| //SS: end of changes to support clustering | | //SS: end of changes to support clustering |
| // | | // |
| | |
| // begin_wdm | | // begin_wdm |
|
| | // begin_access |
| | |
| // | | // |
| // Registry Specific Access Rights. | | // Registry Specific Access Rights. |
| // | | // |
| | |
| #define KEY_QUERY_VALUE (0x0001) | | #define KEY_QUERY_VALUE (0x0001) |
| #define KEY_SET_VALUE (0x0002) | | #define KEY_SET_VALUE (0x0002) |
| #define KEY_CREATE_SUB_KEY (0x0004) | | #define KEY_CREATE_SUB_KEY (0x0004) |
| #define KEY_ENUMERATE_SUB_KEYS (0x0008) | | #define KEY_ENUMERATE_SUB_KEYS (0x0008) |
| #define KEY_NOTIFY (0x0010) | | #define KEY_NOTIFY (0x0010) |
| #define KEY_CREATE_LINK (0x0020) | | #define KEY_CREATE_LINK (0x0020) |
| | |
| skipping to change at line 18376 | | skipping to change at line 19187 |
| #define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\ | | #define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\ |
| KEY_QUERY_VALUE |\ | | KEY_QUERY_VALUE |\ |
| KEY_SET_VALUE |\ | | KEY_SET_VALUE |\ |
| KEY_CREATE_SUB_KEY |\ | | KEY_CREATE_SUB_KEY |\ |
| KEY_ENUMERATE_SUB_KEYS |\ | | KEY_ENUMERATE_SUB_KEYS |\ |
| KEY_NOTIFY |\ | | KEY_NOTIFY |\ |
| KEY_CREATE_LINK) \ | | KEY_CREATE_LINK) \ |
| & \ | | & \ |
| (~SYNCHRONIZE)) | | (~SYNCHRONIZE)) |
| | |
|
| | // end_access |
| | |
| // | | // |
| // Open/Create Options | | // Open/Create Options |
| // | | // |
| | |
| #define REG_OPTION_RESERVED (0x00000000L) // Parameter is reserved | | #define REG_OPTION_RESERVED (0x00000000L) // Parameter is reserved |
| | |
| #define REG_OPTION_NON_VOLATILE (0x00000000L) // Key is preserved | | #define REG_OPTION_NON_VOLATILE (0x00000000L) // Key is preserved |
| // when system is rebooted | | // when system is rebooted |
| | |
| #define REG_OPTION_VOLATILE (0x00000001L) // Key is not preserved | | #define REG_OPTION_VOLATILE (0x00000001L) // Key is not preserved |
| | |
| skipping to change at line 18441 | | skipping to change at line 19254 |
| #define REG_FORCE_RESTORE (0x00000008L) // Force the restore pro
cess even when we have open handles on subkeys | | #define REG_FORCE_RESTORE (0x00000008L) // Force the restore pro
cess even when we have open handles on subkeys |
| #define REG_APP_HIVE (0x00000010L) // Loads the hive visibl
e to the calling process | | #define REG_APP_HIVE (0x00000010L) // Loads the hive visibl
e to the calling process |
| #define REG_PROCESS_PRIVATE (0x00000020L) // Hive cannot be mounte
d by any other process while in use | | #define REG_PROCESS_PRIVATE (0x00000020L) // Hive cannot be mounte
d by any other process while in use |
| #define REG_START_JOURNAL (0x00000040L) // Starts Hive Journal | | #define REG_START_JOURNAL (0x00000040L) // Starts Hive Journal |
| #define REG_HIVE_EXACT_FILE_GROWTH (0x00000080L) // Grow hive file in exa
ct 4k increments | | #define REG_HIVE_EXACT_FILE_GROWTH (0x00000080L) // Grow hive file in exa
ct 4k increments |
| #define REG_HIVE_NO_RM (0x00000100L) // No RM is started for
this hive (no transactions) | | #define REG_HIVE_NO_RM (0x00000100L) // No RM is started for
this hive (no transactions) |
| #define REG_HIVE_SINGLE_LOG (0x00000200L) // Legacy single logging
is used for this hive | | #define REG_HIVE_SINGLE_LOG (0x00000200L) // Legacy single logging
is used for this hive |
| #define REG_BOOT_HIVE (0x00000400L) // This hive might be us
ed by the OS loader | | #define REG_BOOT_HIVE (0x00000400L) // This hive might be us
ed by the OS loader |
| #define REG_LOAD_HIVE_OPEN_HANDLE (0x00000800L) // Load the hive and ret
urn a handle to its root kcb | | #define REG_LOAD_HIVE_OPEN_HANDLE (0x00000800L) // Load the hive and ret
urn a handle to its root kcb |
| #define REG_FLUSH_HIVE_FILE_GROWTH (0x00001000L) // Flush changes to prim
ary hive file size as part of all flushes | | #define REG_FLUSH_HIVE_FILE_GROWTH (0x00001000L) // Flush changes to prim
ary hive file size as part of all flushes |
|
| | #define REG_OPEN_READ_ONLY (0x00002000L) // Open a hive's files i |
| | n read-only mode |
| | #define REG_APP_HIVE_OPEN_READ_ONLY (REG_OPEN_READ_ONLY) // Open an app hi |
| | ve's files in read-only mode (if the hive was not previously loaded) |
| | |
| // | | // |
| // Unload Flags | | // Unload Flags |
| // | | // |
| #define REG_FORCE_UNLOAD 1 | | #define REG_FORCE_UNLOAD 1 |
| | |
| // | | // |
| // Notify filter values | | // Notify filter values |
| // | | // |
| | |
| | |
| skipping to change at line 18507 | | skipping to change at line 19322 |
| | |
| #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \ | | #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | \ |
| SERVICE_FILE_SYSTEM_DRIVER | \ | | SERVICE_FILE_SYSTEM_DRIVER | \ |
| SERVICE_RECOGNIZER_DRIVER) | | SERVICE_RECOGNIZER_DRIVER) |
| | |
| #define SERVICE_WIN32_OWN_PROCESS 0x00000010 | | #define SERVICE_WIN32_OWN_PROCESS 0x00000010 |
| #define SERVICE_WIN32_SHARE_PROCESS 0x00000020 | | #define SERVICE_WIN32_SHARE_PROCESS 0x00000020 |
| #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \ | | #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | \ |
| SERVICE_WIN32_SHARE_PROCESS) | | SERVICE_WIN32_SHARE_PROCESS) |
| | |
|
| | #define SERVICE_USER_SERVICE 0x00000040 |
| | #define SERVICE_USERSERVICE_INSTANCE 0x00000080 |
| | |
| | #define SERVICE_USER_SHARE_PROCESS (SERVICE_USER_SERVICE | \ |
| | SERVICE_WIN32_SHARE_PROCESS) |
| | #define SERVICE_USER_OWN_PROCESS (SERVICE_USER_SERVICE | \ |
| | SERVICE_WIN32_OWN_PROCESS) |
| | |
| #define SERVICE_INTERACTIVE_PROCESS 0x00000100 | | #define SERVICE_INTERACTIVE_PROCESS 0x00000100 |
| | |
| #define SERVICE_TYPE_ALL (SERVICE_WIN32 | \ | | #define SERVICE_TYPE_ALL (SERVICE_WIN32 | \ |
| SERVICE_ADAPTER | \ | | SERVICE_ADAPTER | \ |
| SERVICE_DRIVER | \ | | SERVICE_DRIVER | \ |
|
| SERVICE_INTERACTIVE_PROCESS) | | SERVICE_INTERACTIVE_PROCESS | \ |
| | SERVICE_USER_SERVICE | \ |
| | SERVICE_USERSERVICE_INSTANCE) |
| | |
| // | | // |
| // Start Type | | // Start Type |
| // | | // |
| | |
| #define SERVICE_BOOT_START 0x00000000 | | #define SERVICE_BOOT_START 0x00000000 |
| #define SERVICE_SYSTEM_START 0x00000001 | | #define SERVICE_SYSTEM_START 0x00000001 |
| #define SERVICE_AUTO_START 0x00000002 | | #define SERVICE_AUTO_START 0x00000002 |
| #define SERVICE_DEMAND_START 0x00000003 | | #define SERVICE_DEMAND_START 0x00000003 |
| #define SERVICE_DISABLED 0x00000004 | | #define SERVICE_DISABLED 0x00000004 |
| | |
| skipping to change at line 18880 | | skipping to change at line 19705 |
| #endif | | #endif |
| #ifndef _NTTMAPI_ | | #ifndef _NTTMAPI_ |
| #define _NTTMAPI_ | | #define _NTTMAPI_ |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| extern "C" { | | extern "C" { |
| #endif | | #endif |
| | |
| #include <ktmtypes.h> | | #include <ktmtypes.h> |
| | |
|
| | #if _MSC_VER >= 1200 |
| | #pragma warning(push) |
| | #pragma warning(disable:4820) // padding added after data member |
| | #endif |
| | |
| // | | // |
| // Types for Nt level TM calls | | // Types for Nt level TM calls |
| // | | // |
| | |
|
| | // begin_access |
| | |
| // | | // |
| // KTM Tm object rights | | // KTM Tm object rights |
| // | | // |
| #define TRANSACTIONMANAGER_QUERY_INFORMATION ( 0x0001 ) | | #define TRANSACTIONMANAGER_QUERY_INFORMATION ( 0x0001 ) |
| #define TRANSACTIONMANAGER_SET_INFORMATION ( 0x0002 ) | | #define TRANSACTIONMANAGER_SET_INFORMATION ( 0x0002 ) |
| #define TRANSACTIONMANAGER_RECOVER ( 0x0004 ) | | #define TRANSACTIONMANAGER_RECOVER ( 0x0004 ) |
| #define TRANSACTIONMANAGER_RENAME ( 0x0008 ) | | #define TRANSACTIONMANAGER_RENAME ( 0x0008 ) |
| #define TRANSACTIONMANAGER_CREATE_RM ( 0x0010 ) | | #define TRANSACTIONMANAGER_CREATE_RM ( 0x0010 ) |
| | |
| // The following right is intended for DTC's use only; it will be | | // The following right is intended for DTC's use only; it will be |
| | |
| skipping to change at line 19037 | | skipping to change at line 19869 |
| #define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ | | #define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ |
| ENLISTMENT_RECOVER |\ | | ENLISTMENT_RECOVER |\ |
| ENLISTMENT_SUBORDINATE_RIGHTS |\ | | ENLISTMENT_SUBORDINATE_RIGHTS |\ |
| ENLISTMENT_SUPERIOR_RIGHTS) | | ENLISTMENT_SUPERIOR_RIGHTS) |
| | |
| #define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ | | #define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ |
| ENLISTMENT_GENERIC_READ |\ | | ENLISTMENT_GENERIC_READ |\ |
| ENLISTMENT_GENERIC_WRITE |\ | | ENLISTMENT_GENERIC_WRITE |\ |
| ENLISTMENT_GENERIC_EXECUTE) | | ENLISTMENT_GENERIC_EXECUTE) |
| | |
|
| | // end_access |
| | |
| // | | // |
| // Transaction outcomes. | | // Transaction outcomes. |
| // | | // |
| // TODO: warning, must match values in KTRANSACTION_OUTCOME duplicated def | | // TODO: warning, must match values in KTRANSACTION_OUTCOME duplicated def |
| // in tm.h. | | // in tm.h. |
| // | | // |
| | |
| typedef enum _TRANSACTION_OUTCOME { | | typedef enum _TRANSACTION_OUTCOME { |
| TransactionOutcomeUndetermined = 1, | | TransactionOutcomeUndetermined = 1, |
| TransactionOutcomeCommitted, | | TransactionOutcomeCommitted, |
| | |
| skipping to change at line 19243 | | skipping to change at line 20077 |
| // | | // |
| // ObjectIdCount GUIDs from the namespace specified. | | // ObjectIdCount GUIDs from the namespace specified. |
| // | | // |
| | |
| GUID ObjectIds[1]; | | GUID ObjectIds[1]; |
| | |
| } KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR; | | } KTMOBJECT_CURSOR, *PKTMOBJECT_CURSOR; |
| | |
| // begin_wdm | | // begin_wdm |
| | |
|
| | #if _MSC_VER >= 1200 |
| | #pragma warning(pop) |
| | #endif |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| } | | } |
| #endif | | #endif |
| | |
| #endif // _NTTMAPI_ | | #endif // _NTTMAPI_ |
| typedef DWORD TP_VERSION, *PTP_VERSION; | | typedef DWORD TP_VERSION, *PTP_VERSION; |
| | |
| typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE, *PTP_CALLBACK_INSTANC
E; | | typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE, *PTP_CALLBACK_INSTANC
E; |
| | |
| typedef VOID (NTAPI *PTP_SIMPLE_CALLBACK)( | | typedef VOID (NTAPI *PTP_SIMPLE_CALLBACK)( |
| | |
| skipping to change at line 19575 | | skipping to change at line 20413 |
| GetFiberData ( | | GetFiberData ( |
| VOID | | VOID |
| ) | | ) |
| | |
| { | | { |
| return *(PVOID *)GetCurrentFiber(); | | return *(PVOID *)GetCurrentFiber(); |
| } | | } |
| | |
| #endif // _M_ARM && !defined(__midl) && !defined(_M_CEE_PURE) | | #endif // _M_ARM && !defined(__midl) && !defined(_M_CEE_PURE) |
| | |
|
| | #if defined(_M_ARM64) && !defined(__midl) && !defined(_M_CEE_PURE) |
| | |
| | __forceinline |
| | struct _TEB * |
| | NtCurrentTeb ( |
| | VOID |
| | ) |
| | { |
| | return (struct _TEB *)__getReg(18); |
| | } |
| | |
| | __forceinline |
| | PVOID |
| | GetCurrentFiber ( |
| | VOID |
| | ) |
| | { |
| | return ((PNT_TIB )__getReg(18))->FiberData; |
| | } |
| | |
| | __forceinline |
| | PVOID |
| | GetFiberData ( |
| | VOID |
| | ) |
| | |
| | { |
| | return *(PVOID *)GetCurrentFiber(); |
| | } |
| | |
| | #endif // _M_ARM64 && !defined(__midl) && !defined(_M_CEE_PURE) |
| | |
| #if defined(_M_IX86) && !defined(MIDL_PASS) | | #if defined(_M_IX86) && !defined(MIDL_PASS) |
| | |
| #define PcTeb 0x18 | | #define PcTeb 0x18 |
| | |
| #if !defined(_M_CEE_PURE) | | #if !defined(_M_CEE_PURE) |
| | |
| __inline struct _TEB * NtCurrentTeb( void ) { return (struct _TEB *) (ULONG_PTR)
__readfsdword (PcTeb); } | | __inline struct _TEB * NtCurrentTeb( void ) { return (struct _TEB *) (ULONG_PTR)
__readfsdword (PcTeb); } |
| | |
| #endif // !defined(_M_CEE_PURE) | | #endif // !defined(_M_CEE_PURE) |
| | |
| | |
| skipping to change at line 19608 | | skipping to change at line 20478 |
| #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11) | | #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11) |
| #endif // winnt_only | | #endif // winnt_only |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| } | | } |
| #endif | | #endif |
| | |
| #if _MSC_VER >= 1200 | | #if _MSC_VER >= 1200 |
| #pragma warning(pop) | | #pragma warning(pop) |
| #else | | #else |
|
| #pragma warning(default:4201) | | #pragma warning(default:4200) // nonstandard extension used : zero-sized array i |
| #pragma warning(default:4214) | | n struct/union |
| | #pragma warning(default:4201) // named type definition in parentheses |
| | #pragma warning(default:4214) // bit field types other than int |
| #endif | | #endif |
| | |
| #endif /* _WINNT_ */ | | #endif /* _WINNT_ */ |
| | |
| End of changes. 337 change blocks. |
| 2276 lines changed or deleted | | 3223 lines changed or added |
|