Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenpeb_teb.h
Go to the documentation of this file.
00001 #define PASTE2(x,y) x##y 00002 #define PASTE(x,y) PASTE2(x,y) 00003 00004 #ifdef EXPLICIT_32BIT 00005 #define STRUCT(x) PASTE(x,32) 00006 #define PTR(x) ULONG 00007 #elif defined(EXPLICIT_64BIT) 00008 #define STRUCT(x) PASTE(x,64) 00009 #define PTR(x) ULONG64 00010 #else 00011 #define STRUCT(x) x 00012 #define PTR(x) x 00013 #endif 00014 00015 #if (defined(_WIN64) && !defined(EXPLICIT_32BIT)) || defined(EXPLICIT_64BIT) 00016 #define GDI_HANDLE_BUFFER_SIZE 60 00017 #else 00018 #define GDI_HANDLE_BUFFER_SIZE 34 00019 #endif 00020 00021 #if defined(_NTDDK_INCLUDED_) || defined(_NTIFS_) 00022 #define PPEB PPEB_RENAMED 00023 #endif 00024 00025 typedef struct STRUCT(_PEB) 00026 { 00027 BOOLEAN InheritedAddressSpace; 00028 BOOLEAN ReadImageFileExecOptions; 00029 BOOLEAN BeingDebugged; 00030 #if (NTDDI_VERSION >= NTDDI_WS03) 00031 union 00032 { 00033 BOOLEAN BitField; 00034 struct 00035 { 00036 BOOLEAN ImageUsesLargePages:1; 00037 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00038 BOOLEAN IsProtectedProcess:1; 00039 BOOLEAN IsLegacyProcess:1; 00040 BOOLEAN IsImageDynamicallyRelocated:1; 00041 BOOLEAN SkipPatchingUser32Forwarders:1; 00042 BOOLEAN SpareBits:3; 00043 #else 00044 BOOLEAN SpareBits:7; 00045 #endif 00046 }; 00047 }; 00048 #else 00049 BOOLEAN SpareBool; 00050 #endif 00051 PTR(HANDLE) Mutant; 00052 PTR(PVOID) ImageBaseAddress; 00053 PTR(PPEB_LDR_DATA) Ldr; 00054 PTR(struct _RTL_USER_PROCESS_PARAMETERS*) ProcessParameters; 00055 PTR(PVOID) SubSystemData; 00056 PTR(PVOID) ProcessHeap; 00057 PTR(struct _RTL_CRITICAL_SECTION*) FastPebLock; 00058 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00059 PTR(PVOID) AltThunkSListPtr; 00060 PTR(PVOID) IFEOKey; 00061 union 00062 { 00063 ULONG CrossProcessFlags; 00064 struct 00065 { 00066 ULONG ProcessInJob:1; 00067 ULONG ProcessInitializing:1; 00068 ULONG ProcessUsingVEH:1; 00069 ULONG ProcessUsingVCH:1; 00070 ULONG ReservedBits0:28; 00071 }; 00072 }; 00073 union 00074 { 00075 PTR(PVOID) KernelCallbackTable; 00076 PTR(PVOID) UserSharedInfoPtr; 00077 }; 00078 #elif (NTDDI_VERSION >= NTDDI_WS03) 00079 PTR(PVOID) AltThunkSListPtr; 00080 PTR(PVOID) SparePtr2; 00081 ULONG EnvironmentUpdateCount; 00082 PTR(PVOID) KernelCallbackTable; 00083 #else 00084 PTR(PPEBLOCKROUTINE) FastPebLockRoutine; 00085 PTR(PPEBLOCKROUTINE) FastPebUnlockRoutine; 00086 ULONG EnvironmentUpdateCount; 00087 PTR(PVOID) KernelCallbackTable; 00088 #endif 00089 ULONG SystemReserved[1]; 00090 ULONG SpareUlong; // AtlThunkSListPtr32 00091 PTR(PPEB_FREE_BLOCK) FreeList; 00092 ULONG TlsExpansionCounter; 00093 PTR(PVOID) TlsBitmap; 00094 ULONG TlsBitmapBits[2]; 00095 PTR(PVOID) ReadOnlySharedMemoryBase; 00096 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00097 PTR(PVOID) HotpatchInformation; 00098 #else 00099 PTR(PVOID) ReadOnlySharedMemoryHeap; 00100 #endif 00101 PTR(PVOID*) ReadOnlyStaticServerData; 00102 PTR(PVOID) AnsiCodePageData; 00103 PTR(PVOID) OemCodePageData; 00104 PTR(PVOID) UnicodeCaseTableData; 00105 ULONG NumberOfProcessors; 00106 ULONG NtGlobalFlag; 00107 LARGE_INTEGER CriticalSectionTimeout; 00108 PTR(ULONG_PTR) HeapSegmentReserve; 00109 PTR(ULONG_PTR) HeapSegmentCommit; 00110 PTR(ULONG_PTR) HeapDeCommitTotalFreeThreshold; 00111 PTR(ULONG_PTR) HeapDeCommitFreeBlockThreshold; 00112 ULONG NumberOfHeaps; 00113 ULONG MaximumNumberOfHeaps; 00114 PTR(PVOID*) ProcessHeaps; 00115 PTR(PVOID) GdiSharedHandleTable; 00116 PTR(PVOID) ProcessStarterHelper; 00117 ULONG GdiDCAttributeList; 00118 PTR(struct _RTL_CRITICAL_SECTION*) LoaderLock; 00119 ULONG OSMajorVersion; 00120 ULONG OSMinorVersion; 00121 USHORT OSBuildNumber; 00122 USHORT OSCSDVersion; 00123 ULONG OSPlatformId; 00124 ULONG ImageSubsystem; 00125 ULONG ImageSubsystemMajorVersion; 00126 ULONG ImageSubsystemMinorVersion; 00127 PTR(ULONG_PTR) ImageProcessAffinityMask; 00128 ULONG GdiHandleBuffer[GDI_HANDLE_BUFFER_SIZE]; 00129 PTR(PPOST_PROCESS_INIT_ROUTINE) PostProcessInitRoutine; 00130 PTR(PVOID) TlsExpansionBitmap; 00131 ULONG TlsExpansionBitmapBits[32]; 00132 ULONG SessionId; 00133 #if (NTDDI_VERSION >= NTDDI_WINXP) 00134 ULARGE_INTEGER AppCompatFlags; 00135 ULARGE_INTEGER AppCompatFlagsUser; 00136 PTR(PVOID) pShimData; 00137 PTR(PVOID) AppCompatInfo; 00138 STRUCT(UNICODE_STRING) CSDVersion; 00139 PTR(struct _ACTIVATION_CONTEXT_DATA*) ActivationContextData; 00140 PTR(struct _ASSEMBLY_STORAGE_MAP*) ProcessAssemblyStorageMap; 00141 PTR(struct _ACTIVATION_CONTEXT_DATA*) SystemDefaultActivationContextData; 00142 PTR(struct _ASSEMBLY_STORAGE_MAP*) SystemAssemblyStorageMap; 00143 PTR(ULONG_PTR) MinimumStackCommit; 00144 #endif 00145 #if (NTDDI_VERSION >= NTDDI_WS03) 00146 PTR(PVOID*) FlsCallback; 00147 STRUCT(LIST_ENTRY) FlsListHead; 00148 PTR(PVOID) FlsBitmap; 00149 ULONG FlsBitmapBits[4]; // [FLS_MAXIMUM_AVAILABLE/(sizeof(ULONG)*8)]; 00150 ULONG FlsHighIndex; 00151 #endif 00152 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00153 PTR(PVOID) WerRegistrationData; 00154 PTR(PVOID) WerShipAssertPtr; 00155 #endif 00156 } STRUCT(PEB), *STRUCT(PPEB); 00157 00158 #undef PPEB 00159 00160 #if defined(_WIN64) && !defined(EXPLICIT_32BIT) 00161 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Mutant) == 0x08); 00162 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Ldr) == 0x18); 00163 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FastPebLock) == 0x038); 00164 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), TlsExpansionCounter) == 0x070); 00165 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), NtGlobalFlag) == 0x0BC); 00166 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), GdiSharedHandleTable) == 0x0F8); 00167 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), LoaderLock) == 0x110); 00168 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageSubsystem) == 0x128); 00169 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageProcessAffinityMask) == 0x138); 00170 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), PostProcessInitRoutine) == 0x230); 00171 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), SessionId) == 0x2C0); 00172 #if (NTDDI_VERSION >= NTDDI_WS03) 00173 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FlsHighIndex) == 0x350); 00174 #endif 00175 #else 00176 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Mutant) == 0x04); 00177 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Ldr) == 0x0C); 00178 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FastPebLock) == 0x01C); 00179 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), TlsExpansionCounter) == 0x03C); 00180 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), NtGlobalFlag) == 0x068); 00181 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), GdiSharedHandleTable) == 0x094); 00182 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), LoaderLock) == 0x0A0); 00183 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageSubsystem) == 0x0B4); 00184 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageProcessAffinityMask) == 0x0C0); 00185 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), PostProcessInitRoutine) == 0x14C); 00186 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), SessionId) == 0x1D4); 00187 #if (NTDDI_VERSION >= NTDDI_WS03) 00188 C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FlsHighIndex) == 0x22C); 00189 #endif 00190 #endif 00191 00192 #define GDI_BATCH_BUFFER_SIZE 0x136 00193 // 00194 // GDI Batch Descriptor 00195 // 00196 typedef struct STRUCT(_GDI_TEB_BATCH) 00197 { 00198 ULONG Offset; 00199 PTR(HANDLE) HDC; 00200 ULONG Buffer[GDI_BATCH_BUFFER_SIZE]; 00201 } STRUCT(GDI_TEB_BATCH), *STRUCT(PGDI_TEB_BATCH); 00202 00203 // 00204 // Thread Environment Block (TEB) 00205 // 00206 typedef struct STRUCT(_TEB) 00207 { 00208 STRUCT(NT_TIB) NtTib; 00209 PTR(PVOID) EnvironmentPointer; 00210 STRUCT(CLIENT_ID) ClientId; 00211 PTR(PVOID) ActiveRpcHandle; 00212 PTR(PVOID) ThreadLocalStoragePointer; 00213 PTR(STRUCT(PPEB)) ProcessEnvironmentBlock; 00214 ULONG LastErrorValue; 00215 ULONG CountOfOwnedCriticalSections; 00216 PTR(PVOID) CsrClientThread; 00217 PTR(PVOID) Win32ThreadInfo; 00218 ULONG User32Reserved[26]; 00219 ULONG UserReserved[5]; 00220 PTR(PVOID) WOW32Reserved; 00221 LCID CurrentLocale; 00222 ULONG FpSoftwareStatusRegister; 00223 PTR(PVOID) SystemReserved1[54]; 00224 LONG ExceptionCode; 00225 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00226 PTR(struct _ACTIVATION_CONTEXT_STACK*) ActivationContextStackPointer; 00227 UCHAR SpareBytes1[0x30 - 3 * sizeof(PTR(PVOID))]; 00228 ULONG TxFsContext; 00229 #elif (NTDDI_VERSION >= NTDDI_WS03) 00230 PTR(struct _ACTIVATION_CONTEXT_STACK*) ActivationContextStackPointer; 00231 UCHAR SpareBytes1[0x34 - 3 * sizeof(PTR(PVOID))]; 00232 #else 00233 ACTIVATION_CONTEXT_STACK ActivationContextStack; 00234 UCHAR SpareBytes1[24]; 00235 #endif 00236 STRUCT(GDI_TEB_BATCH) GdiTebBatch; 00237 STRUCT(CLIENT_ID) RealClientId; 00238 PTR(PVOID) GdiCachedProcessHandle; 00239 ULONG GdiClientPID; 00240 ULONG GdiClientTID; 00241 PTR(PVOID) GdiThreadLocalInfo; 00242 PTR(SIZE_T) Win32ClientInfo[62]; 00243 PTR(PVOID) glDispatchTable[233]; 00244 PTR(SIZE_T) glReserved1[29]; 00245 PTR(PVOID) glReserved2; 00246 PTR(PVOID) glSectionInfo; 00247 PTR(PVOID) glSection; 00248 PTR(PVOID) glTable; 00249 PTR(PVOID) glCurrentRC; 00250 PTR(PVOID) glContext; 00251 NTSTATUS LastStatusValue; 00252 STRUCT(UNICODE_STRING) StaticUnicodeString; 00253 WCHAR StaticUnicodeBuffer[261]; 00254 PTR(PVOID) DeallocationStack; 00255 PTR(PVOID) TlsSlots[64]; 00256 STRUCT(LIST_ENTRY) TlsLinks; 00257 PTR(PVOID) Vdm; 00258 PTR(PVOID) ReservedForNtRpc; 00259 PTR(PVOID) DbgSsReserved[2]; 00260 #if (NTDDI_VERSION >= NTDDI_WS03) 00261 ULONG HardErrorMode; 00262 #else 00263 ULONG HardErrorsAreDisabled; 00264 #endif 00265 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00266 PTR(PVOID) Instrumentation[13 - sizeof(GUID)/sizeof(PTR(PVOID))]; 00267 GUID ActivityId; 00268 PTR(PVOID) SubProcessTag; 00269 PTR(PVOID) EtwLocalData; 00270 PTR(PVOID) EtwTraceData; 00271 #elif (NTDDI_VERSION >= NTDDI_WS03) 00272 PTR(PVOID) Instrumentation[14]; 00273 PTR(PVOID) SubProcessTag; 00274 PTR(PVOID) EtwLocalData; 00275 #else 00276 PTR(PVOID) Instrumentation[16]; 00277 #endif 00278 PTR(PVOID) WinSockData; 00279 ULONG GdiBatchCount; 00280 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00281 BOOLEAN SpareBool0; 00282 BOOLEAN SpareBool1; 00283 BOOLEAN SpareBool2; 00284 #else 00285 BOOLEAN InDbgPrint; 00286 BOOLEAN FreeStackOnTermination; 00287 BOOLEAN HasFiberData; 00288 #endif 00289 UCHAR IdealProcessor; 00290 #if (NTDDI_VERSION >= NTDDI_WS03) 00291 ULONG GuaranteedStackBytes; 00292 #else 00293 ULONG Spare3; 00294 #endif 00295 PTR(PVOID) ReservedForPerf; 00296 PTR(PVOID) ReservedForOle; 00297 ULONG WaitingOnLoaderLock; 00298 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00299 PTR(PVOID) SavedPriorityState; 00300 PTR(ULONG_PTR) SoftPatchPtr1; 00301 PTR(ULONG_PTR) ThreadPoolData; 00302 #elif (NTDDI_VERSION >= NTDDI_WS03) 00303 PTR(ULONG_PTR) SparePointer1; 00304 PTR(ULONG_PTR) SoftPatchPtr1; 00305 PTR(ULONG_PTR) SoftPatchPtr2; 00306 #else 00307 Wx86ThreadState Wx86Thread; 00308 #endif 00309 PTR(PVOID*) TlsExpansionSlots; 00310 #if defined(_WIN64) && !defined(EXPLICIT_32BIT) 00311 PTR(PVOID) DeallocationBStore; 00312 PTR(PVOID) BStoreLimit; 00313 #endif 00314 ULONG ImpersonationLocale; 00315 ULONG IsImpersonating; 00316 PTR(PVOID) NlsCache; 00317 PTR(PVOID) pShimData; 00318 ULONG HeapVirtualAffinity; 00319 PTR(HANDLE) CurrentTransactionHandle; 00320 PTR(PTEB_ACTIVE_FRAME) ActiveFrame; 00321 #if (NTDDI_VERSION >= NTDDI_WS03) 00322 PVOID FlsData; 00323 #endif 00324 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00325 PVOID PreferredLangauges; 00326 PVOID UserPrefLanguages; 00327 PVOID MergedPrefLanguages; 00328 ULONG MuiImpersonation; 00329 union 00330 { 00331 struct 00332 { 00333 USHORT SpareCrossTebFlags:16; 00334 }; 00335 USHORT CrossTebFlags; 00336 }; 00337 union 00338 { 00339 struct 00340 { 00341 USHORT DbgSafeThunkCall:1; 00342 USHORT DbgInDebugPrint:1; 00343 USHORT DbgHasFiberData:1; 00344 USHORT DbgSkipThreadAttach:1; 00345 USHORT DbgWerInShipAssertCode:1; 00346 USHORT DbgIssuedInitialBp:1; 00347 USHORT DbgClonedThread:1; 00348 USHORT SpareSameTebBits:9; 00349 }; 00350 USHORT SameTebFlags; 00351 }; 00352 PTR(PVOID) TxnScopeEntercallback; 00353 PTR(PVOID) TxnScopeExitCAllback; 00354 PTR(PVOID) TxnScopeContext; 00355 ULONG LockCount; 00356 ULONG ProcessRundown; 00357 ULONG64 LastSwitchTime; 00358 ULONG64 TotalSwitchOutTime; 00359 LARGE_INTEGER WaitReasonBitMap; 00360 #else 00361 BOOLEAN SafeThunkCall; 00362 BOOLEAN BooleanSpare[3]; 00363 #endif 00364 } STRUCT(TEB), *STRUCT(PTEB); 00365 00366 #if defined(_WIN64) && !defined(EXPLICIT_32BIT) 00367 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x038); 00368 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x2C0); 00369 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x2F0); 00370 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), LastStatusValue) == 0x1250); 00371 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), Vdm) == 0x1690); 00372 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), HardErrorMode) == 0x16B0); 00373 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiBatchCount) == 0x1740); 00374 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), IdealProcessor) == 0x1747); 00375 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), WaitingOnLoaderLock) == 0x1760); 00376 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), TlsExpansionSlots) == 0x1780); 00377 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), WaitingOnLoaderLock) == 0x1760); 00378 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0x17C0); 00379 #else 00380 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x01C); 00381 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x1A4); 00382 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x1D4); 00383 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), LastStatusValue) == 0xBF4); 00384 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), Vdm) == 0xF18); 00385 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiBatchCount) == 0xF70); 00386 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), TlsExpansionSlots) == 0xF94); 00387 C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0xFB0); 00388 #endif 00389 00390 #undef PTR 00391 #undef STRUCT 00392 #undef PASTE 00393 #undef PASTE2 00394 #undef GDI_HANDLE_BUFFER_SIZE Generated on Fri May 25 2012 04:29:33 for ReactOS by
1.7.6.1
|