include: Always define 32- and 64-bit versions of the TEB and PEB structures.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2021-03-05 15:53:19 +01:00
parent 784faaaea4
commit e2659819b8
3 changed files with 248 additions and 56 deletions

View file

@ -578,27 +578,6 @@ struct cpu
extern struct cpu* dbghelp_current_cpu DECLSPEC_HIDDEN;
/* Abbreviated 32-bit PEB */
typedef struct _PEB32
{
BOOLEAN InheritedAddressSpace;
BOOLEAN ReadImageFileExecOptions;
BOOLEAN BeingDebugged;
BOOLEAN SpareBool;
DWORD Mutant;
DWORD ImageBaseAddress;
DWORD LdrData;
DWORD ProcessParameters;
DWORD SubSystemData;
DWORD ProcessHeap;
DWORD FastPebLock;
DWORD FastPebLockRoutine;
DWORD FastPebUnlockRoutine;
ULONG EnvironmentUpdateCount;
DWORD KernelCallbackTable;
ULONG Reserved[2];
} PEB32;
/* dbghelp.c */
extern struct process* process_find_by_handle(HANDLE hProcess) DECLSPEC_HIDDEN;
extern BOOL validate_addr64(DWORD64 addr) DECLSPEC_HIDDEN;

View file

@ -741,38 +741,6 @@ HRESULT WINAPI /* DECLSPEC_HOTPATCH */ WerUnregisterRuntimeExceptionModule( cons
***********************************************************************/
typedef struct _PEB32
{
BOOLEAN InheritedAddressSpace;
BOOLEAN ReadImageFileExecOptions;
BOOLEAN BeingDebugged;
BOOLEAN SpareBool;
DWORD Mutant;
DWORD ImageBaseAddress;
DWORD LdrData;
} PEB32;
typedef struct _LIST_ENTRY32
{
DWORD Flink;
DWORD Blink;
} LIST_ENTRY32;
typedef struct _PEB_LDR_DATA32
{
ULONG Length;
BOOLEAN Initialized;
DWORD SsHandle;
LIST_ENTRY32 InLoadOrderModuleList;
} PEB_LDR_DATA32;
typedef struct _UNICODE_STRING32
{
USHORT Length;
USHORT MaximumLength;
DWORD Buffer;
} UNICODE_STRING32;
typedef struct _LDR_DATA_TABLE_ENTRY32
{
LIST_ENTRY32 InLoadOrderModuleList;

View file

@ -504,9 +504,18 @@ typedef struct _TEB
/***********************************************************************
* The 64-bit version of the PEB and TEB for WoW64
* The 32-bit/64-bit version of the PEB and TEB for WoW64
*/
#ifndef _WIN64
typedef struct _NT_TIB32
{
ULONG ExceptionList; /* 0000 */
ULONG StackBase; /* 0004 */
ULONG StackLimit; /* 0008 */
ULONG SubSystemTib; /* 000c */
ULONG FiberData; /* 0010 */
ULONG ArbitraryUserPointer; /* 0014 */
ULONG Self; /* 0018 */
} NT_TIB32;
typedef struct _NT_TIB64
{
@ -519,18 +528,37 @@ typedef struct _NT_TIB64
ULONG64 Self; /* 0030 */
} NT_TIB64;
typedef struct _CLIENT_ID32
{
ULONG UniqueProcess;
ULONG UniqueThread;
} CLIENT_ID32;
typedef struct _CLIENT_ID64
{
ULONG64 UniqueProcess;
ULONG64 UniqueThread;
} CLIENT_ID64;
typedef struct _LIST_ENTRY32
{
ULONG Flink;
ULONG Blink;
} LIST_ENTRY32;
typedef struct _LIST_ENTRY64
{
ULONG64 Flink;
ULONG64 Blink;
} LIST_ENTRY64;
typedef struct _UNICODE_STRING32
{
USHORT Length;
USHORT MaximumLength;
ULONG Buffer;
} UNICODE_STRING32;
typedef struct _UNICODE_STRING64
{
USHORT Length;
@ -538,6 +566,15 @@ typedef struct _UNICODE_STRING64
ULONG64 Buffer;
} UNICODE_STRING64;
typedef struct _ACTIVATION_CONTEXT_STACK32
{
ULONG ActiveFrame;
LIST_ENTRY32 FrameListCache;
ULONG Flags;
ULONG NextCookieSequenceNumber;
ULONG32 StackId;
} ACTIVATION_CONTEXT_STACK32;
typedef struct _ACTIVATION_CONTEXT_STACK64
{
ULONG64 ActiveFrame;
@ -547,6 +584,123 @@ typedef struct _ACTIVATION_CONTEXT_STACK64
ULONG64 StackId;
} ACTIVATION_CONTEXT_STACK64;
typedef struct _PEB_LDR_DATA32
{
ULONG Length;
BOOLEAN Initialized;
ULONG SsHandle;
LIST_ENTRY32 InLoadOrderModuleList;
LIST_ENTRY32 InMemoryOrderModuleList;
LIST_ENTRY32 InInitializationOrderModuleList;
ULONG EntryInProgress;
BOOLEAN ShutdownInProgress;
ULONG ShutdownThreadId;
} PEB_LDR_DATA32, *PPEB_LDR_DATA32;
typedef struct _PEB_LDR_DATA64
{
ULONG Length;
BOOLEAN Initialized;
ULONG64 SsHandle;
LIST_ENTRY64 InLoadOrderModuleList;
LIST_ENTRY64 InMemoryOrderModuleList;
LIST_ENTRY64 InInitializationOrderModuleList;
ULONG64 EntryInProgress;
BOOLEAN ShutdownInProgress;
ULONG64 ShutdownThreadId;
} PEB_LDR_DATA64, *PPEB_LDR_DATA64;
typedef struct _PEB32
{
BOOLEAN InheritedAddressSpace; /* 0000 */
BOOLEAN ReadImageFileExecOptions; /* 0001 */
BOOLEAN BeingDebugged; /* 0002 */
BOOLEAN SpareBool; /* 0003 */
ULONG Mutant; /* 0004 */
ULONG ImageBaseAddress; /* 0008 */
ULONG LdrData; /* 000c */
ULONG ProcessParameters; /* 0010 */
ULONG SubSystemData; /* 0014 */
ULONG ProcessHeap; /* 0018 */
ULONG FastPebLock; /* 001c */
ULONG FastPebLockRoutine; /* 0020 */
ULONG FastPebUnlockRoutine; /* 0024 */
ULONG EnvironmentUpdateCount; /* 0028 */
ULONG KernelCallbackTable; /* 002c */
ULONG Reserved; /* 0030 */
ULONG AtlThunkSListPtr32; /* 0034 */
ULONG FreeList; /* 0038 */
ULONG TlsExpansionCounter; /* 003c */
ULONG TlsBitmap; /* 0040 */
ULONG TlsBitmapBits[2]; /* 0044 */
ULONG ReadOnlySharedMemoryBase; /* 004c */
ULONG ReadOnlySharedMemoryHeap; /* 0050 */
ULONG ReadOnlyStaticServerData; /* 0054 */
ULONG AnsiCodePageData; /* 0058 */
ULONG OemCodePageData; /* 005c */
ULONG UnicodeCaseTableData; /* 0060 */
ULONG NumberOfProcessors; /* 0064 */
ULONG NtGlobalFlag; /* 0068 */
LARGE_INTEGER CriticalSectionTimeout; /* 0070 */
ULONG HeapSegmentReserve; /* 0078 */
ULONG HeapSegmentCommit; /* 007c */
ULONG HeapDeCommitTotalFreeThreshold; /* 0080 */
ULONG HeapDeCommitFreeBlockThreshold; /* 0084 */
ULONG NumberOfHeaps; /* 0088 */
ULONG MaximumNumberOfHeaps; /* 008c */
ULONG ProcessHeaps; /* 0090 */
ULONG GdiSharedHandleTable; /* 0094 */
ULONG ProcessStarterHelper; /* 0098 */
ULONG GdiDCAttributeList; /* 009c */
ULONG LoaderLock; /* 00a0 */
ULONG OSMajorVersion; /* 00a4 */
ULONG OSMinorVersion; /* 00a8 */
ULONG OSBuildNumber; /* 00ac */
ULONG OSPlatformId; /* 00b0 */
ULONG ImageSubSystem; /* 00b4 */
ULONG ImageSubSystemMajorVersion; /* 00b8 */
ULONG ImageSubSystemMinorVersion; /* 00bc */
ULONG ImageProcessAffinityMask; /* 00c0 */
ULONG GdiHandleBuffer[28]; /* 00c4 */
ULONG unknown[6]; /* 0134 */
ULONG PostProcessInitRoutine; /* 014c */
ULONG TlsExpansionBitmap; /* 0150 */
ULONG TlsExpansionBitmapBits[32]; /* 0154 */
ULONG SessionId; /* 01d4 */
ULARGE_INTEGER AppCompatFlags; /* 01d8 */
ULARGE_INTEGER AppCompatFlagsUser; /* 01e0 */
ULONG ShimData; /* 01e8 */
ULONG AppCompatInfo; /* 01ec */
UNICODE_STRING CSDVersion; /* 01f0 */
ULONG ActivationContextData; /* 01f8 */
ULONG ProcessAssemblyStorageMap; /* 01fc */
ULONG SystemDefaultActivationData; /* 0200 */
ULONG SystemAssemblyStorageMap; /* 0204 */
ULONG MinimumStackCommit; /* 0208 */
ULONG FlsCallback; /* 020c */
LIST_ENTRY FlsListHead; /* 0210 */
ULONG FlsBitmap; /* 0218 */
ULONG FlsBitmapBits[4]; /* 021c */
ULONG FlsHighIndex; /* 022c */
ULONG WerRegistrationData; /* 0230 */
ULONG WerShipAssertPtr; /* 0234 */
ULONG pUnused; /* 0238 */
ULONG pImageHeaderHash; /* 023c */
ULONG TracingFlags; /* 0240 */
ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0248 */
ULONG TppWorkerpListLock; /* 0250 */
LIST_ENTRY TppWorkerpList; /* 0254 */
ULONG WaitOnAddressHashTable [0x80]; /* 025c */
ULONG TelemetryCoverageHeader; /* 045c */
ULONG CloudFileFlags; /* 0460 */
ULONG CloudFileDiagFlags; /* 0464 */
CHAR PlaceholderCompatibilityMode; /* 0468 */
CHAR PlaceholderCompatibilityModeReserved[7]; /* 0469 */
ULONG LeapSecondData; /* 0470 */
ULONG LeapSecondFlags; /* 0474 */
ULONG NtGlobalFlag2; /* 0478 */
} PEB32;
typedef struct _PEB64
{
BOOLEAN InheritedAddressSpace; /* 0000 */
@ -638,6 +792,98 @@ typedef struct _PEB64
ULONG NtGlobalFlag2; /* 07c4 */
} PEB64;
typedef struct _TEB32
{
NT_TIB32 Tib; /* 0000 */
ULONG EnvironmentPointer; /* 001c */
CLIENT_ID32 ClientId; /* 0020 */
ULONG ActiveRpcHandle; /* 0028 */
ULONG ThreadLocalStoragePointer; /* 002c */
ULONG Peb; /* 0030 */
ULONG LastErrorValue; /* 0034 */
ULONG CountOfOwnedCriticalSections; /* 0038 */
ULONG CsrClientThread; /* 003c */
ULONG Win32ThreadInfo; /* 0040 */
ULONG User32Reserved[26]; /* 0044 */
ULONG UserReserved[5]; /* 00ac */
ULONG WOW32Reserved; /* 00c0 */
ULONG CurrentLocale; /* 00c4 */
ULONG FpSoftwareStatusRegister; /* 00c8 */
ULONG ReservedForDebuggerInstrumentation[16]; /* 00cc */
ULONG SystemReserved1[26]; /* 010c */
char PlaceholderCompatibilityMode; /* 0174 */
char PlaceholderReserved[11]; /* 0175 */
DWORD ProxiedProcessId; /* 0180 */
ACTIVATION_CONTEXT_STACK32 ActivationContextStack; /* 0184 */
UCHAR WorkingOnBehalfOfTicket[8]; /* 019c */
LONG ExceptionCode; /* 01a4 */
ULONG ActivationContextStackPointer; /* 01a8 */
ULONG InstrumentationCallbackSp; /* 01ac */
ULONG InstrumentationCallbackPreviousPc; /* 01b0 */
ULONG InstrumentationCallbackPreviousSp; /* 01b4 */
BOOLEAN InstrumentationCallbackDisabled; /* 01b8 */
BYTE SpareBytes1[23]; /* 01b9 */
ULONG TxFsContext; /* 01d0 */
ULONG GdiTebBatch[0x138]; /* 01d4 */
CLIENT_ID32 RealClientId; /* 06b4 */
ULONG GdiCachedProcessHandle; /* 06bc */
ULONG GdiClientPID; /* 06c0 */
ULONG GdiClientTID; /* 06c4 */
ULONG GdiThreadLocaleInfo; /* 06c8 */
ULONG Win32ClientInfo[62]; /* 06cc */
ULONG glDispatchTable[233]; /* 07c4 */
ULONG glReserved1[29]; /* 0b68 */
ULONG glReserved2; /* 0bdc */
ULONG glSectionInfo; /* 0be0 */
ULONG glSection; /* 0be4 */
ULONG glTable; /* 0be8 */
ULONG glCurrentRC; /* 0bec */
ULONG glContext; /* 0bf0 */
ULONG LastStatusValue; /* 0bf4 */
UNICODE_STRING32 StaticUnicodeString; /* 0bf8 */
WCHAR StaticUnicodeBuffer[261]; /* 0c00 */
ULONG DeallocationStack; /* 0e0c */
ULONG TlsSlots[64]; /* 0e10 */
LIST_ENTRY32 TlsLinks; /* 0f10 */
ULONG Vdm; /* 0f18 */
ULONG ReservedForNtRpc; /* 0f1c */
ULONG DbgSsReserved[2]; /* 0f20 */
ULONG HardErrorDisabled; /* 0f28 */
ULONG Instrumentation[16]; /* 0f2c */
ULONG WinSockData; /* 0f6c */
ULONG GdiBatchCount; /* 0f70 */
ULONG Spare2; /* 0f74 */
ULONG GuaranteedStackBytes; /* 0f78 */
ULONG ReservedForPerf; /* 0f7c */
ULONG ReservedForOle; /* 0f80 */
ULONG WaitingOnLoaderLock; /* 0f84 */
ULONG Reserved5[3]; /* 0f88 */
ULONG TlsExpansionSlots; /* 0f94 */
ULONG ImpersonationLocale; /* 0f98 */
ULONG IsImpersonating; /* 0f9c */
ULONG NlsCache; /* 0fa0 */
ULONG ShimData; /* 0fa4 */
ULONG HeapVirtualAffinity; /* 0fa8 */
ULONG CurrentTransactionHandle; /* 0fac */
ULONG ActiveFrame; /* 0fb0 */
ULONG FlsSlots; /* 0fb4 */
ULONG PreferredLanguages; /* 0fb8 */
ULONG UserPrefLanguages; /* 0fbc */
ULONG MergedPrefLanguages; /* 0fc0 */
ULONG MuiImpersonation; /* 0fc4 */
USHORT CrossTebFlags; /* 0fc8 */
USHORT SameTebFlags; /* 0fca */
ULONG TxnScopeEnterCallback; /* 0fcc */
ULONG TxnScopeExitCallback; /* 0fd0 */
ULONG TxnScopeContext; /* 0fd4 */
ULONG LockCount; /* 0fd8 */
LONG WowTebOffset; /* 0fdc */
ULONG ResourceRetValue; /* 0fe0 */
ULONG ReservedForWdf; /* 0fe4 */
ULONGLONG ReservedForCrt; /* 0fe8 */
GUID EffectiveContainerId; /* 0ff0 */
} TEB32;
typedef struct _TEB64
{
NT_TIB64 Tib; /* 0000 */
@ -734,7 +980,6 @@ typedef struct _TEB64
/* reserved TEB64 TLS slots for Wow64 */
#define WOW64_TLS_FILESYSREDIR 8
#endif /* _WIN64 */
/***********************************************************************
* Enums