[ros-diffs] [tkreuzer] 44501: [NDK] - Add CLIENT_ID32/64 - Create explicit 32/64 bit versions of PEB, GDI_TEB_BATCH and TEB, using macros. Thanks to Alex for feedback and suggestions. - Fix some member names. - Note to self: fix rostests, too!

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Thu Dec 10 21:21:58 CET 2009


Author: tkreuzer
Date: Thu Dec 10 01:35:12 2009
New Revision: 44501

URL: http://svn.reactos.org/svn/reactos?rev=44501&view=rev
Log:
[NDK]
- Add CLIENT_ID32/64
- Create explicit 32/64 bit versions of PEB, GDI_TEB_BATCH and TEB, using macros. Thanks to Alex for feedback and suggestions.
- Fix some member names.
- Note to self: fix rostests, too!

Added:
    branches/ros-amd64-bringup/reactos/include/ndk/peb_teb.h   (with props)
Modified:
    branches/ros-amd64-bringup/reactos/dll/ntdll/dbg/dbgui.c
    branches/ros-amd64-bringup/reactos/dll/ntdll/ldr/utils.c
    branches/ros-amd64-bringup/reactos/dll/ntdll/rtl/libsupp.c
    branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/fiber.c
    branches/ros-amd64-bringup/reactos/include/ndk/pstypes.h
    branches/ros-amd64-bringup/reactos/ntoskrnl/dbgk/dbgkutil.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/rtl/libsupp.c

