1 /* TEB/PEB parameters */
2 #ifndef __INCLUDE_INTERNAL_TEB
3 #define __INCLUDE_INTERNAL_TEB
5 #include <napi/types.h>
9 #endif /* !__USE_W32API */
13 typedef struct _CLIENT_ID
17 } CLIENT_ID
, *PCLIENT_ID
;
19 typedef struct _RTL_USER_PROCESS_PARAMETERS
{
29 UNICODE_STRING CurrentDirectoryName
;
30 HANDLE CurrentDirectoryHandle
;
31 UNICODE_STRING DllPath
;
32 UNICODE_STRING ImagePathName
;
33 UNICODE_STRING CommandLine
;
41 ULONG dwFillAttribute
;
44 UNICODE_STRING WindowTitle
;
45 UNICODE_STRING DesktopInfo
;
46 UNICODE_STRING ShellInfo
;
47 UNICODE_STRING RuntimeInfo
;
48 } RTL_USER_PROCESS_PARAMETERS
, *PRTL_USER_PROCESS_PARAMETERS
;
50 typedef struct _NT_TIB
{
51 struct _EXCEPTION_REGISTRATION_RECORD
* ExceptionList
; // 00h
52 PVOID StackBase
; // 04h
53 PVOID StackLimit
; // 08h
54 PVOID SubSystemTib
; // 0Ch
56 PVOID FiberData
; // 10h
59 PVOID ArbitraryUserPointer
; // 14h
60 struct _NT_TIB
*Self
; // 18h
63 #endif /* !__USE_W32API */
65 typedef struct _CURDIR
67 UNICODE_STRING DosPath
;
71 typedef struct RTL_DRIVE_LETTER_CURDIR
76 UNICODE_STRING DosPath
;
77 } RTL_DRIVE_LETTER_CURDIR
, *PRTL_DRIVE_LETTER_CURDIR
;
79 typedef struct _PEB_FREE_BLOCK
81 struct _PEB_FREE_BLOCK
* Next
;
83 } PEB_FREE_BLOCK
, *PPEB_FREE_BLOCK
;
85 /* RTL_USER_PROCESS_PARAMETERS.Flags */
86 #define PPF_NORMALIZED (1)
88 #define PEB_BASE (0x7FFDF000)
90 typedef struct _PEB_LDR_DATA
95 LIST_ENTRY InLoadOrderModuleList
;
96 LIST_ENTRY InMemoryOrderModuleList
;
97 LIST_ENTRY InInitializationOrderModuleList
;
98 } PEB_LDR_DATA
, *PPEB_LDR_DATA
;
100 typedef VOID
STDCALL_FUNC (*PPEBLOCKROUTINE
)(PVOID
);
104 UCHAR InheritedAddressSpace
; // 00h
105 UCHAR ReadImageFileExecOptions
; // 01h
106 UCHAR BeingDebugged
; // 02h
109 PVOID ImageBaseAddress
; // 08h
110 PPEB_LDR_DATA Ldr
; // 0Ch
111 PRTL_USER_PROCESS_PARAMETERS ProcessParameters
; // 10h
112 PVOID SubSystemData
; // 14h
113 PVOID ProcessHeap
; // 18h
114 PVOID FastPebLock
; // 1Ch
115 PPEBLOCKROUTINE FastPebLockRoutine
; // 20h
116 PPEBLOCKROUTINE FastPebUnlockRoutine
; // 24h
117 ULONG EnvironmentUpdateCount
; // 28h
118 PVOID
* KernelCallbackTable
; // 2Ch
119 PVOID EventLogSection
; // 30h
120 PVOID EventLog
; // 34h
121 PPEB_FREE_BLOCK FreeList
; // 38h
122 ULONG TlsExpansionCounter
; // 3Ch
123 PVOID TlsBitmap
; // 40h
124 ULONG TlsBitmapBits
[0x2]; // 44h
125 PVOID ReadOnlySharedMemoryBase
; // 4Ch
126 PVOID ReadOnlySharedMemoryHeap
; // 50h
127 PVOID
* ReadOnlyStaticServerData
; // 54h
128 PVOID AnsiCodePageData
; // 58h
129 PVOID OemCodePageData
; // 5Ch
130 PVOID UnicodeCaseTableData
; // 60h
131 ULONG NumberOfProcessors
; // 64h
132 ULONG NtGlobalFlag
; // 68h
133 UCHAR Spare2
[0x4]; // 6Ch
134 LARGE_INTEGER CriticalSectionTimeout
; // 70h
135 ULONG HeapSegmentReserve
; // 78h
136 ULONG HeapSegmentCommit
; // 7Ch
137 ULONG HeapDeCommitTotalFreeThreshold
; // 80h
138 ULONG HeapDeCommitFreeBlockThreshold
; // 84h
139 ULONG NumberOfHeaps
; // 88h
140 ULONG MaximumNumberOfHeaps
; // 8Ch
141 PVOID
** ProcessHeaps
; // 90h
142 PVOID GdiSharedHandleTable
; // 94h
143 PVOID ProcessStarterHelper
; // 98h
144 PVOID GdiDCAttributeList
; // 9Ch
145 PVOID LoaderLock
; // A0h
146 ULONG OSMajorVersion
; // A4h
147 ULONG OSMinorVersion
; // A8h
148 ULONG OSBuildNumber
; // ACh
149 ULONG OSPlatformId
; // B0h
150 ULONG ImageSubSystem
; // B4h
151 ULONG ImageSubSystemMajorVersion
; // B8h
152 ULONG ImageSubSystemMinorVersion
; // C0h
153 ULONG GdiHandleBuffer
[0x22]; // C4h
160 #endif /* !__USE_W32API */
162 typedef struct _GDI_TEB_BATCH
167 } GDI_TEB_BATCH
, *PGDI_TEB_BATCH
;
172 PVOID EnvironmentPointer
; // 1Ch
173 CLIENT_ID Cid
; // 20h
174 PVOID ActiveRpcInfo
; // 28h
175 PVOID ThreadLocalStoragePointer
; // 2Ch
177 ULONG LastErrorValue
; // 34h
178 ULONG CountOfOwnedCriticalSections
; // 38h
179 PVOID CsrClientThread
; // 3Ch
180 struct _W32THREAD
* Win32ThreadInfo
; // 40h
181 ULONG Win32ClientInfo
[0x1F]; // 44h
182 PVOID WOW32Reserved
; // C0h
183 ULONG CurrentLocale
; // C4h
184 ULONG FpSoftwareStatusRegister
; // C8h
185 PVOID SystemReserved1
[0x36]; // CCh
186 PVOID Spare1
; // 1A4h
187 LONG ExceptionCode
; // 1A8h
188 ULONG SpareBytes1
[0x28]; // 1ACh
189 PVOID SystemReserved2
[0xA]; // 1D4h
190 // GDI_TEB_BATCH GdiTebBatch; // 1FCh
191 ULONG gdiRgn
; // 6DCh
192 ULONG gdiPen
; // 6E0h
193 ULONG gdiBrush
; // 6E4h
194 CLIENT_ID RealClientId
; // 6E8h
195 PVOID GdiCachedProcessHandle
; // 6F0h
196 ULONG GdiClientPID
; // 6F4h
197 ULONG GdiClientTID
; // 6F8h
198 PVOID GdiThreadLocaleInfo
; // 6FCh
199 PVOID UserReserved
[5]; // 700h
200 PVOID glDispatchTable
[0x118]; // 714h
201 ULONG glReserved1
[0x1A]; // B74h
202 PVOID glReserved2
; // BDCh
203 PVOID glSectionInfo
; // BE0h
204 PVOID glSection
; // BE4h
205 PVOID glTable
; // BE8h
206 PVOID glCurrentRC
; // BECh
207 PVOID glContext
; // BF0h
208 NTSTATUS LastStatusValue
; // BF4h
209 UNICODE_STRING StaticUnicodeString
; // BF8h
210 WCHAR StaticUnicodeBuffer
[0x105]; // C00h
211 PVOID DeallocationStack
; // E0Ch
212 PVOID TlsSlots
[0x40]; // E10h
213 LIST_ENTRY TlsLinks
; // F10h
215 PVOID ReservedForNtRpc
; // F1Ch
216 PVOID DbgSsReserved
[0x2]; // F20h
217 ULONG HardErrorDisabled
; // F28h
218 PVOID Instrumentation
[0x10]; // F2Ch
219 PVOID WinSockData
; // F6Ch
220 ULONG GdiBatchCount
; // F70h
221 ULONG Spare2
; // F74h
222 ULONG Spare3
; // F78h
223 ULONG Spare4
; // F7Ch
224 PVOID ReservedForOle
; // F80h
225 ULONG WaitingOnLoaderLock
; // F84h
226 PVOID WineDebugInfo
; // Needed for WINE DLL's
230 #define NtCurrentPeb() (NtCurrentTeb()->Peb)
232 static inline PTEB
NtCurrentTeb(VOID
)
236 __asm__
__volatile__("movl %%fs:0x18, %0\n\t"
237 : "=r" (x
) /* can't have two memory operands */
244 #endif /* __INCLUDE_INTERNAL_TEB */