ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

peb_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.