]> git.proxmox.com Git - rustc.git/blob - vendor/ntapi/src/ntpebteb.rs
New upstream version 1.63.0+dfsg1
[rustc.git] / vendor / ntapi / src / ntpebteb.rs
1 use core::mem::size_of;
2 use crate::ntapi_base::CLIENT_ID;
3 use crate::ntpsapi::{GDI_HANDLE_BUFFER, PPEB_LDR_DATA};
4 use crate::ntrtl::PRTL_USER_PROCESS_PARAMETERS;
5 use winapi::shared::basetsd::{SIZE_T, ULONG_PTR};
6 use winapi::shared::guiddef::GUID;
7 use winapi::shared::ntdef::{
8 BOOLEAN, CHAR, HANDLE, LCID, LIST_ENTRY, LONG, NTSTATUS, PROCESSOR_NUMBER, PSTR, PVOID, UCHAR,
9 ULARGE_INTEGER, ULONG, ULONGLONG, UNICODE_STRING, USHORT, WCHAR,
10 };
11 use winapi::um::winnt::{
12 ACTIVATION_CONTEXT, FLS_MAXIMUM_AVAILABLE, NT_TIB, PRTL_CRITICAL_SECTION, PSLIST_HEADER,
13 };
14 STRUCT!{struct RTL_ACTIVATION_CONTEXT_STACK_FRAME {
15 Previous: PRTL_ACTIVATION_CONTEXT_STACK_FRAME,
16 ActivationContext: *mut ACTIVATION_CONTEXT,
17 Flags: ULONG,
18 }}
19 pub type PRTL_ACTIVATION_CONTEXT_STACK_FRAME = *mut RTL_ACTIVATION_CONTEXT_STACK_FRAME;
20 STRUCT!{struct ACTIVATION_CONTEXT_STACK {
21 ActiveFrame: *mut RTL_ACTIVATION_CONTEXT_STACK_FRAME,
22 FrameListCache: LIST_ENTRY,
23 Flags: ULONG,
24 NextCookieSequenceNumber: ULONG,
25 StackId: ULONG,
26 }}
27 pub type PACTIVATION_CONTEXT_STACK = *mut ACTIVATION_CONTEXT_STACK;
28 STRUCT!{struct API_SET_NAMESPACE {
29 Version: ULONG,
30 Size: ULONG,
31 Flags: ULONG,
32 Count: ULONG,
33 EntryOffset: ULONG,
34 HashOffset: ULONG,
35 HashFactor: ULONG,
36 }}
37 pub type PAPI_SET_NAMESPACE = *mut API_SET_NAMESPACE;
38 STRUCT!{struct API_SET_HASH_ENTRY {
39 Hash: ULONG,
40 Index: ULONG,
41 }}
42 pub type PAPI_SET_HASH_ENTRY = *mut API_SET_HASH_ENTRY;
43 STRUCT!{struct API_SET_NAMESPACE_ENTRY {
44 Flags: ULONG,
45 NameOffset: ULONG,
46 NameLength: ULONG,
47 HashedLength: ULONG,
48 ValueOffset: ULONG,
49 ValueCount: ULONG,
50 }}
51 pub type PAPI_SET_NAMESPACE_ENTRY = *mut API_SET_NAMESPACE_ENTRY;
52 STRUCT!{struct API_SET_VALUE_ENTRY {
53 Flags: ULONG,
54 NameOffset: ULONG,
55 NameLength: ULONG,
56 ValueOffset: ULONG,
57 ValueLength: ULONG,
58 }}
59 pub type PAPI_SET_VALUE_ENTRY = *mut API_SET_VALUE_ENTRY;
60 UNION!{union PEB_u {
61 KernelCallbackTable: PVOID,
62 UserSharedInfoPtr: PVOID,
63 }}
64 #[repr(C)]
65 pub struct LEAP_SECOND_DATA([u8; 0]); //fixme
66 STRUCT!{struct PEB {
67 InheritedAddressSpace: BOOLEAN,
68 ReadImageFileExecOptions: BOOLEAN,
69 BeingDebugged: BOOLEAN,
70 BitField: BOOLEAN,
71 Mutant: HANDLE,
72 ImageBaseAddress: PVOID,
73 Ldr: PPEB_LDR_DATA,
74 ProcessParameters: PRTL_USER_PROCESS_PARAMETERS,
75 SubSystemData: PVOID,
76 ProcessHeap: PVOID,
77 FastPebLock: PRTL_CRITICAL_SECTION,
78 IFEOKey: PVOID,
79 AtlThunkSListPtr: PSLIST_HEADER,
80 CrossProcessFlags: ULONG,
81 u: PEB_u,
82 SystemReserved: [ULONG; 1],
83 AtlThunkSListPtr32: ULONG,
84 ApiSetMap: PAPI_SET_NAMESPACE,
85 TlsExpansionCounter: ULONG,
86 TlsBitmap: PVOID,
87 TlsBitmapBits: [ULONG; 2],
88 ReadOnlySharedMemoryBase: PVOID,
89 SharedData: PVOID,
90 ReadOnlyStaticServerData: *mut PVOID,
91 AnsiCodePageData: PVOID,
92 OemCodePageData: PVOID,
93 UnicodeCaseTableData: PVOID,
94 NumberOfProcessors: ULONG,
95 NtGlobalFlag: ULONG,
96 CriticalSectionTimeout: ULARGE_INTEGER,
97 HeapSegmentReserve: SIZE_T,
98 HeapSegmentCommit: SIZE_T,
99 HeapDeCommitTotalFreeThreshold: SIZE_T,
100 HeapDeCommitFreeBlockThreshold: SIZE_T,
101 NumberOfHeaps: ULONG,
102 MaximumNumberOfHeaps: ULONG,
103 ProcessHeaps: *mut PVOID,
104 GdiSharedHandleTable: PVOID,
105 ProcessStarterHelper: PVOID,
106 GdiDCAttributeList: ULONG,
107 LoaderLock: PRTL_CRITICAL_SECTION,
108 OSMajorVersion: ULONG,
109 OSMinorVersion: ULONG,
110 OSBuildNumber: USHORT,
111 OSCSDVersion: USHORT,
112 OSPlatformId: ULONG,
113 ImageSubsystem: ULONG,
114 ImageSubsystemMajorVersion: ULONG,
115 ImageSubsystemMinorVersion: ULONG,
116 ActiveProcessAffinityMask: ULONG_PTR,
117 GdiHandleBuffer: GDI_HANDLE_BUFFER,
118 PostProcessInitRoutine: PVOID,
119 TlsExpansionBitmap: PVOID,
120 TlsExpansionBitmapBits: [ULONG; 32],
121 SessionId: ULONG,
122 AppCompatFlags: ULARGE_INTEGER,
123 AppCompatFlagsUser: ULARGE_INTEGER,
124 pShimData: PVOID,
125 AppCompatInfo: PVOID,
126 CSDVersion: UNICODE_STRING,
127 ActivationContextData: PVOID,
128 ProcessAssemblyStorageMap: PVOID,
129 SystemDefaultActivationContextData: PVOID,
130 SystemAssemblyStorageMap: PVOID,
131 MinimumStackCommit: SIZE_T,
132 FlsCallback: *mut PVOID,
133 FlsListHead: LIST_ENTRY,
134 FlsBitmap: PVOID,
135 FlsBitmapBits: [ULONG; FLS_MAXIMUM_AVAILABLE as usize / (size_of::<ULONG>() * 8)],
136 FlsHighIndex: ULONG,
137 WerRegistrationData: PVOID,
138 WerShipAssertPtr: PVOID,
139 pUnused: PVOID,
140 pImageHeaderHash: PVOID,
141 TracingFlags: ULONG,
142 CsrServerReadOnlySharedMemoryBase: ULONGLONG,
143 TppWorkerpListLock: PRTL_CRITICAL_SECTION,
144 TppWorkerpList: LIST_ENTRY,
145 WaitOnAddressHashTable: [PVOID; 128],
146 TelemetryCoverageHeader: PVOID,
147 CloudFileFlags: ULONG,
148 CloudFileDiagFlags: ULONG,
149 PlaceholderCompatibilityMode: CHAR,
150 PlaceholderCompatibilityModeReserved: [CHAR; 7],
151 LeapSecondData: *mut LEAP_SECOND_DATA,
152 LeapSecondFlags: ULONG,
153 NtGlobalFlag2: ULONG,
154 }}
155 BITFIELD!{PEB BitField: BOOLEAN [
156 ImageUsesLargePages set_ImageUsesLargePages[0..1],
157 IsProtectedProcess set_IsProtectedProcess[1..2],
158 IsImageDynamicallyRelocated set_IsImageDynamicallyRelocated[2..3],
159 SkipPatchingUser32Forwarders set_SkipPatchingUser32Forwarders[3..4],
160 IsPackagedProcess set_IsPackagedProcess[4..5],
161 IsAppContainer set_IsAppContainer[5..6],
162 IsProtectedProcessLight set_IsProtectedProcessLight[6..7],
163 IsLongPathAwareProcess set_IsLongPathAwareProcess[7..8],
164 ]}
165 BITFIELD!{PEB CrossProcessFlags: ULONG [
166 ProcessInJob set_ProcessInJob[0..1],
167 ProcessInitializing set_ProcessInitializing[1..2],
168 ProcessUsingVEH set_ProcessUsingVEH[2..3],
169 ProcessUsingVCH set_ProcessUsingVCH[3..4],
170 ProcessUsingFTH set_ProcessUsingFTH[4..5],
171 ProcessPreviouslyThrottled set_ProcessPreviouslyThrottled[5..6],
172 ProcessCurrentlyThrottled set_ProcessCurrentlyThrottled[6..7],
173 ProcessImagesHotPatched set_ProcessImagesHotPatched[7..8],
174 ReservedBits0 set_ReservedBits0[8..32],
175 ]}
176 BITFIELD!{PEB TracingFlags: ULONG [
177 HeapTracingEnabled set_HeapTracingEnabled[0..1],
178 CritSecTracingEnabled set_CritSecTracingEnabled[1..2],
179 LibLoaderTracingEnabled set_LibLoaderTracingEnabled[2..3],
180 SpareTracingBits set_SpareTracingBits[3..32],
181 ]}
182 BITFIELD!{PEB LeapSecondFlags: ULONG [
183 SixtySecondEnabled set_SixtySecondEnabled[0..1],
184 Reserved set_Reserved[1..32],
185 ]}
186 pub type PPEB = *mut PEB;
187 pub const GDI_BATCH_BUFFER_SIZE: usize = 310;
188 STRUCT!{struct GDI_TEB_BATCH {
189 Offset: ULONG,
190 HDC: ULONG_PTR,
191 Buffer: [ULONG; GDI_BATCH_BUFFER_SIZE],
192 }}
193 pub type PGDI_TEB_BATCH = *mut GDI_TEB_BATCH;
194 STRUCT!{struct TEB_ACTIVE_FRAME_CONTEXT {
195 Flags: ULONG,
196 FrameName: PSTR,
197 }}
198 pub type PTEB_ACTIVE_FRAME_CONTEXT = *mut TEB_ACTIVE_FRAME_CONTEXT;
199 STRUCT!{struct TEB_ACTIVE_FRAME {
200 Flags: ULONG,
201 Previous: *mut TEB_ACTIVE_FRAME,
202 Context: PTEB_ACTIVE_FRAME_CONTEXT,
203 }}
204 pub type PTEB_ACTIVE_FRAME = *mut TEB_ACTIVE_FRAME;
205 STRUCT!{struct TEB_u_s {
206 ReservedPad0: UCHAR,
207 ReservedPad1: UCHAR,
208 ReservedPad2: UCHAR,
209 IdealProcessor: UCHAR,
210 }}
211 UNION!{union TEB_u {
212 CurrentIdealProcessor: PROCESSOR_NUMBER,
213 IdealProcessorValue: ULONG,
214 s: TEB_u_s,
215 }}
216 #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
217 STRUCT!{struct TEB {
218 NtTib: NT_TIB,
219 EnvironmentPointer: PVOID,
220 ClientId: CLIENT_ID,
221 ActiveRpcHandle: PVOID,
222 ThreadLocalStoragePointer: PVOID,
223 ProcessEnvironmentBlock: PPEB,
224 LastErrorValue: ULONG,
225 CountOfOwnedCriticalSections: ULONG,
226 CsrClientThread: PVOID,
227 Win32ThreadInfo: PVOID,
228 User32Reserved: [ULONG; 26],
229 UserReserved: [ULONG; 5],
230 WOW32Reserved: PVOID,
231 CurrentLocale: LCID,
232 FpSoftwareStatusRegister: ULONG,
233 ReservedForDebuggerInstrumentation: [PVOID; 16],
234 SystemReserved1: [PVOID; 30],
235 PlaceholderCompatibilityMode: CHAR,
236 PlaceholderReserved: [CHAR; 11],
237 ProxiedProcessId: ULONG,
238 ActivationStack: ACTIVATION_CONTEXT_STACK,
239 WorkingOnBehalfTicket: [UCHAR; 8],
240 ExceptionCode: NTSTATUS,
241 ActivationContextStackPointer: PACTIVATION_CONTEXT_STACK,
242 InstrumentationCallbackSp: ULONG_PTR,
243 InstrumentationCallbackPreviousPc: ULONG_PTR,
244 InstrumentationCallbackPreviousSp: ULONG_PTR,
245 TxFsContext: ULONG,
246 InstrumentationCallbackDisabled: BOOLEAN,
247 GdiTebBatch: GDI_TEB_BATCH,
248 RealClientId: CLIENT_ID,
249 GdiCachedProcessHandle: HANDLE,
250 GdiClientPID: ULONG,
251 GdiClientTID: ULONG,
252 GdiThreadLocalInfo: PVOID,
253 Win32ClientInfo: [ULONG_PTR; 62],
254 glDispatchTable: [PVOID; 233],
255 glReserved1: [ULONG_PTR; 29],
256 glReserved2: PVOID,
257 glSectionInfo: PVOID,
258 glSection: PVOID,
259 glTable: PVOID,
260 glCurrentRC: PVOID,
261 glContext: PVOID,
262 LastStatusValue: NTSTATUS,
263 StaticUnicodeString: UNICODE_STRING,
264 StaticUnicodeBuffer: [WCHAR; 261],
265 DeallocationStack: PVOID,
266 TlsSlots: [PVOID; 64],
267 TlsLinks: LIST_ENTRY,
268 Vdm: PVOID,
269 ReservedForNtRpc: PVOID,
270 DbgSsReserved: [PVOID; 2],
271 HardErrorMode: ULONG,
272 Instrumentation: [PVOID; 11],
273 ActivityId: GUID,
274 SubProcessTag: PVOID,
275 PerflibData: PVOID,
276 EtwTraceData: PVOID,
277 WinSockData: PVOID,
278 GdiBatchCount: ULONG,
279 u: TEB_u,
280 GuaranteedStackBytes: ULONG,
281 ReservedForPerf: PVOID,
282 ReservedForOle: PVOID,
283 WaitingOnLoaderLock: ULONG,
284 SavedPriorityState: PVOID,
285 ReservedForCodeCoverage: ULONG_PTR,
286 ThreadPoolData: PVOID,
287 TlsExpansionSlots: *mut PVOID,
288 DeallocationBStore: PVOID,
289 BStoreLimit: PVOID,
290 MuiGeneration: ULONG,
291 IsImpersonating: ULONG,
292 NlsCache: PVOID,
293 pShimData: PVOID,
294 HeapVirtualAffinity: USHORT,
295 LowFragHeapDataSlot: USHORT,
296 CurrentTransactionHandle: HANDLE,
297 ActiveFrame: PTEB_ACTIVE_FRAME,
298 FlsData: PVOID,
299 PreferredLanguages: PVOID,
300 UserPrefLanguages: PVOID,
301 MergedPrefLanguages: PVOID,
302 MuiImpersonation: ULONG,
303 CrossTebFlags: USHORT,
304 SameTebFlags: USHORT,
305 TxnScopeEnterCallback: PVOID,
306 TxnScopeExitCallback: PVOID,
307 TxnScopeContext: PVOID,
308 LockCount: ULONG,
309 WowTebOffset: LONG,
310 ResourceRetValue: PVOID,
311 ReservedForWdf: PVOID,
312 ReservedForCrt: ULONGLONG,
313 EffectiveContainerId: GUID,
314 }}
315 #[cfg(target_arch = "x86")]
316 STRUCT!{struct TEB {
317 NtTib: NT_TIB,
318 EnvironmentPointer: PVOID,
319 ClientId: CLIENT_ID,
320 ActiveRpcHandle: PVOID,
321 ThreadLocalStoragePointer: PVOID,
322 ProcessEnvironmentBlock: PPEB,
323 LastErrorValue: ULONG,
324 CountOfOwnedCriticalSections: ULONG,
325 CsrClientThread: PVOID,
326 Win32ThreadInfo: PVOID,
327 User32Reserved: [ULONG; 26],
328 UserReserved: [ULONG; 5],
329 WOW32Reserved: PVOID,
330 CurrentLocale: LCID,
331 FpSoftwareStatusRegister: ULONG,
332 ReservedForDebuggerInstrumentation: [PVOID; 16],
333 SystemReserved1: [PVOID; 26],
334 PlaceholderCompatibilityMode: CHAR,
335 PlaceholderReserved: [CHAR; 11],
336 ProxiedProcessId: ULONG,
337 ActivationStack: ACTIVATION_CONTEXT_STACK,
338 WorkingOnBehalfTicket: [UCHAR; 8],
339 ExceptionCode: NTSTATUS,
340 ActivationContextStackPointer: PACTIVATION_CONTEXT_STACK,
341 InstrumentationCallbackSp: ULONG_PTR,
342 InstrumentationCallbackPreviousPc: ULONG_PTR,
343 InstrumentationCallbackPreviousSp: ULONG_PTR,
344 InstrumentationCallbackDisabled: BOOLEAN,
345 SpareBytes: [UCHAR; 23],
346 TxFsContext: ULONG,
347 GdiTebBatch: GDI_TEB_BATCH,
348 RealClientId: CLIENT_ID,
349 GdiCachedProcessHandle: HANDLE,
350 GdiClientPID: ULONG,
351 GdiClientTID: ULONG,
352 GdiThreadLocalInfo: PVOID,
353 Win32ClientInfo: [ULONG_PTR; 62],
354 glDispatchTable: [PVOID; 233],
355 glReserved1: [ULONG_PTR; 29],
356 glReserved2: PVOID,
357 glSectionInfo: PVOID,
358 glSection: PVOID,
359 glTable: PVOID,
360 glCurrentRC: PVOID,
361 glContext: PVOID,
362 LastStatusValue: NTSTATUS,
363 StaticUnicodeString: UNICODE_STRING,
364 StaticUnicodeBuffer: [WCHAR; 261],
365 DeallocationStack: PVOID,
366 TlsSlots: [PVOID; 64],
367 TlsLinks: LIST_ENTRY,
368 Vdm: PVOID,
369 ReservedForNtRpc: PVOID,
370 DbgSsReserved: [PVOID; 2],
371 HardErrorMode: ULONG,
372 Instrumentation: [PVOID; 9],
373 ActivityId: GUID,
374 SubProcessTag: PVOID,
375 PerflibData: PVOID,
376 EtwTraceData: PVOID,
377 WinSockData: PVOID,
378 GdiBatchCount: ULONG,
379 u: TEB_u,
380 GuaranteedStackBytes: ULONG,
381 ReservedForPerf: PVOID,
382 ReservedForOle: PVOID,
383 WaitingOnLoaderLock: ULONG,
384 SavedPriorityState: PVOID,
385 ReservedForCodeCoverage: ULONG_PTR,
386 ThreadPoolData: PVOID,
387 TlsExpansionSlots: *mut PVOID,
388 MuiGeneration: ULONG,
389 IsImpersonating: ULONG,
390 NlsCache: PVOID,
391 pShimData: PVOID,
392 HeapVirtualAffinity: USHORT,
393 LowFragHeapDataSlot: USHORT,
394 CurrentTransactionHandle: HANDLE,
395 ActiveFrame: PTEB_ACTIVE_FRAME,
396 FlsData: PVOID,
397 PreferredLanguages: PVOID,
398 UserPrefLanguages: PVOID,
399 MergedPrefLanguages: PVOID,
400 MuiImpersonation: ULONG,
401 CrossTebFlags: USHORT,
402 SameTebFlags: USHORT,
403 TxnScopeEnterCallback: PVOID,
404 TxnScopeExitCallback: PVOID,
405 TxnScopeContext: PVOID,
406 LockCount: ULONG,
407 WowTebOffset: LONG,
408 ResourceRetValue: PVOID,
409 ReservedForWdf: PVOID,
410 ReservedForCrt: ULONGLONG,
411 EffectiveContainerId: GUID,
412 }}
413 BITFIELD!{TEB SameTebFlags: USHORT [
414 SafeThunkCall set_SafeThunkCall[0..1],
415 InDebugPrint set_InDebugPrint[1..2],
416 HasFiberData set_HasFiberData[2..3],
417 SkipThreadAttach set_SkipThreadAttach[3..4],
418 WerInShipAssertCode set_WerInShipAssertCode[4..5],
419 RanProcessInit set_RanProcessInit[5..6],
420 ClonedThread set_ClonedThread[6..7],
421 SuppressDebugMsg set_SuppressDebugMsg[7..8],
422 DisableUserStackWalk set_DisableUserStackWalk[8..9],
423 RtlExceptionAttached set_RtlExceptionAttached[9..10],
424 InitialThread set_InitialThread[10..11],
425 SessionAware set_SessionAware[11..12],
426 LoadOwner set_LoadOwner[12..13],
427 LoaderWorker set_LoaderWorker[13..14],
428 SkipLoaderInit set_SkipLoaderInit[14..15],
429 SpareSameTebBits set_SpareSameTebBits[15..16],
430 ]}
431 pub type PTEB = *mut TEB;