mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 14:53:40 +00:00
[NDK] Fix/improve definition of TEB
This also changes the default definition for NTDDI_VERSION in sdkddkver.h to NTDDI_WS03SP1, when _WIN32_WINNT is _WIN32_WINNT_WS03.
This commit is contained in:
parent
30cd606fe2
commit
95827a70e6
2 changed files with 168 additions and 33 deletions
|
@ -1,3 +1,23 @@
|
||||||
|
/*++ NDK Version: 0098
|
||||||
|
|
||||||
|
Copyright (c) Alex Ionescu. All rights reserved.
|
||||||
|
|
||||||
|
Header Name:
|
||||||
|
|
||||||
|
peb_teb.h
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
Definition of PEB/PEB32/PEB64 and TEB/TEB32/TEB64
|
||||||
|
|
||||||
|
Author:
|
||||||
|
|
||||||
|
Timo Kreuzer (timo.kreuzer@reactos.org)
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#include <rtltypes.h>
|
||||||
|
|
||||||
#define PASTE2(x,y) x##y
|
#define PASTE2(x,y) x##y
|
||||||
#define PASTE(x,y) PASTE2(x,y)
|
#define PASTE(x,y) PASTE2(x,y)
|
||||||
|
|
||||||
|
@ -13,8 +33,12 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(_WIN64) && !defined(EXPLICIT_32BIT)) || defined(EXPLICIT_64BIT)
|
#if (defined(_WIN64) && !defined(EXPLICIT_32BIT)) || defined(EXPLICIT_64BIT)
|
||||||
|
#define _STRUCT64
|
||||||
|
#define _SELECT3264(x32, x64) (x64)
|
||||||
#define GDI_HANDLE_BUFFER_SIZE 60
|
#define GDI_HANDLE_BUFFER_SIZE 60
|
||||||
#else
|
#else
|
||||||
|
#undef _STRUCT64
|
||||||
|
#define _SELECT3264(x32, x64) (x32)
|
||||||
#define GDI_HANDLE_BUFFER_SIZE 34
|
#define GDI_HANDLE_BUFFER_SIZE 34
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -157,7 +181,7 @@ typedef struct STRUCT(_PEB)
|
||||||
|
|
||||||
#undef PPEB
|
#undef PPEB
|
||||||
|
|
||||||
#if defined(_WIN64) && !defined(EXPLICIT_32BIT)
|
#ifdef _STRUCT64
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Mutant) == 0x08);
|
C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Mutant) == 0x08);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Ldr) == 0x18);
|
C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Ldr) == 0x18);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FastPebLock) == 0x038);
|
C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FastPebLock) == 0x038);
|
||||||
|
@ -220,19 +244,49 @@ typedef struct STRUCT(_TEB)
|
||||||
PTR(PVOID) WOW32Reserved;
|
PTR(PVOID) WOW32Reserved;
|
||||||
LCID CurrentLocale;
|
LCID CurrentLocale;
|
||||||
ULONG FpSoftwareStatusRegister;
|
ULONG FpSoftwareStatusRegister;
|
||||||
PTR(PVOID) SystemReserved1[54];
|
|
||||||
LONG ExceptionCode;
|
#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10240.16384
|
||||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
PTR(PVOID) ReservedForDebuggerInstrumentation[16];
|
||||||
PTR(struct _ACTIVATION_CONTEXT_STACK*) ActivationContextStackPointer;
|
PTR(PVOID) SystemReserved1[38];
|
||||||
UCHAR SpareBytes1[0x30 - 3 * sizeof(PTR(PVOID))];
|
|
||||||
ULONG TxFsContext;
|
|
||||||
#elif (NTDDI_VERSION >= NTDDI_WS03)
|
|
||||||
PTR(struct _ACTIVATION_CONTEXT_STACK*) ActivationContextStackPointer;
|
|
||||||
UCHAR SpareBytes1[0x34 - 3 * sizeof(PTR(PVOID))];
|
|
||||||
#else
|
#else
|
||||||
ACTIVATION_CONTEXT_STACK ActivationContextStack;
|
PTR(PVOID) SystemReserved1[54];
|
||||||
UCHAR SpareBytes1[24];
|
|
||||||
#endif
|
#endif
|
||||||
|
LONG ExceptionCode;
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
UCHAR Padding0[4];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
PTR(PACTIVATION_CONTEXT_STACK) ActivationContextStackPointer;
|
||||||
|
#else
|
||||||
|
STRUCT(ACTIVATION_CONTEXT_STACK) ActivationContextStack;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.9926.0
|
||||||
|
PTR(ULONG_PTR) InstrumentationCallbackSp;
|
||||||
|
PTR(ULONG_PTR) InstrumentationCallbackPreviousPc;
|
||||||
|
PTR(ULONG_PTR) InstrumentationCallbackPreviousSp;
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
ULONG TxFsContext;
|
||||||
|
UCHAR InstrumentationCallbackDisabled;
|
||||||
|
UCHAR Padding1[3];
|
||||||
|
#else
|
||||||
|
UCHAR InstrumentationCallbackDisabled;
|
||||||
|
UCHAR SpareBytes[23];
|
||||||
|
ULONG TxFsContext;
|
||||||
|
#endif
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
UCHAR SpareBytes[_SELECT3264(36, 24)];
|
||||||
|
ULONG TxFsContext;
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_VISTA)
|
||||||
|
UCHAR SpareBytes1[_SELECT3264(36, 24)];
|
||||||
|
ULONG TxFsContext;
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
|
UCHAR SpareBytes1[_SELECT3264(40, 28)];
|
||||||
|
#else // only 32 bit version of 2k3 pre-SP1 exist
|
||||||
|
UCHAR SpareBytes1[_SELECT3264(24, -1)];
|
||||||
|
#endif
|
||||||
|
|
||||||
STRUCT(GDI_TEB_BATCH) GdiTebBatch;
|
STRUCT(GDI_TEB_BATCH) GdiTebBatch;
|
||||||
STRUCT(CLIENT_ID) RealClientId;
|
STRUCT(CLIENT_ID) RealClientId;
|
||||||
PTR(PVOID) GdiCachedProcessHandle;
|
PTR(PVOID) GdiCachedProcessHandle;
|
||||||
|
@ -248,9 +302,15 @@ typedef struct STRUCT(_TEB)
|
||||||
PTR(PVOID) glTable;
|
PTR(PVOID) glTable;
|
||||||
PTR(PVOID) glCurrentRC;
|
PTR(PVOID) glCurrentRC;
|
||||||
PTR(PVOID) glContext;
|
PTR(PVOID) glContext;
|
||||||
NTSTATUS LastStatusValue;
|
ULONG LastStatusValue;
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
UCHAR Padding2[4];
|
||||||
|
#endif
|
||||||
STRUCT(UNICODE_STRING) StaticUnicodeString;
|
STRUCT(UNICODE_STRING) StaticUnicodeString;
|
||||||
WCHAR StaticUnicodeBuffer[261];
|
WCHAR StaticUnicodeBuffer[261];
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
UCHAR Padding3[6];
|
||||||
|
#endif
|
||||||
PTR(PVOID) DeallocationStack;
|
PTR(PVOID) DeallocationStack;
|
||||||
PTR(PVOID) TlsSlots[64];
|
PTR(PVOID) TlsSlots[64];
|
||||||
STRUCT(LIST_ENTRY) TlsLinks;
|
STRUCT(LIST_ENTRY) TlsLinks;
|
||||||
|
@ -262,42 +322,73 @@ typedef struct STRUCT(_TEB)
|
||||||
#else
|
#else
|
||||||
ULONG HardErrorsAreDisabled;
|
ULONG HardErrorsAreDisabled;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
UCHAR Padding4[4];
|
||||||
|
#endif
|
||||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
PTR(PVOID) Instrumentation[13 - sizeof(GUID)/sizeof(PTR(PVOID))];
|
PTR(PVOID) Instrumentation[13 - sizeof(GUID)/sizeof(PTR(PVOID))];
|
||||||
GUID ActivityId;
|
GUID ActivityId;
|
||||||
PTR(PVOID) SubProcessTag;
|
PTR(PVOID) SubProcessTag;
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN8) // since ???
|
||||||
|
PTR(PVOID) PerflibData;
|
||||||
|
#else
|
||||||
PTR(PVOID) EtwLocalData;
|
PTR(PVOID) EtwLocalData;
|
||||||
|
#endif
|
||||||
PTR(PVOID) EtwTraceData;
|
PTR(PVOID) EtwTraceData;
|
||||||
#elif (NTDDI_VERSION >= NTDDI_WS03)
|
#elif (NTDDI_VERSION >= NTDDI_WS03)
|
||||||
PTR(PVOID) Instrumentation[14];
|
PTR(PVOID) Instrumentation[14];
|
||||||
PTR(PVOID) SubProcessTag;
|
PTR(PVOID) SubProcessTag;
|
||||||
PTR(PVOID) EtwLocalData;
|
PTR(PVOID) EtwTraceData;
|
||||||
#else
|
#else
|
||||||
PTR(PVOID) Instrumentation[16];
|
PTR(PVOID) Instrumentation[16];
|
||||||
#endif
|
#endif
|
||||||
PTR(PVOID) WinSockData;
|
PTR(PVOID) WinSockData;
|
||||||
ULONG GdiBatchCount;
|
ULONG GdiBatchCount;
|
||||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
#if (NTDDI_VERSION >= NTDDI_WIN10)
|
||||||
|
union
|
||||||
|
{
|
||||||
|
PROCESSOR_NUMBER CurrentIdealProcessor;
|
||||||
|
ULONG32 IdealProcessorValue;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
UCHAR ReservedPad0;
|
||||||
|
UCHAR ReservedPad1;
|
||||||
|
UCHAR ReservedPad2;
|
||||||
|
UCHAR IdealProcessor;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
BOOLEAN SpareBool0;
|
BOOLEAN SpareBool0;
|
||||||
BOOLEAN SpareBool1;
|
BOOLEAN SpareBool1;
|
||||||
BOOLEAN SpareBool2;
|
BOOLEAN SpareBool2;
|
||||||
|
UCHAR IdealProcessor;
|
||||||
#else
|
#else
|
||||||
BOOLEAN InDbgPrint;
|
BOOLEAN InDbgPrint;
|
||||||
BOOLEAN FreeStackOnTermination;
|
BOOLEAN FreeStackOnTermination;
|
||||||
BOOLEAN HasFiberData;
|
BOOLEAN HasFiberData;
|
||||||
#endif
|
|
||||||
UCHAR IdealProcessor;
|
UCHAR IdealProcessor;
|
||||||
|
#endif
|
||||||
#if (NTDDI_VERSION >= NTDDI_WS03)
|
#if (NTDDI_VERSION >= NTDDI_WS03)
|
||||||
ULONG GuaranteedStackBytes;
|
ULONG GuaranteedStackBytes;
|
||||||
#else
|
#else
|
||||||
ULONG Spare3;
|
ULONG Spare3;
|
||||||
|
#endif
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
UCHAR Padding5[4];
|
||||||
#endif
|
#endif
|
||||||
PTR(PVOID) ReservedForPerf;
|
PTR(PVOID) ReservedForPerf;
|
||||||
PTR(PVOID) ReservedForOle;
|
PTR(PVOID) ReservedForOle;
|
||||||
ULONG WaitingOnLoaderLock;
|
ULONG WaitingOnLoaderLock;
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
UCHAR Padding6[4];
|
||||||
|
#endif
|
||||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
PTR(PVOID) SavedPriorityState;
|
PTR(PVOID) SavedPriorityState;
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN8)
|
||||||
|
PTR(ULONG_PTR) ReservedForCodeCoverage;
|
||||||
|
#else
|
||||||
PTR(ULONG_PTR) SoftPatchPtr1;
|
PTR(ULONG_PTR) SoftPatchPtr1;
|
||||||
|
#endif
|
||||||
PTR(ULONG_PTR) ThreadPoolData;
|
PTR(ULONG_PTR) ThreadPoolData;
|
||||||
#elif (NTDDI_VERSION >= NTDDI_WS03)
|
#elif (NTDDI_VERSION >= NTDDI_WS03)
|
||||||
PTR(ULONG_PTR) SparePointer1;
|
PTR(ULONG_PTR) SparePointer1;
|
||||||
|
@ -307,35 +398,49 @@ typedef struct STRUCT(_TEB)
|
||||||
Wx86ThreadState Wx86Thread;
|
Wx86ThreadState Wx86Thread;
|
||||||
#endif
|
#endif
|
||||||
PTR(PVOID*) TlsExpansionSlots;
|
PTR(PVOID*) TlsExpansionSlots;
|
||||||
#if defined(_WIN64) && !defined(EXPLICIT_32BIT)
|
#ifdef _STRUCT64
|
||||||
PTR(PVOID) DeallocationBStore;
|
PTR(PVOID) DeallocationBStore;
|
||||||
PTR(PVOID) BStoreLimit;
|
PTR(PVOID) BStoreLimit;
|
||||||
#endif
|
#endif
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN10)
|
||||||
|
ULONG MuiGeneration;
|
||||||
|
#else
|
||||||
ULONG ImpersonationLocale;
|
ULONG ImpersonationLocale;
|
||||||
|
#endif
|
||||||
ULONG IsImpersonating;
|
ULONG IsImpersonating;
|
||||||
PTR(PVOID) NlsCache;
|
PTR(PVOID) NlsCache;
|
||||||
PTR(PVOID) pShimData;
|
PTR(PVOID) pShimData;
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN8)
|
||||||
|
USHORT HeapVirtualAffinity;
|
||||||
|
USHORT LowFragHeapDataSlot;
|
||||||
|
#else
|
||||||
ULONG HeapVirtualAffinity;
|
ULONG HeapVirtualAffinity;
|
||||||
|
#endif
|
||||||
|
#ifdef _STRUCT64
|
||||||
|
UCHAR Padding7[4];
|
||||||
|
#endif
|
||||||
PTR(HANDLE) CurrentTransactionHandle;
|
PTR(HANDLE) CurrentTransactionHandle;
|
||||||
PTR(PTEB_ACTIVE_FRAME) ActiveFrame;
|
PTR(PTEB_ACTIVE_FRAME) ActiveFrame;
|
||||||
#if (NTDDI_VERSION >= NTDDI_WS03)
|
#if (NTDDI_VERSION >= NTDDI_WS03)
|
||||||
PVOID FlsData;
|
PTR(PVOID) FlsData;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
PVOID PreferredLangauges;
|
PTR(PVOID) PreferredLanguages;
|
||||||
PVOID UserPrefLanguages;
|
PTR(PVOID) UserPrefLanguages;
|
||||||
PVOID MergedPrefLanguages;
|
PTR(PVOID) MergedPrefLanguages;
|
||||||
ULONG MuiImpersonation;
|
ULONG MuiImpersonation;
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
|
USHORT CrossTebFlags;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
USHORT SpareCrossTebFlags:16;
|
USHORT SpareCrossTebBits:16;
|
||||||
};
|
};
|
||||||
USHORT CrossTebFlags;
|
|
||||||
};
|
};
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
|
USHORT SameTebFlags;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
USHORT DbgSafeThunkCall:1;
|
USHORT DbgSafeThunkCall:1;
|
||||||
|
@ -347,23 +452,45 @@ typedef struct STRUCT(_TEB)
|
||||||
USHORT DbgClonedThread:1;
|
USHORT DbgClonedThread:1;
|
||||||
USHORT SpareSameTebBits:9;
|
USHORT SpareSameTebBits:9;
|
||||||
};
|
};
|
||||||
USHORT SameTebFlags;
|
|
||||||
};
|
};
|
||||||
PTR(PVOID) TxnScopeEntercallback;
|
PTR(PVOID) TxnScopeEnterCallback;
|
||||||
PTR(PVOID) TxnScopeExitCAllback;
|
PTR(PVOID) TxnScopeExitCallback;
|
||||||
PTR(PVOID) TxnScopeContext;
|
PTR(PVOID) TxnScopeContext;
|
||||||
ULONG LockCount;
|
ULONG LockCount;
|
||||||
ULONG ProcessRundown;
|
|
||||||
ULONG64 LastSwitchTime;
|
|
||||||
ULONG64 TotalSwitchOutTime;
|
|
||||||
LARGE_INTEGER WaitReasonBitMap;
|
|
||||||
#else
|
#else
|
||||||
BOOLEAN SafeThunkCall;
|
BOOLEAN SafeThunkCall;
|
||||||
BOOLEAN BooleanSpare[3];
|
BOOLEAN BooleanSpare[3];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN10) // since 10.0.10041.0
|
||||||
|
LONG WowTebOffset;
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
ULONG SpareUlong0;
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
|
ULONG ProcessRundown;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
PTR(PVOID) ResourceRetValue;
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||||
|
ULONG64 LastSwitchTime;
|
||||||
|
ULONG64 TotalSwitchOutTime;
|
||||||
|
LARGE_INTEGER WaitReasonBitMap;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN8)
|
||||||
|
PTR(PVOID) ReservedForWdf;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN10)
|
||||||
|
ULONG64 ReservedForCrt;
|
||||||
|
GUID EffectiveContainerId;
|
||||||
|
#endif
|
||||||
|
|
||||||
} STRUCT(TEB), *STRUCT(PTEB);
|
} STRUCT(TEB), *STRUCT(PTEB);
|
||||||
|
|
||||||
#if defined(_WIN64) && !defined(EXPLICIT_32BIT)
|
#ifdef _STRUCT64
|
||||||
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), NtTib) == 0x000);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x038);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x038);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x2C0);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x2C0);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x2F0);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x2F0);
|
||||||
|
@ -377,9 +504,11 @@ C_ASSERT(FIELD_OFFSET(STRUCT(TEB), TlsExpansionSlots) == 0x1780);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), WaitingOnLoaderLock) == 0x1760);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), WaitingOnLoaderLock) == 0x1760);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0x17C0);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0x17C0);
|
||||||
#else
|
#else
|
||||||
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), NtTib) == 0x000);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x01C);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x01C);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x1A4);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x1A4);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x1D4);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x1D4);
|
||||||
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), RealClientId) == 0x6B4);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), LastStatusValue) == 0xBF4);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), LastStatusValue) == 0xBF4);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), Vdm) == 0xF18);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), Vdm) == 0xF18);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiBatchCount) == 0xF70);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiBatchCount) == 0xF70);
|
||||||
|
@ -387,6 +516,8 @@ C_ASSERT(FIELD_OFFSET(STRUCT(TEB), TlsExpansionSlots) == 0xF94);
|
||||||
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0xFB0);
|
C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0xFB0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef _STRUCT64
|
||||||
|
#undef _SELECT3264
|
||||||
#undef PTR
|
#undef PTR
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#undef PASTE
|
#undef PASTE
|
||||||
|
|
|
@ -129,8 +129,12 @@ Abstract:
|
||||||
#define SUBVER(Version) (((Version) & SUBVERSION_MASK))
|
#define SUBVER(Version) (((Version) & SUBVERSION_MASK))
|
||||||
|
|
||||||
/* Macros to get the NTDDI for a given WIN32 */
|
/* Macros to get the NTDDI for a given WIN32 */
|
||||||
|
#if (_WIN32_WINNT == _WIN32_WINNT_WS03)
|
||||||
|
#define NTDDI_VERSION_FROM_WIN32_WINNT(Version) NTDDI_WS03SP1
|
||||||
|
#else
|
||||||
#define NTDDI_VERSION_FROM_WIN32_WINNT2(Version) Version##0000
|
#define NTDDI_VERSION_FROM_WIN32_WINNT2(Version) Version##0000
|
||||||
#define NTDDI_VERSION_FROM_WIN32_WINNT(Version) NTDDI_VERSION_FROM_WIN32_WINNT2(Version)
|
#define NTDDI_VERSION_FROM_WIN32_WINNT(Version) NTDDI_VERSION_FROM_WIN32_WINNT2(Version)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Select Default _WIN32_WINNT Value */
|
/* Select Default _WIN32_WINNT Value */
|
||||||
#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
|
#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue