branch update for HEAD-2003021201
[reactos.git] / include / napi / teb.h
index 05962c2..694ecf3 100644 (file)
-/* TEB/PEB parameters */\r
-#ifndef __INCLUDE_INTERNAL_TEB\r
-#define __INCLUDE_INTERNAL_TEB\r
-\r
-#include <napi/types.h>\r
-\r
-typedef struct _CLIENT_ID\r
-{\r
-   HANDLE UniqueProcess;\r
-   HANDLE UniqueThread;\r
-} CLIENT_ID, *PCLIENT_ID;\r
-\r
-typedef struct _CURDIR\r
-{\r
-   UNICODE_STRING DosPath;\r
-   PVOID Handle;\r
-} CURDIR, *PCURDIR;\r
-\r
-typedef struct RTL_DRIVE_LETTER_CURDIR\r
-{\r
-   USHORT Flags;\r
-   USHORT Length;\r
-   ULONG TimeStamp;\r
-   UNICODE_STRING DosPath;\r
-} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;\r
-\r
-typedef struct _PEB_FREE_BLOCK\r
-{\r
-   struct _PEB_FREE_BLOCK* Next;\r
-   ULONG Size;\r
-} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;\r
-\r
-/* RTL_USER_PROCESS_PARAMETERS.Flags */\r
-#define PPF_NORMALIZED (1)\r
-\r
-typedef struct _RTL_USER_PROCESS_PARAMETERS {\r
-       ULONG  AllocationSize;\r
-       ULONG  Size;\r
-       ULONG  Flags;\r
-       ULONG  DebugFlags;\r
-       HANDLE  hConsole;\r
-       ULONG  ProcessGroup;\r
-       HANDLE  hStdInput;\r
-       HANDLE  hStdOutput;\r
-       HANDLE  hStdError;\r
-       UNICODE_STRING  CurrentDirectoryName;\r
-       HANDLE  CurrentDirectoryHandle;\r
-       UNICODE_STRING  DllPath;\r
-       UNICODE_STRING  ImagePathName;\r
-       UNICODE_STRING  CommandLine;\r
-       PWSTR  Environment;\r
-       ULONG  dwX;\r
-       ULONG  dwY;\r
-       ULONG  dwXSize;\r
-       ULONG  dwYSize;\r
-       ULONG  dwXCountChars;\r
-       ULONG  dwYCountChars;\r
-       ULONG  dwFillAttribute;\r
-       ULONG  dwFlags;\r
-       ULONG  wShowWindow;\r
-       UNICODE_STRING  WindowTitle;\r
-       UNICODE_STRING  DesktopInfo;\r
-       UNICODE_STRING  ShellInfo;\r
-       UNICODE_STRING  RuntimeInfo;\r
-} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;\r
-\r
-#define PEB_BASE        (0x7FFDF000)\r
-\r
-typedef struct _PEB_LDR_DATA\r
-{\r
-   ULONG Length;\r
-   BOOLEAN Initialized;\r
-   PVOID SsHandle;\r
-   LIST_ENTRY InLoadOrderModuleList;\r
-   LIST_ENTRY InMemoryOrderModuleList;\r
-   LIST_ENTRY InInitializationOrderModuleList;\r
-} PEB_LDR_DATA, *PPEB_LDR_DATA;\r
-\r
-typedef VOID STDCALL (*PPEBLOCKROUTINE)(PVOID);\r
-\r
-typedef struct _PEB\r
-{\r
-   UCHAR InheritedAddressSpace;                     // 00h\r
-   UCHAR ReadImageFileExecOptions;                  // 01h\r
-   UCHAR BeingDebugged;                             // 02h\r
-   UCHAR Spare;                                     // 03h\r
-   PVOID Mutant;                                    // 04h\r
-   PVOID ImageBaseAddress;                          // 08h\r
-   PPEB_LDR_DATA Ldr;                               // 0Ch\r
-   PRTL_USER_PROCESS_PARAMETERS ProcessParameters;  // 10h\r
-   PVOID SubSystemData;                             // 14h\r
-   PVOID ProcessHeap;                               // 18h\r
-   PVOID FastPebLock;                               // 1Ch\r
-   PPEBLOCKROUTINE FastPebLockRoutine;              // 20h\r
-   PPEBLOCKROUTINE FastPebUnlockRoutine;            // 24h\r
-   ULONG EnvironmentUpdateCount;                    // 28h\r
-   PVOID* KernelCallbackTable;                      // 2Ch\r
-   PVOID EventLogSection;                           // 30h\r
-   PVOID EventLog;                                  // 34h\r
-   PPEB_FREE_BLOCK FreeList;                        // 38h\r
-   ULONG TlsExpansionCounter;                       // 3Ch\r
-   PVOID TlsBitmap;                                 // 40h\r
-   ULONG TlsBitmapBits[0x2];                        // 44h\r
-   PVOID ReadOnlySharedMemoryBase;                  // 4Ch\r
-   PVOID ReadOnlySharedMemoryHeap;                  // 50h\r
-   PVOID* ReadOnlyStaticServerData;                 // 54h\r
-   PVOID AnsiCodePageData;                          // 58h\r
-   PVOID OemCodePageData;                           // 5Ch\r
-   PVOID UnicodeCaseTableData;                      // 60h\r
-   ULONG NumberOfProcessors;                        // 64h\r
-   ULONG NtGlobalFlag;                              // 68h\r
-   UCHAR Spare2[0x4];                               // 6Ch\r
-   LARGE_INTEGER CriticalSectionTimeout;            // 70h\r
-   ULONG HeapSegmentReserve;                        // 78h\r
-   ULONG HeapSegmentCommit;                         // 7Ch\r
-   ULONG HeapDeCommitTotalFreeThreshold;            // 80h\r
-   ULONG HeapDeCommitFreeBlockThreshold;            // 84h\r
-   ULONG NumberOfHeaps;                             // 88h\r
-   ULONG MaximumNumberOfHeaps;                      // 8Ch\r
-   PVOID** ProcessHeaps;                            // 90h\r
-   PVOID GdiSharedHandleTable;                      // 94h\r
-   PVOID ProcessStarterHelper;                      // 98h\r
-   PVOID GdiDCAttributeList;                        // 9Ch\r
-   PVOID LoaderLock;                                // A0h\r
-   ULONG OSMajorVersion;                            // A4h\r
-   ULONG OSMinorVersion;                            // A8h\r
-   ULONG OSBuildNumber;                             // ACh\r
-   ULONG OSPlatformId;                              // B0h\r
-   ULONG ImageSubSystem;                            // B4h\r
-   ULONG ImageSubSystemMajorVersion;                // B8h\r
-   ULONG ImageSubSystemMinorVersion;                // C0h\r
-   ULONG GdiHandleBuffer[0x22];                     // C4h\r
-} PEB, *PPEB;\r
-\r
-\r
-typedef struct _NT_TIB {\r
-    struct _EXCEPTION_REGISTRATION_RECORD* ExceptionList;  // 00h\r
-    PVOID StackBase;                                       // 04h\r
-    PVOID StackLimit;                                      // 08h\r
-    PVOID SubSystemTib;                                    // 0Ch\r
-    union {\r
-        PVOID FiberData;                                   // 10h\r
-        ULONG Version;                                     // 10h\r
-    } Fib;\r
-    PVOID ArbitraryUserPointer;                            // 14h\r
-    struct _NT_TIB *Self;                                  // 18h\r
-} NT_TIB, *PNT_TIB;\r
-\r
-typedef struct _GDI_TEB_BATCH\r
-{\r
-   ULONG Offset;\r
-   ULONG HDC;\r
-   ULONG Buffer[0x136];\r
-} GDI_TEB_BATCH, *PGDI_TEB_BATCH;\r
-\r
-typedef struct _TEB\r
-{\r
-   NT_TIB Tib;                         // 00h\r
-   PVOID EnvironmentPointer;           // 1Ch\r
-   CLIENT_ID Cid;                      // 20h\r
-   PVOID ActiveRpcInfo;                // 28h\r
-   PVOID ThreadLocalStoragePointer;    // 2Ch\r
-   PPEB Peb;                           // 30h\r
-   ULONG LastErrorValue;               // 34h\r
-   ULONG CountOfOwnedCriticalSections; // 38h\r
-   PVOID CsrClientThread;              // 3Ch\r
-   struct _W32THREAD* Win32ThreadInfo;         // 40h\r
-   ULONG Win32ClientInfo[0x1F];        // 44h\r
-   PVOID WOW32Reserved;                // C0h\r
-   ULONG CurrentLocale;                // C4h\r
-   ULONG FpSoftwareStatusRegister;     // C8h\r
-   PVOID SystemReserved1[0x36];        // CCh\r
-   PVOID Spare1;                       // 1A4h\r
-   LONG ExceptionCode;                 // 1A8h\r
-   ULONG SpareBytes1[0x28];            // 1ACh\r
-   PVOID SystemReserved2[0xA];         // 1D4h\r
-//   GDI_TEB_BATCH GdiTebBatch;          // 1FCh\r
-   ULONG gdiRgn;                       // 6DCh\r
-   ULONG gdiPen;                       // 6E0h\r
-   ULONG gdiBrush;                     // 6E4h\r
-   CLIENT_ID RealClientId;             // 6E8h\r
-   PVOID GdiCachedProcessHandle;       // 6F0h\r
-   ULONG GdiClientPID;                 // 6F4h\r
-   ULONG GdiClientTID;                 // 6F8h\r
-   PVOID GdiThreadLocaleInfo;          // 6FCh\r
-   PVOID UserReserved[5];              // 700h\r
-   PVOID glDispatchTable[0x118];       // 714h\r
-   ULONG glReserved1[0x1A];            // B74h\r
-   PVOID glReserved2;                  // BDCh\r
-   PVOID glSectionInfo;                // BE0h\r
-   PVOID glSection;                    // BE4h\r
-   PVOID glTable;                      // BE8h\r
-   PVOID glCurrentRC;                  // BECh\r
-   PVOID glContext;                    // BF0h\r
-   NTSTATUS LastStatusValue;           // BF4h\r
-   UNICODE_STRING StaticUnicodeString; // BF8h\r
-   WCHAR StaticUnicodeBuffer[0x105];   // C00h\r
-   PVOID DeallocationStack;            // E0Ch\r
-   PVOID TlsSlots[0x40];               // E10h\r
-   LIST_ENTRY TlsLinks;                // F10h\r
-   PVOID Vdm;                          // F18h\r
-   PVOID ReservedForNtRpc;             // F1Ch\r
-   PVOID DbgSsReserved[0x2];           // F20h\r
-   ULONG HardErrorDisabled;            // F28h\r
-   PVOID Instrumentation[0x10];        // F2Ch\r
-   PVOID WinSockData;                  // F6Ch\r
-   ULONG GdiBatchCount;                // F70h\r
-   ULONG Spare2;                       // F74h\r
-   ULONG Spare3;                       // F78h\r
-   ULONG Spare4;                       // F7Ch\r
-   PVOID ReservedForOle;               // F80h\r
-   ULONG WaitingOnLoaderLock;          // F84h\r
-   PVOID WineDebugInfo;                // Needed for WINE DLL's\r
-} TEB, *PTEB;\r
-\r
-\r
-#define NtCurrentPeb() (NtCurrentTeb()->Peb)\r
-\r
-static inline PTEB NtCurrentTeb(VOID)\r
-{\r
-   int x;\r
-   \r
-   __asm__ __volatile__("movl %%fs:0x18, %0\n\t"\r
-                       : "=r" (x) /* can't have two memory operands */\r
-                       : /* no inputs */\r
-                       );\r
-   \r
-   return((PTEB)x);\r
-}\r
-\r
-\r
-\r
-#endif /* __INCLUDE_INTERNAL_TEB */\r
+/* TEB/PEB parameters */
+#ifndef __INCLUDE_INTERNAL_TEB
+#define __INCLUDE_INTERNAL_TEB
+
+#include <napi/types.h>
+
+#ifdef __USE_W32API
+#include <ddk/ntapi.h>
+#endif /* !__USE_W32API */
+
+#ifndef __USE_W32API
+
+typedef struct _CLIENT_ID
+{
+   HANDLE UniqueProcess;
+   HANDLE UniqueThread;
+} CLIENT_ID, *PCLIENT_ID;
+
+typedef struct _RTL_USER_PROCESS_PARAMETERS {
+       ULONG  AllocationSize;
+       ULONG  Size;
+       ULONG  Flags;
+       ULONG  DebugFlags;
+       HANDLE  hConsole;
+       ULONG  ProcessGroup;
+       HANDLE  hStdInput;
+       HANDLE  hStdOutput;
+       HANDLE  hStdError;
+       UNICODE_STRING  CurrentDirectoryName;
+       HANDLE  CurrentDirectoryHandle;
+       UNICODE_STRING  DllPath;
+       UNICODE_STRING  ImagePathName;
+       UNICODE_STRING  CommandLine;
+       PWSTR  Environment;
+       ULONG  dwX;
+       ULONG  dwY;
+       ULONG  dwXSize;
+       ULONG  dwYSize;
+       ULONG  dwXCountChars;
+       ULONG  dwYCountChars;
+       ULONG  dwFillAttribute;
+       ULONG  dwFlags;
+       ULONG  wShowWindow;
+       UNICODE_STRING  WindowTitle;
+       UNICODE_STRING  DesktopInfo;
+       UNICODE_STRING  ShellInfo;
+       UNICODE_STRING  RuntimeInfo;
+} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
+
+typedef struct _NT_TIB {
+    struct _EXCEPTION_REGISTRATION_RECORD* ExceptionList;  // 00h
+    PVOID StackBase;                                       // 04h
+    PVOID StackLimit;                                      // 08h
+    PVOID SubSystemTib;                                    // 0Ch
+    union {
+        PVOID FiberData;                                   // 10h
+        ULONG Version;                                     // 10h
+    } Fib;
+    PVOID ArbitraryUserPointer;                            // 14h
+    struct _NT_TIB *Self;                                  // 18h
+} NT_TIB, *PNT_TIB;
+
+#endif /* !__USE_W32API */
+
+typedef struct _CURDIR
+{
+   UNICODE_STRING DosPath;
+   PVOID Handle;
+} CURDIR, *PCURDIR;
+
+typedef struct RTL_DRIVE_LETTER_CURDIR
+{
+   USHORT Flags;
+   USHORT Length;
+   ULONG TimeStamp;
+   UNICODE_STRING DosPath;
+} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
+
+typedef struct _PEB_FREE_BLOCK
+{
+   struct _PEB_FREE_BLOCK* Next;
+   ULONG Size;
+} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
+
+/* RTL_USER_PROCESS_PARAMETERS.Flags */
+#define PPF_NORMALIZED (1)
+
+#define PEB_BASE        (0x7FFDF000)
+
+typedef struct _PEB_LDR_DATA
+{
+   ULONG Length;
+   BOOLEAN Initialized;
+   PVOID SsHandle;
+   LIST_ENTRY InLoadOrderModuleList;
+   LIST_ENTRY InMemoryOrderModuleList;
+   LIST_ENTRY InInitializationOrderModuleList;
+} PEB_LDR_DATA, *PPEB_LDR_DATA;
+
+typedef VOID STDCALL_FUNC (*PPEBLOCKROUTINE)(PVOID);
+
+typedef struct _PEB
+{
+   UCHAR InheritedAddressSpace;                     // 00h
+   UCHAR ReadImageFileExecOptions;                  // 01h
+   UCHAR BeingDebugged;                             // 02h
+   UCHAR Spare;                                     // 03h
+   PVOID Mutant;                                    // 04h
+   PVOID ImageBaseAddress;                          // 08h
+   PPEB_LDR_DATA Ldr;                               // 0Ch
+   PRTL_USER_PROCESS_PARAMETERS ProcessParameters;  // 10h
+   PVOID SubSystemData;                             // 14h
+   PVOID ProcessHeap;                               // 18h
+   PVOID FastPebLock;                               // 1Ch
+   PPEBLOCKROUTINE FastPebLockRoutine;              // 20h
+   PPEBLOCKROUTINE FastPebUnlockRoutine;            // 24h
+   ULONG EnvironmentUpdateCount;                    // 28h
+   PVOID* KernelCallbackTable;                      // 2Ch
+   PVOID EventLogSection;                           // 30h
+   PVOID EventLog;                                  // 34h
+   PPEB_FREE_BLOCK FreeList;                        // 38h
+   ULONG TlsExpansionCounter;                       // 3Ch
+   PVOID TlsBitmap;                                 // 40h
+   ULONG TlsBitmapBits[0x2];                        // 44h
+   PVOID ReadOnlySharedMemoryBase;                  // 4Ch
+   PVOID ReadOnlySharedMemoryHeap;                  // 50h
+   PVOID* ReadOnlyStaticServerData;                 // 54h
+   PVOID AnsiCodePageData;                          // 58h
+   PVOID OemCodePageData;                           // 5Ch
+   PVOID UnicodeCaseTableData;                      // 60h
+   ULONG NumberOfProcessors;                        // 64h
+   ULONG NtGlobalFlag;                              // 68h
+   UCHAR Spare2[0x4];                               // 6Ch
+   LARGE_INTEGER CriticalSectionTimeout;            // 70h
+   ULONG HeapSegmentReserve;                        // 78h
+   ULONG HeapSegmentCommit;                         // 7Ch
+   ULONG HeapDeCommitTotalFreeThreshold;            // 80h
+   ULONG HeapDeCommitFreeBlockThreshold;            // 84h
+   ULONG NumberOfHeaps;                             // 88h
+   ULONG MaximumNumberOfHeaps;                      // 8Ch
+   PVOID** ProcessHeaps;                            // 90h
+   PVOID GdiSharedHandleTable;                      // 94h
+   PVOID ProcessStarterHelper;                      // 98h
+   PVOID GdiDCAttributeList;                        // 9Ch
+   PVOID LoaderLock;                                // A0h
+   ULONG OSMajorVersion;                            // A4h
+   ULONG OSMinorVersion;                            // A8h
+   USHORT OSBuildNumber;                            // ACh
+   UCHAR SPMajorVersion;                            // AEh
+   UCHAR SPMinorVersion;                            // AFh
+   ULONG OSPlatformId;                              // B0h
+   ULONG ImageSubSystem;                            // B4h
+   ULONG ImageSubSystemMajorVersion;                // B8h
+   ULONG ImageSubSystemMinorVersion;                // C0h
+   ULONG GdiHandleBuffer[0x22];                     // C4h
+} PEB;
+
+#ifndef __USE_W32API
+
+typedef PEB *PPEB;
+
+#endif /* !__USE_W32API */
+
+typedef struct _GDI_TEB_BATCH
+{
+   ULONG Offset;
+   ULONG HDC;
+   ULONG Buffer[0x136];
+} GDI_TEB_BATCH, *PGDI_TEB_BATCH;
+
+typedef struct _TEB
+{
+   NT_TIB Tib;                         // 00h
+   PVOID EnvironmentPointer;           // 1Ch
+   CLIENT_ID Cid;                      // 20h
+   PVOID ActiveRpcInfo;                // 28h
+   PVOID ThreadLocalStoragePointer;    // 2Ch
+   PPEB Peb;                           // 30h
+   ULONG LastErrorValue;               // 34h
+   ULONG CountOfOwnedCriticalSections; // 38h
+   PVOID CsrClientThread;              // 3Ch
+   struct _W32THREAD* Win32ThreadInfo;         // 40h
+   ULONG Win32ClientInfo[0x1F];        // 44h
+   PVOID WOW32Reserved;                // C0h
+   ULONG CurrentLocale;                // C4h
+   ULONG FpSoftwareStatusRegister;     // C8h
+   PVOID SystemReserved1[0x36];        // CCh
+   PVOID Spare1;                       // 1A4h
+   LONG ExceptionCode;                 // 1A8h
+   ULONG SpareBytes1[0x28];            // 1ACh
+   PVOID SystemReserved2[0xA];         // 1D4h
+//   GDI_TEB_BATCH GdiTebBatch;          // 1FCh
+   ULONG gdiRgn;                       // 6DCh
+   ULONG gdiPen;                       // 6E0h
+   ULONG gdiBrush;                     // 6E4h
+   CLIENT_ID RealClientId;             // 6E8h
+   PVOID GdiCachedProcessHandle;       // 6F0h
+   ULONG GdiClientPID;                 // 6F4h
+   ULONG GdiClientTID;                 // 6F8h
+   PVOID GdiThreadLocaleInfo;          // 6FCh
+   PVOID UserReserved[5];              // 700h
+   PVOID glDispatchTable[0x118];       // 714h
+   ULONG glReserved1[0x1A];            // B74h
+   PVOID glReserved2;                  // BDCh
+   PVOID glSectionInfo;                // BE0h
+   PVOID glSection;                    // BE4h
+   PVOID glTable;                      // BE8h
+   PVOID glCurrentRC;                  // BECh
+   PVOID glContext;                    // BF0h
+   NTSTATUS LastStatusValue;           // BF4h
+   UNICODE_STRING StaticUnicodeString; // BF8h
+   WCHAR StaticUnicodeBuffer[0x105];   // C00h
+   PVOID DeallocationStack;            // E0Ch
+   PVOID TlsSlots[0x40];               // E10h
+   LIST_ENTRY TlsLinks;                // F10h
+   PVOID Vdm;                          // F18h
+   PVOID ReservedForNtRpc;             // F1Ch
+   PVOID DbgSsReserved[0x2];           // F20h
+   ULONG HardErrorDisabled;            // F28h
+   PVOID Instrumentation[0x10];        // F2Ch
+   PVOID WinSockData;                  // F6Ch
+   ULONG GdiBatchCount;                // F70h
+   ULONG Spare2;                       // F74h
+   ULONG Spare3;                       // F78h
+   ULONG Spare4;                       // F7Ch
+   PVOID ReservedForOle;               // F80h
+   ULONG WaitingOnLoaderLock;          // F84h
+   PVOID WineDebugInfo;                // Needed for WINE DLL's
+} TEB, *PTEB;
+
+
+#define NtCurrentPeb() (NtCurrentTeb()->Peb)
+
+#ifdef G_GNUC_UNUSED
+static inline PTEB NtCurrentTeb(VOID) G_GNUC_UNUSED;
+#endif /* G_GNUC_UNUSED */
+static inline PTEB NtCurrentTeb(VOID)
+{
+   int x;
+   
+   __asm__ __volatile__("movl %%fs:0x18, %0\n\t"
+                       : "=r" (x) /* can't have two memory operands */
+                       : /* no inputs */
+                       );
+   
+   return((PTEB)x);
+}
+
+#endif /* __INCLUDE_INTERNAL_TEB */