Modified: branches/ros-amd64-bringup/reactos/dll/ntdll/dbg/dbgui.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/ntdll/dbg/dbgui.c?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/dll/ntdll/dbg/dbgui.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/dll/ntdll/dbg/dbgui.c [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -259,7 +259,7 @@
                 /* Save the image name from the TIB */
                 DebugEvent->u.LoadDll.lpImageName =
                     ((PTEB)ThreadBasicInfo.TebBaseAddress)->
-                    Tib.ArbitraryUserPointer;
+                    NtTib.ArbitraryUserPointer;
             }
             else
             {

Modified: branches/ros-amd64-bringup/reactos/dll/ntdll/ldr/utils.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/ntdll/ldr/utils.c?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/dll/ntdll/ldr/utils.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/dll/ntdll/ldr/utils.c [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -2210,8 +2210,8 @@
         /* Map the dll into the process */
         ViewSize = 0;
         ImageBase = 0;
-        ArbitraryUserPointer = NtCurrentTeb()->Tib.ArbitraryUserPointer;
-        NtCurrentTeb()->Tib.ArbitraryUserPointer = FullDosName.Buffer;
+        ArbitraryUserPointer = NtCurrentTeb()->NtTib.ArbitraryUserPointer;
+        NtCurrentTeb()->NtTib.ArbitraryUserPointer = FullDosName.Buffer;
         Status = NtMapViewOfSection(SectionHandle,
                                     NtCurrentProcess(),
                                     &ImageBase,
@@ -2222,7 +2222,7 @@
                                     ViewShare,
                                     0,
                                     PAGE_READONLY);
-        NtCurrentTeb()->Tib.ArbitraryUserPointer = ArbitraryUserPointer;
+        NtCurrentTeb()->NtTib.ArbitraryUserPointer = ArbitraryUserPointer;
         if (!NT_SUCCESS(Status))
           {
             DPRINT1("map view of section failed (Status 0x%08lx)\n", Status);

Modified: branches/ros-amd64-bringup/reactos/dll/ntdll/rtl/libsupp.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/ntdll/rtl/libsupp.c?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/dll/ntdll/rtl/libsupp.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/dll/ntdll/rtl/libsupp.c [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -206,8 +206,8 @@
                        IN ULONG_PTR *StackEnd)
 {
     /* FIXME: Verify */
-    *StackBegin = (ULONG_PTR)NtCurrentTeb()->Tib.StackLimit;
-    *StackEnd = (ULONG_PTR)NtCurrentTeb()->Tib.StackBase;
+    *StackBegin = (ULONG_PTR)NtCurrentTeb()->NtTib.StackLimit;
+    *StackEnd = (ULONG_PTR)NtCurrentTeb()->NtTib.StackBase;
     return TRUE;
 }
 
@@ -218,8 +218,8 @@
     OUT PULONG_PTR LowLimit,
     OUT PULONG_PTR HighLimit)
 {
-    *LowLimit = (ULONG_PTR)NtCurrentTeb()->Tib.StackLimit;
-    *HighLimit = (ULONG_PTR)NtCurrentTeb()->Tib.StackBase;
+    *LowLimit = (ULONG_PTR)NtCurrentTeb()->NtTib.StackLimit;
+    *HighLimit = (ULONG_PTR)NtCurrentTeb()->NtTib.StackBase;
     return;
 }
 #endif

Modified: branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/fiber.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/fiber.c?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/fiber.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/dll/win32/kernel32/thread/fiber.c [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -47,9 +47,9 @@
     pTeb->HasFiberData = FALSE;
 
     /* free the fiber */
-    if(pTeb->Tib.FiberData != NULL)
-    {
-        RtlFreeHeap(GetProcessHeap(), 0, pTeb->Tib.FiberData);
+    if(pTeb->NtTib.FiberData != NULL)
+    {
+        RtlFreeHeap(GetProcessHeap(), 0, pTeb->NtTib.FiberData);
     }
 
     /* success */
@@ -69,7 +69,7 @@
     DPRINT1("Converting Thread to Fiber\n");
 
     /* the current thread is already a fiber */
-    if(pTeb->HasFiberData && pTeb->Tib.FiberData) return pTeb->Tib.FiberData;
+    if(pTeb->HasFiberData && pTeb->NtTib.FiberData) return pTeb->NtTib.FiberData;
 
     /* allocate the fiber */
     pfCurFiber = (PFIBER)RtlAllocateHeap(GetProcessHeap(), 
@@ -85,9 +85,9 @@
 
     /* copy some contextual data from the thread to the fiber */
     pfCurFiber->Parameter = lpParameter;
-    pfCurFiber->ExceptionList = pTeb->Tib.ExceptionList;
-    pfCurFiber->StackBase = pTeb->Tib.StackBase;
-    pfCurFiber->StackLimit = pTeb->Tib.StackLimit;
+    pfCurFiber->ExceptionList = pTeb->NtTib.ExceptionList;
+    pfCurFiber->StackBase = pTeb->NtTib.StackBase;
+    pfCurFiber->StackLimit = pTeb->NtTib.StackLimit;
     pfCurFiber->DeallocationStack = pTeb->DeallocationStack;
     pfCurFiber->FlsData = pTeb->FlsData;
     pfCurFiber->GuaranteedStackBytes = pTeb->GuaranteedStackBytes;
@@ -101,7 +101,7 @@
     }
 
     /* associate the fiber to the current thread */
-    pTeb->Tib.FiberData = pfCurFiber;
+    pTeb->NtTib.FiberData = pfCurFiber;
     pTeb->HasFiberData = TRUE;
 
     /* success */
@@ -227,7 +227,7 @@
     RtlFreeHeap(GetProcessHeap(), 0, lpFiber);
 
     /* the fiber is deleting itself: let the system deallocate the stack */
-    if(NtCurrentTeb()->Tib.FiberData == lpFiber) ExitThread(1);
+    if(NtCurrentTeb()->NtTib.FiberData == lpFiber) ExitThread(1);
 
     /* deallocate the stack */
     NtFreeVirtualMemory(NtCurrentProcess(),

Added: branches/ros-amd64-bringup/reactos/include/ndk/peb_teb.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ndk/peb_teb.h?rev=44501&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/ndk/peb_teb.h (added)
+++ branches/ros-amd64-bringup/reactos/include/ndk/peb_teb.h [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -1,0 +1,387 @@
+
+#define PASTE2(x,y)       x##y
+#define PASTE(x,y)         PASTE2(x,y)
+
+#ifdef EXPLICIT_32BIT
+  #define STRUCT(x) PASTE(x,32)
+  #define PTR(x) ULONG
+#elif defined(EXPLICIT_64BIT)
+  #define STRUCT(x) PASTE(x,64)
+  #define PTR(x) ULONG64
+#else
+  #define STRUCT(x) x
+  #define PTR(x) x
+#endif
+
+#if defined(_WIN64) && !defined(EXPLICIT_32BIT)
+  #define GDI_HANDLE_BUFFER_SIZE 60
+#else
+  #define GDI_HANDLE_BUFFER_SIZE 34
+#endif
+
+typedef struct STRUCT(_PEB)
+{
+    BOOLEAN InheritedAddressSpace;
+    BOOLEAN ReadImageFileExecOptions;
+    BOOLEAN BeingDebugged;
+#if (NTDDI_VERSION >= NTDDI_WS03)
+    union
+    {
+        BOOLEAN BitField;
+        struct
+        {
+            BOOLEAN ImageUsesLargePages:1;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+            BOOLEAN IsProtectedProcess:1;
+            BOOLEAN IsLegacyProcess:1;
+            BOOLEAN IsImageDynamicallyRelocated:1;
+            BOOLEAN SkipPatchingUser32Forwarders:1;
+            BOOLEAN SpareBits:3;
+#else
+            BOOLEAN SpareBits:7;
+#endif
+        };
+    };
+#else
+    BOOLEAN SpareBool;
+#endif
+    PTR(HANDLE) Mutant;
+    PTR(PVOID) ImageBaseAddress;
+    PTR(PPEB_LDR_DATA) Ldr;
+    PTR(struct _RTL_USER_PROCESS_PARAMETERS*) ProcessParameters;
+    PTR(PVOID) SubSystemData;
+    PTR(PVOID) ProcessHeap;
+    PTR(struct _RTL_CRITICAL_SECTION*) FastPebLock;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    PTR(PVOID) AltThunkSListPtr;
+    PTR(PVOID) IFEOKey;
+    union
+    {
+        ULONG CrossProcessFlags;
+        struct
+        {
+            ULONG ProcessInJob:1;
+            ULONG ProcessInitializing:1;
+            ULONG ProcessUsingVEH:1;
+            ULONG ProcessUsingVCH:1;
+            ULONG ReservedBits0:28;
+        };
+    };
+    union
+    {
+        PTR(PVOID) KernelCallbackTable;
+        PTR(PVOID) UserSharedInfoPtr;
+    };
+#elif (NTDDI_VERSION >= NTDDI_WS03)
+    PTR(PVOID) AltThunkSListPtr;
+    PTR(PVOID) SparePtr2;
+    ULONG EnvironmentUpdateCount;
+    PTR(PVOID) KernelCallbackTable;
+#else
+    PTR(PPEBLOCKROUTINE) FastPebLockRoutine;
+    PTR(PPEBLOCKROUTINE) FastPebUnlockRoutine;
+    ULONG EnvironmentUpdateCount;
+    PTR(PVOID) KernelCallbackTable;
+#endif
+    ULONG SystemReserved[1];
+    ULONG SpareUlong; // AtlThunkSListPtr32
+    PTR(PPEB_FREE_BLOCK) FreeList;
+    ULONG TlsExpansionCounter;
+    PTR(PVOID) TlsBitmap;
+    ULONG TlsBitmapBits[2];
+    PTR(PVOID) ReadOnlySharedMemoryBase;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    PTR(PVOID) HotpatchInformation;
+#else
+    PTR(PVOID) ReadOnlySharedMemoryHeap;
+#endif
+    PTR(PVOID*) ReadOnlyStaticServerData;
+    PTR(PVOID) AnsiCodePageData;
+    PTR(PVOID) OemCodePageData;
+    PTR(PVOID) UnicodeCaseTableData;
+    ULONG NumberOfProcessors;
+    ULONG NtGlobalFlag;
+    LARGE_INTEGER CriticalSectionTimeout;
+    PTR(ULONG_PTR) HeapSegmentReserve;
+    PTR(ULONG_PTR) HeapSegmentCommit;
+    PTR(ULONG_PTR) HeapDeCommitTotalFreeThreshold;
+    PTR(ULONG_PTR) HeapDeCommitFreeBlockThreshold;
+    ULONG NumberOfHeaps;
+    ULONG MaximumNumberOfHeaps;
+    PTR(PVOID*) ProcessHeaps;
+    PTR(PVOID) GdiSharedHandleTable;
+    PTR(PVOID) ProcessStarterHelper;
+    ULONG GdiDCAttributeList;
+    PTR(struct _RTL_CRITICAL_SECTION*) LoaderLock;
+    ULONG OSMajorVersion;
+    ULONG OSMinorVersion;
+    USHORT OSBuildNumber;
+    USHORT OSCSDVersion;
+    ULONG OSPlatformId;
+    ULONG ImageSubsystem;
+    ULONG ImageSubsystemMajorVersion;
+    ULONG ImageSubsystemMinorVersion;
+    PTR(ULONG_PTR) ImageProcessAffinityMask;
+    ULONG GdiHandleBuffer[GDI_HANDLE_BUFFER_SIZE];
+    PTR(PPOST_PROCESS_INIT_ROUTINE) PostProcessInitRoutine;
+    PTR(PVOID) TlsExpansionBitmap;
+    ULONG TlsExpansionBitmapBits[32];
+    ULONG SessionId;
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+    ULARGE_INTEGER AppCompatFlags;
+    ULARGE_INTEGER AppCompatFlagsUser;
+    PTR(PVOID) pShimData;
+    PTR(PVOID) AppCompatInfo;
+    STRUCT(UNICODE_STRING) CSDVersion;
+    PTR(struct _ACTIVATION_CONTEXT_DATA*) ActivationContextData;
+    PTR(struct _ASSEMBLY_STORAGE_MAP*) ProcessAssemblyStorageMap;
+    PTR(struct _ACTIVATION_CONTEXT_DATA*) SystemDefaultActivationContextData;
+    PTR(struct _ASSEMBLY_STORAGE_MAP*) SystemAssemblyStorageMap;
+    PTR(ULONG_PTR) MinimumStackCommit;
+#endif
+#if (NTDDI_VERSION >= NTDDI_WS03)
+    PTR(PVOID*) FlsCallback;
+    STRUCT(LIST_ENTRY) FlsListHead;
+    PTR(PVOID) FlsBitmap;
+    ULONG FlsBitmapBits[4];
+    ULONG FlsHighIndex;
+#endif
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    PTR(PVOID) WerRegistrationData;
+    PTR(PVOID) WerShipAssertPtr;
+#endif
+} STRUCT(PEB), *STRUCT(PPEB);
+
+
+#if defined(_WIN64) && !defined(EXPLICIT_32BIT)
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Mutant) == 0x08);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Ldr) == 0x18);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FastPebLock) == 0x038);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), TlsExpansionCounter) == 0x070);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), NtGlobalFlag) == 0x0BC);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), GdiSharedHandleTable) == 0x0F8);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), LoaderLock) == 0x110);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageSubsystem) == 0x128);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageProcessAffinityMask) == 0x138);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), PostProcessInitRoutine) == 0x230);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), SessionId) == 0x2C0);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FlsHighIndex) == 0x350);
+#else
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Mutant) == 0x04);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), Ldr) == 0x0C);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FastPebLock) == 0x01C);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), TlsExpansionCounter) == 0x03C);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), NtGlobalFlag) == 0x068);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), GdiSharedHandleTable) == 0x094);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), LoaderLock) == 0x0A0);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageSubsystem) == 0x0B4);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), ImageProcessAffinityMask) == 0x0C0);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), PostProcessInitRoutine) == 0x14C);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), SessionId) == 0x1D4);
+C_ASSERT(FIELD_OFFSET(STRUCT(PEB), FlsHighIndex) == 0x22C);
+#endif
+
+//
+// GDI Batch Descriptor
+//
+typedef struct STRUCT(_GDI_TEB_BATCH)
+{
+    ULONG Offset;
+    PTR(HANDLE) HDC;
+    ULONG Buffer[0x136];
+} STRUCT(GDI_TEB_BATCH), *STRUCT(PGDI_TEB_BATCH);
+
+//
+// Thread Environment Block (TEB)
+//
+typedef struct STRUCT(_TEB)
+{
+    STRUCT(NT_TIB)         NtTib;
+    PTR(PVOID)             EnvironmentPointer;
+    STRUCT(CLIENT_ID)      ClientId;
+    PTR(PVOID)             ActiveRpcHandle;
+    PTR(PVOID)             ThreadLocalStoragePointer;
+    PTR(STRUCT(PPEB))      ProcessEnvironmentBlock;
+    ULONG                  LastErrorValue;
+    ULONG                  CountOfOwnedCriticalSections;
+    PTR(PVOID)             CsrClientThread;
+    PTR(PVOID)             Win32ThreadInfo;
+    ULONG                  User32Reserved[26];
+    ULONG                  UserReserved[5];
+    PTR(PVOID)             WOW32Reserved;
+    LCID                   CurrentLocale;
+    ULONG                  FpSoftwareStatusRegister;
+    PTR(PVOID)             SystemReserved1[54];
+    LONG                   ExceptionCode;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    PTR(struct _ACTIVATION_CONTEXT_STACK*) ActivationContextStackPointer;
+    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
+    ACTIVATION_CONTEXT_STACK ActivationContextStack;
+    UCHAR                  SpareBytes1[24];
+#endif
+    STRUCT(GDI_TEB_BATCH)  GdiTebBatch;
+    STRUCT(CLIENT_ID)      RealClientId;
+    PTR(PVOID)             GdiCachedProcessHandle;
+    ULONG                  GdiClientPID;
+    ULONG                  GdiClientTID;
+    PTR(PVOID)             GdiThreadLocalInfo;
+    PTR(SIZE_T)            Win32ClientInfo[62];
+    PTR(PVOID)             glDispatchTable[233];
+    PTR(SIZE_T)            glReserved1[29];
+    PTR(PVOID)             glReserved2;
+    PTR(PVOID)             glSectionInfo;
+    PTR(PVOID)             glSection;
+    PTR(PVOID)             glTable;
+    PTR(PVOID)             glCurrentRC;
+    PTR(PVOID)             glContext;
+    NTSTATUS               LastStatusValue;
+    STRUCT(UNICODE_STRING) StaticUnicodeString;
+    WCHAR                  StaticUnicodeBuffer[261];
+    PTR(PVOID)             DeallocationStack;
+    PTR(PVOID)             TlsSlots[64];
+    STRUCT(LIST_ENTRY)     TlsLinks;
+    PTR(PVOID)             Vdm;
+    PTR(PVOID)             ReservedForNtRpc;
+    PTR(PVOID)             DbgSsReserved[2];
+#if (NTDDI_VERSION >= NTDDI_WS03)
+    ULONG                  HardErrorMode;
+#else
+    ULONG                  HardErrorsAreDisabled;
+#endif
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    PTR(PVOID)             Instrumentation[9];
+    GUID                   ActivityId;
+    PTR(PVOID)             SubProcessTag;
+    PTR(PVOID)             EtwLocalData;
+#elif (NTDDI_VERSION >= NTDDI_WS03)
+    PTR(PVOID)             Instrumentation[14];
+    PTR(PVOID)             SubProcessTag;
+    PTR(PVOID)             EtwLocalData;
+#else
+    PTR(PVOID)             Instrumentation[16];
+#endif
+    PTR(PVOID)             WinSockData;
+    ULONG                  GdiBatchCount;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    BOOLEAN                SpareBool0;
+    BOOLEAN                SpareBool1;
+    BOOLEAN                SpareBool2;
+#else
+    BOOLEAN                InDbgPrint;
+    BOOLEAN                FreeStackOnTermination;
+    BOOLEAN                HasFiberData;
+#endif
+    UCHAR                  IdealProcessor;
+#if (NTDDI_VERSION >= NTDDI_WS03)
+    ULONG                  GuaranteedStackBytes;
+#else
+    ULONG                  Spare3;
+#endif
+    PTR(PVOID)             ReservedForPerf;
+    PTR(PVOID)             ReservedForOle;
+    ULONG                  WaitingOnLoaderLock;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    PTR(PVOID)             SavedPriorityState;
+    PTR(ULONG_PTR)         SoftPatchPtr1;
+    PTR(ULONG_PTR)         ThreadPoolData;
+#elif (NTDDI_VERSION >= NTDDI_WS03)
+    PTR(ULONG_PTR)         SparePointer1;
+    PTR(ULONG_PTR)         SoftPatchPtr1;
+    PTR(ULONG_PTR)         SoftPatchPtr2;
+#else
+    Wx86ThreadState        Wx86Thread;
+#endif
+    PTR(PVOID*)            TlsExpansionSlots;
+#if defined(_WIN64) && !defined(EXPLICIT_32BIT)
+    PTR(PVOID)             DeallocationBStore;                                                  
+    PTR(PVOID)             BStoreLimit;                                                         
+#endif
+    ULONG                  ImpersonationLocale;
+    ULONG                  IsImpersonating;
+    PTR(PVOID)             NlsCache;
+    PTR(PVOID)             pShimData;
+    ULONG                  HeapVirtualAffinity;
+    PTR(HANDLE)            CurrentTransactionHandle;
+    PTR(PTEB_ACTIVE_FRAME) ActiveFrame;
+#if (NTDDI_VERSION >= NTDDI_WS03)
+    PVOID FlsData;
+#endif
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    PVOID PreferredLangauges;
+    PVOID UserPrefLanguages;
+    PVOID MergedPrefLanguages;
+    ULONG MuiImpersonation;
+    union
+    {
+        struct
+        {
+            USHORT SpareCrossTebFlags:16;
+        };
+        USHORT CrossTebFlags;
+    };
+    union
+    {
+        struct
+        {
+            USHORT DbgSafeThunkCall:1;
+            USHORT DbgInDebugPrint:1;
+            USHORT DbgHasFiberData:1;
+            USHORT DbgSkipThreadAttach:1;
+            USHORT DbgWerInShipAssertCode:1;
+            USHORT DbgIssuedInitialBp:1;
+            USHORT DbgClonedThread:1;
+            USHORT SpareSameTebBits:9;
+        };
+        USHORT SameTebFlags;
+    };
+    PTR(PVOID) TxnScopeEntercallback;
+    PTR(PVOID) TxnScopeExitCAllback;
+    PTR(PVOID) TxnScopeContext;
+    ULONG LockCount;
+    ULONG ProcessRundown;
+    ULONG64 LastSwitchTime;
+    ULONG64 TotalSwitchOutTime;
+    LARGE_INTEGER WaitReasonBitMap;
+#else
+    BOOLEAN SafeThunkCall;
+    BOOLEAN BooleanSpare[3];
+#endif
+} STRUCT(TEB), *STRUCT(PTEB);
+
+#if defined(_WIN64) && !defined(EXPLICIT_32BIT)
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x038);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x2C0);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x2F0);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), LastStatusValue) == 0x1250);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), Vdm) == 0x1690);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), HardErrorMode) == 0x16B0);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), SubProcessTag) == 0x1728);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiBatchCount) == 0x1740);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), IdealProcessor) == 0x1747);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), WaitingOnLoaderLock) == 0x1760);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), TlsExpansionSlots) == 0x1780);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), WaitingOnLoaderLock) == 0x1760);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0x17C0);
+#else
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), EnvironmentPointer) == 0x01C);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ExceptionCode) == 0x1A4);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiTebBatch) == 0x1D4);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), LastStatusValue) == 0xBF4);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), Vdm) == 0xF18);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), HardErrorMode) == 0xF28);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), SubProcessTag) == 0xF64);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), GdiBatchCount) == 0xF70);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), TlsExpansionSlots) == 0xF94);
+C_ASSERT(FIELD_OFFSET(STRUCT(TEB), ActiveFrame) == 0xFB0);
+#endif
+
+#undef PTR
+#undef STRUCT
+#undef PASTE
+#undef PASTE2
+#undef GDI_HANDLE_BUFFER_SIZE

