summaryrefslogtreecommitdiffstats
path: root/third_party/rust/ntapi/src/ntpebteb.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/ntapi/src/ntpebteb.rs')
-rw-r--r--third_party/rust/ntapi/src/ntpebteb.rs431
1 files changed, 431 insertions, 0 deletions
diff --git a/third_party/rust/ntapi/src/ntpebteb.rs b/third_party/rust/ntapi/src/ntpebteb.rs
new file mode 100644
index 0000000000..b517058632
--- /dev/null
+++ b/third_party/rust/ntapi/src/ntpebteb.rs
@@ -0,0 +1,431 @@
+use core::mem::size_of;
+use crate::ntapi_base::CLIENT_ID;
+use crate::ntpsapi::{GDI_HANDLE_BUFFER, PPEB_LDR_DATA};
+use crate::ntrtl::PRTL_USER_PROCESS_PARAMETERS;
+use winapi::shared::basetsd::{SIZE_T, ULONG_PTR};
+use winapi::shared::guiddef::GUID;
+use winapi::shared::ntdef::{
+ BOOLEAN, CHAR, HANDLE, LCID, LIST_ENTRY, LONG, NTSTATUS, PROCESSOR_NUMBER, PSTR, PVOID, UCHAR,
+ ULARGE_INTEGER, ULONG, ULONGLONG, UNICODE_STRING, USHORT, WCHAR,
+};
+use winapi::um::winnt::{
+ ACTIVATION_CONTEXT, FLS_MAXIMUM_AVAILABLE, NT_TIB, PRTL_CRITICAL_SECTION, PSLIST_HEADER,
+};
+STRUCT!{struct RTL_ACTIVATION_CONTEXT_STACK_FRAME {
+ Previous: PRTL_ACTIVATION_CONTEXT_STACK_FRAME,
+ ActivationContext: *mut ACTIVATION_CONTEXT,
+ Flags: ULONG,
+}}
+pub type PRTL_ACTIVATION_CONTEXT_STACK_FRAME = *mut RTL_ACTIVATION_CONTEXT_STACK_FRAME;
+STRUCT!{struct ACTIVATION_CONTEXT_STACK {
+ ActiveFrame: *mut RTL_ACTIVATION_CONTEXT_STACK_FRAME,
+ FrameListCache: LIST_ENTRY,
+ Flags: ULONG,
+ NextCookieSequenceNumber: ULONG,
+ StackId: ULONG,
+}}
+pub type PACTIVATION_CONTEXT_STACK = *mut ACTIVATION_CONTEXT_STACK;
+STRUCT!{struct API_SET_NAMESPACE {
+ Version: ULONG,
+ Size: ULONG,
+ Flags: ULONG,
+ Count: ULONG,
+ EntryOffset: ULONG,
+ HashOffset: ULONG,
+ HashFactor: ULONG,
+}}
+pub type PAPI_SET_NAMESPACE = *mut API_SET_NAMESPACE;
+STRUCT!{struct API_SET_HASH_ENTRY {
+ Hash: ULONG,
+ Index: ULONG,
+}}
+pub type PAPI_SET_HASH_ENTRY = *mut API_SET_HASH_ENTRY;
+STRUCT!{struct API_SET_NAMESPACE_ENTRY {
+ Flags: ULONG,
+ NameOffset: ULONG,
+ NameLength: ULONG,
+ HashedLength: ULONG,
+ ValueOffset: ULONG,
+ ValueCount: ULONG,
+}}
+pub type PAPI_SET_NAMESPACE_ENTRY = *mut API_SET_NAMESPACE_ENTRY;
+STRUCT!{struct API_SET_VALUE_ENTRY {
+ Flags: ULONG,
+ NameOffset: ULONG,
+ NameLength: ULONG,
+ ValueOffset: ULONG,
+ ValueLength: ULONG,
+}}
+pub type PAPI_SET_VALUE_ENTRY = *mut API_SET_VALUE_ENTRY;
+UNION!{union PEB_u {
+ KernelCallbackTable: PVOID,
+ UserSharedInfoPtr: PVOID,
+}}
+#[repr(C)]
+pub struct LEAP_SECOND_DATA([u8; 0]); //fixme
+STRUCT!{struct PEB {
+ InheritedAddressSpace: BOOLEAN,
+ ReadImageFileExecOptions: BOOLEAN,
+ BeingDebugged: BOOLEAN,
+ BitField: BOOLEAN,
+ Mutant: HANDLE,
+ ImageBaseAddress: PVOID,
+ Ldr: PPEB_LDR_DATA,
+ ProcessParameters: PRTL_USER_PROCESS_PARAMETERS,
+ SubSystemData: PVOID,
+ ProcessHeap: PVOID,
+ FastPebLock: PRTL_CRITICAL_SECTION,
+ IFEOKey: PVOID,
+ AtlThunkSListPtr: PSLIST_HEADER,
+ CrossProcessFlags: ULONG,
+ u: PEB_u,
+ SystemReserved: [ULONG; 1],
+ AtlThunkSListPtr32: ULONG,
+ ApiSetMap: PAPI_SET_NAMESPACE,
+ TlsExpansionCounter: ULONG,
+ TlsBitmap: PVOID,
+ TlsBitmapBits: [ULONG; 2],
+ ReadOnlySharedMemoryBase: PVOID,
+ SharedData: PVOID,
+ ReadOnlyStaticServerData: *mut PVOID,
+ AnsiCodePageData: PVOID,
+ OemCodePageData: PVOID,
+ UnicodeCaseTableData: PVOID,
+ NumberOfProcessors: ULONG,
+ NtGlobalFlag: ULONG,
+ CriticalSectionTimeout: ULARGE_INTEGER,
+ HeapSegmentReserve: SIZE_T,
+ HeapSegmentCommit: SIZE_T,
+ HeapDeCommitTotalFreeThreshold: SIZE_T,
+ HeapDeCommitFreeBlockThreshold: SIZE_T,
+ NumberOfHeaps: ULONG,
+ MaximumNumberOfHeaps: ULONG,
+ ProcessHeaps: *mut PVOID,
+ GdiSharedHandleTable: PVOID,
+ ProcessStarterHelper: PVOID,
+ GdiDCAttributeList: ULONG,
+ LoaderLock: PRTL_CRITICAL_SECTION,
+ OSMajorVersion: ULONG,
+ OSMinorVersion: ULONG,
+ OSBuildNumber: USHORT,
+ OSCSDVersion: USHORT,
+ OSPlatformId: ULONG,
+ ImageSubsystem: ULONG,
+ ImageSubsystemMajorVersion: ULONG,
+ ImageSubsystemMinorVersion: ULONG,
+ ActiveProcessAffinityMask: ULONG_PTR,
+ GdiHandleBuffer: GDI_HANDLE_BUFFER,
+ PostProcessInitRoutine: PVOID,
+ TlsExpansionBitmap: PVOID,
+ TlsExpansionBitmapBits: [ULONG; 32],
+ SessionId: ULONG,
+ AppCompatFlags: ULARGE_INTEGER,
+ AppCompatFlagsUser: ULARGE_INTEGER,
+ pShimData: PVOID,
+ AppCompatInfo: PVOID,
+ CSDVersion: UNICODE_STRING,
+ ActivationContextData: PVOID,
+ ProcessAssemblyStorageMap: PVOID,
+ SystemDefaultActivationContextData: PVOID,
+ SystemAssemblyStorageMap: PVOID,
+ MinimumStackCommit: SIZE_T,
+ FlsCallback: *mut PVOID,
+ FlsListHead: LIST_ENTRY,
+ FlsBitmap: PVOID,
+ FlsBitmapBits: [ULONG; FLS_MAXIMUM_AVAILABLE as usize / (size_of::<ULONG>() * 8)],
+ FlsHighIndex: ULONG,
+ WerRegistrationData: PVOID,
+ WerShipAssertPtr: PVOID,
+ pUnused: PVOID,
+ pImageHeaderHash: PVOID,
+ TracingFlags: ULONG,
+ CsrServerReadOnlySharedMemoryBase: ULONGLONG,
+ TppWorkerpListLock: PRTL_CRITICAL_SECTION,
+ TppWorkerpList: LIST_ENTRY,
+ WaitOnAddressHashTable: [PVOID; 128],
+ TelemetryCoverageHeader: PVOID,
+ CloudFileFlags: ULONG,
+ CloudFileDiagFlags: ULONG,
+ PlaceholderCompatibilityMode: CHAR,
+ PlaceholderCompatibilityModeReserved: [CHAR; 7],
+ LeapSecondData: *mut LEAP_SECOND_DATA,
+ LeapSecondFlags: ULONG,
+ NtGlobalFlag2: ULONG,
+}}
+BITFIELD!{PEB BitField: BOOLEAN [
+ ImageUsesLargePages set_ImageUsesLargePages[0..1],
+ IsProtectedProcess set_IsProtectedProcess[1..2],
+ IsImageDynamicallyRelocated set_IsImageDynamicallyRelocated[2..3],
+ SkipPatchingUser32Forwarders set_SkipPatchingUser32Forwarders[3..4],
+ IsPackagedProcess set_IsPackagedProcess[4..5],
+ IsAppContainer set_IsAppContainer[5..6],
+ IsProtectedProcessLight set_IsProtectedProcessLight[6..7],
+ IsLongPathAwareProcess set_IsLongPathAwareProcess[7..8],
+]}
+BITFIELD!{PEB CrossProcessFlags: ULONG [
+ ProcessInJob set_ProcessInJob[0..1],
+ ProcessInitializing set_ProcessInitializing[1..2],
+ ProcessUsingVEH set_ProcessUsingVEH[2..3],
+ ProcessUsingVCH set_ProcessUsingVCH[3..4],
+ ProcessUsingFTH set_ProcessUsingFTH[4..5],
+ ProcessPreviouslyThrottled set_ProcessPreviouslyThrottled[5..6],
+ ProcessCurrentlyThrottled set_ProcessCurrentlyThrottled[6..7],
+ ProcessImagesHotPatched set_ProcessImagesHotPatched[7..8],
+ ReservedBits0 set_ReservedBits0[8..32],
+]}
+BITFIELD!{PEB TracingFlags: ULONG [
+ HeapTracingEnabled set_HeapTracingEnabled[0..1],
+ CritSecTracingEnabled set_CritSecTracingEnabled[1..2],
+ LibLoaderTracingEnabled set_LibLoaderTracingEnabled[2..3],
+ SpareTracingBits set_SpareTracingBits[3..32],
+]}
+BITFIELD!{PEB LeapSecondFlags: ULONG [
+ SixtySecondEnabled set_SixtySecondEnabled[0..1],
+ Reserved set_Reserved[1..32],
+]}
+pub type PPEB = *mut PEB;
+pub const GDI_BATCH_BUFFER_SIZE: usize = 310;
+STRUCT!{struct GDI_TEB_BATCH {
+ Offset: ULONG,
+ HDC: ULONG_PTR,
+ Buffer: [ULONG; GDI_BATCH_BUFFER_SIZE],
+}}
+pub type PGDI_TEB_BATCH = *mut GDI_TEB_BATCH;
+STRUCT!{struct TEB_ACTIVE_FRAME_CONTEXT {
+ Flags: ULONG,
+ FrameName: PSTR,
+}}
+pub type PTEB_ACTIVE_FRAME_CONTEXT = *mut TEB_ACTIVE_FRAME_CONTEXT;
+STRUCT!{struct TEB_ACTIVE_FRAME {
+ Flags: ULONG,
+ Previous: *mut TEB_ACTIVE_FRAME,
+ Context: PTEB_ACTIVE_FRAME_CONTEXT,
+}}
+pub type PTEB_ACTIVE_FRAME = *mut TEB_ACTIVE_FRAME;
+STRUCT!{struct TEB_u_s {
+ ReservedPad0: UCHAR,
+ ReservedPad1: UCHAR,
+ ReservedPad2: UCHAR,
+ IdealProcessor: UCHAR,
+}}
+UNION!{union TEB_u {
+ CurrentIdealProcessor: PROCESSOR_NUMBER,
+ IdealProcessorValue: ULONG,
+ s: TEB_u_s,
+}}
+#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
+STRUCT!{struct TEB {
+ NtTib: NT_TIB,
+ EnvironmentPointer: PVOID,
+ ClientId: CLIENT_ID,
+ ActiveRpcHandle: PVOID,
+ ThreadLocalStoragePointer: PVOID,
+ ProcessEnvironmentBlock: PPEB,
+ LastErrorValue: ULONG,
+ CountOfOwnedCriticalSections: ULONG,
+ CsrClientThread: PVOID,
+ Win32ThreadInfo: PVOID,
+ User32Reserved: [ULONG; 26],
+ UserReserved: [ULONG; 5],
+ WOW32Reserved: PVOID,
+ CurrentLocale: LCID,
+ FpSoftwareStatusRegister: ULONG,
+ ReservedForDebuggerInstrumentation: [PVOID; 16],
+ SystemReserved1: [PVOID; 30],
+ PlaceholderCompatibilityMode: CHAR,
+ PlaceholderReserved: [CHAR; 11],
+ ProxiedProcessId: ULONG,
+ ActivationStack: ACTIVATION_CONTEXT_STACK,
+ WorkingOnBehalfTicket: [UCHAR; 8],
+ ExceptionCode: NTSTATUS,
+ ActivationContextStackPointer: PACTIVATION_CONTEXT_STACK,
+ InstrumentationCallbackSp: ULONG_PTR,
+ InstrumentationCallbackPreviousPc: ULONG_PTR,
+ InstrumentationCallbackPreviousSp: ULONG_PTR,
+ TxFsContext: ULONG,
+ InstrumentationCallbackDisabled: BOOLEAN,
+ GdiTebBatch: GDI_TEB_BATCH,
+ RealClientId: CLIENT_ID,
+ GdiCachedProcessHandle: HANDLE,
+ GdiClientPID: ULONG,
+ GdiClientTID: ULONG,
+ GdiThreadLocalInfo: PVOID,
+ Win32ClientInfo: [ULONG_PTR; 62],
+ glDispatchTable: [PVOID; 233],
+ glReserved1: [ULONG_PTR; 29],
+ glReserved2: PVOID,
+ glSectionInfo: PVOID,
+ glSection: PVOID,
+ glTable: PVOID,
+ glCurrentRC: PVOID,
+ glContext: PVOID,
+ LastStatusValue: NTSTATUS,
+ StaticUnicodeString: UNICODE_STRING,
+ StaticUnicodeBuffer: [WCHAR; 261],
+ DeallocationStack: PVOID,
+ TlsSlots: [PVOID; 64],
+ TlsLinks: LIST_ENTRY,
+ Vdm: PVOID,
+ ReservedForNtRpc: PVOID,
+ DbgSsReserved: [PVOID; 2],
+ HardErrorMode: ULONG,
+ Instrumentation: [PVOID; 11],
+ ActivityId: GUID,
+ SubProcessTag: PVOID,
+ PerflibData: PVOID,
+ EtwTraceData: PVOID,
+ WinSockData: PVOID,
+ GdiBatchCount: ULONG,
+ u: TEB_u,
+ GuaranteedStackBytes: ULONG,
+ ReservedForPerf: PVOID,
+ ReservedForOle: PVOID,
+ WaitingOnLoaderLock: ULONG,
+ SavedPriorityState: PVOID,
+ ReservedForCodeCoverage: ULONG_PTR,
+ ThreadPoolData: PVOID,
+ TlsExpansionSlots: *mut PVOID,
+ DeallocationBStore: PVOID,
+ BStoreLimit: PVOID,
+ MuiGeneration: ULONG,
+ IsImpersonating: ULONG,
+ NlsCache: PVOID,
+ pShimData: PVOID,
+ HeapVirtualAffinity: USHORT,
+ LowFragHeapDataSlot: USHORT,
+ CurrentTransactionHandle: HANDLE,
+ ActiveFrame: PTEB_ACTIVE_FRAME,
+ FlsData: PVOID,
+ PreferredLanguages: PVOID,
+ UserPrefLanguages: PVOID,
+ MergedPrefLanguages: PVOID,
+ MuiImpersonation: ULONG,
+ CrossTebFlags: USHORT,
+ SameTebFlags: USHORT,
+ TxnScopeEnterCallback: PVOID,
+ TxnScopeExitCallback: PVOID,
+ TxnScopeContext: PVOID,
+ LockCount: ULONG,
+ WowTebOffset: LONG,
+ ResourceRetValue: PVOID,
+ ReservedForWdf: PVOID,
+ ReservedForCrt: ULONGLONG,
+ EffectiveContainerId: GUID,
+}}
+#[cfg(target_arch = "x86")]
+STRUCT!{struct TEB {
+ NtTib: NT_TIB,
+ EnvironmentPointer: PVOID,
+ ClientId: CLIENT_ID,
+ ActiveRpcHandle: PVOID,
+ ThreadLocalStoragePointer: PVOID,
+ ProcessEnvironmentBlock: PPEB,
+ LastErrorValue: ULONG,
+ CountOfOwnedCriticalSections: ULONG,
+ CsrClientThread: PVOID,
+ Win32ThreadInfo: PVOID,
+ User32Reserved: [ULONG; 26],
+ UserReserved: [ULONG; 5],
+ WOW32Reserved: PVOID,
+ CurrentLocale: LCID,
+ FpSoftwareStatusRegister: ULONG,
+ ReservedForDebuggerInstrumentation: [PVOID; 16],
+ SystemReserved1: [PVOID; 26],
+ PlaceholderCompatibilityMode: CHAR,
+ PlaceholderReserved: [CHAR; 11],
+ ProxiedProcessId: ULONG,
+ ActivationStack: ACTIVATION_CONTEXT_STACK,
+ WorkingOnBehalfTicket: [UCHAR; 8],
+ ExceptionCode: NTSTATUS,
+ ActivationContextStackPointer: PACTIVATION_CONTEXT_STACK,
+ InstrumentationCallbackSp: ULONG_PTR,
+ InstrumentationCallbackPreviousPc: ULONG_PTR,
+ InstrumentationCallbackPreviousSp: ULONG_PTR,
+ InstrumentationCallbackDisabled: BOOLEAN,
+ SpareBytes: [UCHAR; 23],
+ TxFsContext: ULONG,
+ GdiTebBatch: GDI_TEB_BATCH,
+ RealClientId: CLIENT_ID,
+ GdiCachedProcessHandle: HANDLE,
+ GdiClientPID: ULONG,
+ GdiClientTID: ULONG,
+ GdiThreadLocalInfo: PVOID,
+ Win32ClientInfo: [ULONG_PTR; 62],
+ glDispatchTable: [PVOID; 233],
+ glReserved1: [ULONG_PTR; 29],
+ glReserved2: PVOID,
+ glSectionInfo: PVOID,
+ glSection: PVOID,
+ glTable: PVOID,
+ glCurrentRC: PVOID,
+ glContext: PVOID,
+ LastStatusValue: NTSTATUS,
+ StaticUnicodeString: UNICODE_STRING,
+ StaticUnicodeBuffer: [WCHAR; 261],
+ DeallocationStack: PVOID,
+ TlsSlots: [PVOID; 64],
+ TlsLinks: LIST_ENTRY,
+ Vdm: PVOID,
+ ReservedForNtRpc: PVOID,
+ DbgSsReserved: [PVOID; 2],
+ HardErrorMode: ULONG,
+ Instrumentation: [PVOID; 9],
+ ActivityId: GUID,
+ SubProcessTag: PVOID,
+ PerflibData: PVOID,
+ EtwTraceData: PVOID,
+ WinSockData: PVOID,
+ GdiBatchCount: ULONG,
+ u: TEB_u,
+ GuaranteedStackBytes: ULONG,
+ ReservedForPerf: PVOID,
+ ReservedForOle: PVOID,
+ WaitingOnLoaderLock: ULONG,
+ SavedPriorityState: PVOID,
+ ReservedForCodeCoverage: ULONG_PTR,
+ ThreadPoolData: PVOID,
+ TlsExpansionSlots: *mut PVOID,
+ MuiGeneration: ULONG,
+ IsImpersonating: ULONG,
+ NlsCache: PVOID,
+ pShimData: PVOID,
+ HeapVirtualAffinity: USHORT,
+ LowFragHeapDataSlot: USHORT,
+ CurrentTransactionHandle: HANDLE,
+ ActiveFrame: PTEB_ACTIVE_FRAME,
+ FlsData: PVOID,
+ PreferredLanguages: PVOID,
+ UserPrefLanguages: PVOID,
+ MergedPrefLanguages: PVOID,
+ MuiImpersonation: ULONG,
+ CrossTebFlags: USHORT,
+ SameTebFlags: USHORT,
+ TxnScopeEnterCallback: PVOID,
+ TxnScopeExitCallback: PVOID,
+ TxnScopeContext: PVOID,
+ LockCount: ULONG,
+ WowTebOffset: LONG,
+ ResourceRetValue: PVOID,
+ ReservedForWdf: PVOID,
+ ReservedForCrt: ULONGLONG,
+ EffectiveContainerId: GUID,
+}}
+BITFIELD!{TEB SameTebFlags: USHORT [
+ SafeThunkCall set_SafeThunkCall[0..1],
+ InDebugPrint set_InDebugPrint[1..2],
+ HasFiberData set_HasFiberData[2..3],
+ SkipThreadAttach set_SkipThreadAttach[3..4],
+ WerInShipAssertCode set_WerInShipAssertCode[4..5],
+ RanProcessInit set_RanProcessInit[5..6],
+ ClonedThread set_ClonedThread[6..7],
+ SuppressDebugMsg set_SuppressDebugMsg[7..8],
+ DisableUserStackWalk set_DisableUserStackWalk[8..9],
+ RtlExceptionAttached set_RtlExceptionAttached[9..10],
+ InitialThread set_InitialThread[10..11],
+ SessionAware set_SessionAware[11..12],
+ LoadOwner set_LoadOwner[12..13],
+ LoaderWorker set_LoaderWorker[13..14],
+ SkipLoaderInit set_SkipLoaderInit[14..15],
+ SpareSameTebBits set_SpareSameTebBits[15..16],
+]}
+pub type PTEB = *mut TEB;