Propchange: branches/ros-amd64-bringup/reactos/include/ndk/peb_teb.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: branches/ros-amd64-bringup/reactos/include/ndk/pstypes.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ndk/pstypes.h?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/ndk/pstypes.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/include/ndk/pstypes.h [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -617,159 +617,6 @@
 } INITIAL_PEB, *PINITIAL_PEB;
 
 //
-// Process Environment Block (PEB)
-//
-typedef struct _PEB
-{
-    BOOLEAN InheritedAddressSpace;
-    BOOLEAN ReadImageFileExecOptions;
-    BOOLEAN BeingDebugged;
-#if (NTDDI_VERSION >= NTDDI_WS03)
-    union
-    {
-        BOOLEAN BitField;
-        struct
-        {
-            UCHAR ImageUsesLargePages:1;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-            BOOLEAN IsProtectedProcess:1;
-            BOOLEAN IsLegacyProcess:1;
-            BOOLEAN IsImageDynamicallyRelocated:1;
-            BOOLEAN SkipPatchingUser32Forwarders:1;
-            BOOLEAN SpareBits:3;
-#else
-            BOOLEAN SpareBits:7;
-#endif
-        };
-    };
-#else
-    BOOLEAN SpareBool;
-#endif
-    HANDLE Mutant;
-    PVOID ImageBaseAddress;
-    PPEB_LDR_DATA Ldr;
-    struct _RTL_USER_PROCESS_PARAMETERS *ProcessParameters;
-    PVOID SubSystemData;
-    PVOID ProcessHeap;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    struct _RTL_CRITICAL_SECTION *FastPebLock;
-    PVOID AltThunkSListPtr;
-    PVOID IFEOKey;
-    union
-    {
-        ULONG CrossProcessFlags;
-        struct
-        {
-            ULONG ProcessInJob:1;
-            ULONG ProcessInitializing:1;
-            ULONG ProcessUsingVEH:1;
-            ULONG ProcessUsingVCH:1;
-            ULONG ReservedBits0:28;
-        };
-    };
-    union
-    {
-        PVOID* KernelCallbackTable;
-        PVOID UserSharedInfoPtr;
-    };
-    ULONG SystemReserved[1];
-    ULONG SpareUlong;
-    ULONG_PTR SparePebPtr0;
-#else
-    PVOID FastPebLock;
-    PPEBLOCKROUTINE FastPebLockRoutine;
-    PPEBLOCKROUTINE FastPebUnlockRoutine;
-    ULONG EnvironmentUpdateCount;
-    PVOID* KernelCallbackTable;
-    PVOID EventLogSection;
-    PVOID EventLog;
-    PPEB_FREE_BLOCK FreeList;
-#endif
-    ULONG TlsExpansionCounter;
-    PVOID TlsBitmap;
-    ULONG TlsBitmapBits[0x2];
-    PVOID ReadOnlySharedMemoryBase;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    PVOID HotpatchInformation;
-#else
-    PVOID ReadOnlySharedMemoryHeap;
-#endif
-    PVOID* ReadOnlyStaticServerData;
-    PVOID AnsiCodePageData;
-    PVOID OemCodePageData;
-    PVOID UnicodeCaseTableData;
-    ULONG NumberOfProcessors;
-    ULONG NtGlobalFlag;
-    LARGE_INTEGER CriticalSectionTimeout;
-    ULONG_PTR HeapSegmentReserve;
-    ULONG_PTR HeapSegmentCommit;
-    ULONG_PTR HeapDeCommitTotalFreeThreshold;
-    ULONG_PTR HeapDeCommitFreeBlockThreshold;
-    ULONG NumberOfHeaps;
-    ULONG MaximumNumberOfHeaps;
-    PVOID* ProcessHeaps;
-    PVOID GdiSharedHandleTable;
-    PVOID ProcessStarterHelper;
-    ULONG GdiDCAttributeList;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    struct _RTL_CRITICAL_SECTION *LoaderLock;
-#else
-    PVOID LoaderLock;
-#endif
-    ULONG OSMajorVersion;
-    ULONG OSMinorVersion;
-    USHORT OSBuildNumber;
-    USHORT OSCSDVersion;
-    ULONG OSPlatformId;
-    ULONG ImageSubSystem;
-    ULONG ImageSubSystemMajorVersion;
-    ULONG ImageSubSystemMinorVersion;
-    ULONG ImageProcessAffinityMask;
-#ifdef _WIN64
-    ULONG GdiHandleBuffer[0x3c];
-#else
-    ULONG GdiHandleBuffer[0x22];
-#endif
-    PPOST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
-    struct _RTL_BITMAP *TlsExpansionBitmap;
-    ULONG TlsExpansionBitmapBits[0x20];
-    ULONG SessionId;
-#if (NTDDI_VERSION >= NTDDI_WINXP)
-    ULARGE_INTEGER AppCompatFlags;
-    ULARGE_INTEGER AppCompatFlagsUser;
-    PVOID pShimData;
-    PVOID AppCompatInfo;
-    UNICODE_STRING CSDVersion;
-    struct _ACTIVATION_CONTEXT_DATA *ActivationContextData;
-    struct _ASSEMBLY_STORAGE_MAP *ProcessAssemblyStorageMap;
-    struct _ACTIVATION_CONTEXT_DATA *SystemDefaultActivationContextData;
-    struct _ASSEMBLY_STORAGE_MAP *SystemAssemblyStorageMap;
-    ULONG_PTR MinimumStackCommit;
-#endif
-#if (NTDDI_VERSION >= NTDDI_WS03)
-    PVOID *FlsCallback;
-    LIST_ENTRY FlsListHead;
-    struct _RTL_BITMAP *FlsBitmap;
-    ULONG FlsBitmapBits[4];
-    ULONG FlsHighIndex;
-#endif
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    PVOID WerRegistrationData;
-    PVOID WerShipAssertPtr;
-#endif
-} PEB, *PPEB;
-
-//
-// GDI Batch Descriptor
-//
-typedef struct _GDI_TEB_BATCH
-{
-    ULONG Offset;
-    HANDLE HDC;
-    ULONG Buffer[0x136];
-} GDI_TEB_BATCH, *PGDI_TEB_BATCH;
-
-//
 // Initial TEB
 //
 typedef struct _INITIAL_TEB
@@ -797,146 +644,39 @@
     PTEB_ACTIVE_FRAME_CONTEXT Context;
 } TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME;
 
-//
+typedef struct _CLIENT_ID32
+{
+    ULONG UniqueProcess;
+    ULONG UniqueThread;
+} CLIENT_ID32, *PCLIENT_ID32;
+
+typedef struct _CLIENT_ID64
+{
+    ULONG64 UniqueProcess;
+    ULONG64 UniqueThread;
+} CLIENT_ID64, *PCLIENT_ID64;
+
+//
+// Process Environment Block (PEB)
 // Thread Environment Block (TEB)
 //
-typedef struct _TEB
-{
-    NT_TIB Tib;
-    PVOID EnvironmentPointer;
-    CLIENT_ID ClientId;
-    PVOID ActiveRpcHandle;
-    PVOID ThreadLocalStoragePointer;
-    struct _PEB *ProcessEnvironmentBlock;
-    ULONG LastErrorValue;
-    ULONG CountOfOwnedCriticalSections;
-    PVOID CsrClientThread;
-    struct _W32THREAD* Win32ThreadInfo;
-    ULONG User32Reserved[0x1A];
-    ULONG UserReserved[5];
-    PVOID WOW32Reserved;
-    LCID CurrentLocale;
-    ULONG FpSoftwareStatusRegister;
-    PVOID SystemReserved1[0x36];
-    LONG ExceptionCode;
-    struct _ACTIVATION_CONTEXT_STACK *ActivationContextStackPointer;
+#include "peb_teb.h"
+
 #ifdef _WIN64
-    UCHAR SpareBytes1[24];
-#else
-    UCHAR SpareBytes1[0x24];
-#endif
-    ULONG TxFsContext;
-    GDI_TEB_BATCH GdiTebBatch;
-    CLIENT_ID RealClientId;
-    PVOID GdiCachedProcessHandle;
-    ULONG GdiClientPID;
-    ULONG GdiClientTID;
-    PVOID GdiThreadLocalInfo;
-    SIZE_T Win32ClientInfo[62];
-    PVOID glDispatchTable[0xE9];
-    SIZE_T glReserved1[0x1D];
-    PVOID glReserved2;
-    PVOID glSectionInfo;
-    PVOID glSection;
-    PVOID glTable;
-    PVOID glCurrentRC;
-    PVOID glContext;
-    NTSTATUS LastStatusValue;
-    UNICODE_STRING StaticUnicodeString;
-    WCHAR StaticUnicodeBuffer[0x105];
-    PVOID DeallocationStack;
-    PVOID TlsSlots[0x40];
-    LIST_ENTRY TlsLinks;
-    PVOID Vdm;
-    PVOID ReservedForNtRpc;
-    PVOID DbgSsReserved[0x2];
-    ULONG HardErrorDisabled;
-#ifdef _WIN64
-    PVOID Instrumentation[11];
-#else
-    PVOID Instrumentation[9];
-#endif
-    GUID ActivityId;
-    PVOID SubProcessTag;
-    PVOID EtwTraceData;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    PVOID EtwLocalData;
-#endif
-    PVOID WinSockData;
-    ULONG GdiBatchCount;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    BOOLEAN SpareBool0;
-    BOOLEAN SpareBool1;
-    BOOLEAN SpareBool2;
-#else
-    BOOLEAN InDbgPrint;
-    BOOLEAN FreeStackOnTermination;
-    BOOLEAN HasFiberData;
-#endif
-    UCHAR IdealProcessor;
-    ULONG GuaranteedStackBytes;
-    PVOID ReservedForPerf;
-    PVOID ReservedForOle;
-    ULONG WaitingOnLoaderLock;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    PVOID SavedPriorityState;
-#else
-    ULONG SparePointer1;
-#endif
-    ULONG SoftPatchPtr1;
-    ULONG SoftPatchPtr2;
-    PVOID *TlsExpansionSlots;
-    ULONG ImpersonationLocale;
-    ULONG IsImpersonating;
-    PVOID NlsCache;
-    PVOID pShimData;
-    ULONG HeapVirualAffinity;
-    PVOID CurrentTransactionHandle;
-    PTEB_ACTIVE_FRAME ActiveFrame;
-#if (NTDDI_VERSION >= NTDDI_WS03)
-    PVOID FlsData;
-#endif
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    PVOID PreferredLangauges;
-    PVOID UserPrefLanguages;
-    PVOID MergedPrefLanguages;
-    ULONG MuiImpersonation;
-    union
-    {
-        struct
-        {
-            USHORT SpareCrossTebFlags:16;
-        };
-        USHORT CrossTebFlags;
-    };
-    union
-    {
-        struct
-        {
-            USHORT DbgSafeThunkCall:1;
-            USHORT DbgInDebugPrint:1;
-            USHORT DbgHasFiberData:1;
-            USHORT DbgSkipThreadAttach:1;
-            USHORT DbgWerInShipAssertCode:1;
-            USHORT DbgIssuedInitialBp:1;
-            USHORT DbgClonedThread:1;
-            USHORT SpareSameTebBits:9;
-        };
-        USHORT SameTebFlags;
-    };
-    PVOID TxnScopeEntercallback;
-    PVOID TxnScopeExitCAllback;
-    PVOID TxnScopeContext;
-    ULONG LockCount;
-    ULONG ProcessRundown;
-    ULONGLONG LastSwitchTime;
-    ULONGLONG TotalSwitchOutTime;
-    LARGE_INTEGER WaitReasonBitMap;
-#else
-    UCHAR SafeThunkCall;
-    UCHAR BooleanSpare[3];
-#endif
-} TEB, *PTEB;
+//
+// Explicit 32 bit PEB/TEB
+//
+#define EXPLICIT_32BIT
+#include "peb_teb.h"
+#undef EXPLICIT_32BIT
+
+//
+// Explicit 64 bit PEB/TEB
+//
+#define EXPLICIT_64BIT
+#include "peb_teb.h"
+#undef EXPLICIT_64BIT
+#endif
 
 #ifdef NTOS_MODE_USER
 

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/dbgk/dbgkutil.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/dbgk/dbgkutil.c?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/dbgk/dbgkutil.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/dbgk/dbgkutil.c [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -242,10 +242,10 @@
             wcsncpy(Teb->StaticUnicodeBuffer,
                     L"ntdll.dll",
                     sizeof(Teb->StaticUnicodeBuffer) / sizeof(WCHAR));
-            Teb->Tib.ArbitraryUserPointer = Teb->StaticUnicodeBuffer;
+            Teb->NtTib.ArbitraryUserPointer = Teb->StaticUnicodeBuffer;
 
             /* Return it in the debug event as well */
-            LoadDll->NamePointer = &Teb->Tib.ArbitraryUserPointer;
+            LoadDll->NamePointer = &Teb->NtTib.ArbitraryUserPointer;
         }
 
         /* Get a handle */

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/procsup.c [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -514,9 +514,9 @@
             //
             // Write subsystem data
             //
-            Peb->ImageSubSystem = NtHeaders->OptionalHeader.Subsystem;
-            Peb->ImageSubSystemMajorVersion = NtHeaders->OptionalHeader.MajorSubsystemVersion;
-            Peb->ImageSubSystemMinorVersion = NtHeaders->OptionalHeader.MinorSubsystemVersion;
+            Peb->ImageSubsystem = NtHeaders->OptionalHeader.Subsystem;
+            Peb->ImageSubsystemMajorVersion = NtHeaders->OptionalHeader.MajorSubsystemVersion;
+            Peb->ImageSubsystemMinorVersion = NtHeaders->OptionalHeader.MinorSubsystemVersion;
 
             //
             // Check for version data
@@ -632,13 +632,13 @@
         //
         // Set TIB Data
         //
-        Teb->Tib.ExceptionList = EXCEPTION_CHAIN_END;
-        Teb->Tib.Self = (PNT_TIB)Teb;
+        Teb->NtTib.ExceptionList = EXCEPTION_CHAIN_END;
+        Teb->NtTib.Self = (PNT_TIB)Teb;
         
         //
         // Identify this as an OS/2 V3.0 ("Cruiser") TIB
         //
-        Teb->Tib.Version = 30 << 8;
+        Teb->NtTib.Version = 30 << 8;
         
         //
         // Set TEB Data
@@ -657,8 +657,8 @@
             //
             // Use initial TEB values
             //
-            Teb->Tib.StackBase = InitialTeb->StackBase;
-            Teb->Tib.StackLimit = InitialTeb->StackLimit;
+            Teb->NtTib.StackBase = InitialTeb->StackBase;
+            Teb->NtTib.StackLimit = InitialTeb->StackLimit;
             Teb->DeallocationStack = InitialTeb->AllocatedStackBase;
         }
         else
@@ -666,8 +666,8 @@
             //
             // Use grandparent TEB values
             //
-            Teb->Tib.StackBase = InitialTeb->PreviousStackBase;
-            Teb->Tib.StackLimit = InitialTeb->PreviousStackLimit;
+            Teb->NtTib.StackBase = InitialTeb->PreviousStackBase;
+            Teb->NtTib.StackLimit = InitialTeb->PreviousStackLimit;
         }
 
         //

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/rtl/libsupp.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/rtl/libsupp.c?rev=44501&r1=44500&r2=44501&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/rtl/libsupp.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/rtl/libsupp.c [iso-8859-1] Thu Dec 10 01:35:12 2009
@@ -366,8 +366,8 @@
             }
 
             /* Get the stack limits */
-            StackBegin = (ULONG_PTR)Teb->Tib.StackLimit;
-            StackEnd = (ULONG_PTR)Teb->Tib.StackBase;
+            StackBegin = (ULONG_PTR)Teb->NtTib.StackLimit;
+            StackEnd = (ULONG_PTR)Teb->NtTib.StackBase;
 #ifdef _M_IX86
             Stack = TrapFrame->Ebp;
 #elif defined(_M_PPC)




More information about the Ros-diffs mailing list