Zig 0.17.0-dev (Split by item)

Shortcut keys
?
Show these tips
S
Focus search field
Esc
Clear focus & close tips
U
Jump to source code
↑
Move up in search results
↓
Move down in search results
↵
Go to active search result
This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig standard library. Public Struct

PEB

Public Struct
std.os.windows.PEB
pub const PEB = extern struct

Process Environment Block Microsoft documentation of this is incomplete, the fields here are taken from various resources including:

Fields

InheritedAddressSpace: BOOLEAN

Versions: All

ReadImageFileExecOptions: BOOLEAN

Versions: 3.51+

BeingDebugged: BOOLEAN
BitField: UCHAR

Versions: 5.2+ (previously was padding)

Mutant: HANDLE

Versions: all

ImageBaseAddress: HMODULE
Ldr: *PEB_LDR_DATA
ProcessParameters: *RTL_USER_PROCESS_PARAMETERS
SubSystemData: PVOID
ProcessHeap: ?*HEAP
FastPebLock: *RTL_CRITICAL_SECTION

Versions: 5.1+

AtlThunkSListPtr: PVOID

Versions: 5.2+

IFEOKey: PVOID
CrossProcessFlags: ULONG

https://www.geoffchappell.com/studies/windows/win32/ntdll/structs/peb/crossprocessflags.htm

union1: extern union { KernelCallbackTable: PVOID, UserSharedInfoPtr: PVOID, }

Versions: 6.0+

SystemReserved: ULONG

Versions: 5.1+

AtlThunkSListPtr32: ULONG

Versions: 5.1, (not 5.2, not 6.0), 6.1+

ApiSetMap: PVOID

Versions: 6.1+

TlsExpansionCounter: ULONG

Versions: all

TlsBitmap: *RTL_BITMAP

note: there is padding here on 64 bit

TlsBitmapBits: [2]ULONG
ReadOnlySharedMemoryBase: PVOID

Our base address of the memory region shared with the CSR server.

SharedData: PVOID

Versions: 1703+

ReadOnlyStaticServerData: *UnknownStaticServerDataIndirection

Versions: all

AnsiCodePageData: PVOID
OemCodePageData: PVOID
UnicodeCaseTableData: PVOID
NumberOfProcessors: ULONG

Versions: 3.51+

NtGlobalFlag: ULONG
CriticalSectionTimeout: LARGE_INTEGER

Versions: all

HeapSegmentReserve: ULONG_PTR

Fields appended in 3.51:

HeapSegmentCommit: ULONG_PTR
HeapDeCommitTotalFreeThreshold: ULONG_PTR
HeapDeCommitFreeBlockThreshold: ULONG_PTR
NumberOfHeaps: ULONG
MaximumNumberOfHeaps: ULONG
ProcessHeaps: *PVOID
GdiSharedHandleTable: PVOID

Fields appended in 4.0:

ProcessStarterHelper: PVOID
GdiDCAttributeList: ULONG
LoaderLock: *RTL_CRITICAL_SECTION

note: there is padding here on 64 bit

OSMajorVersion: ULONG
OSMinorVersion: ULONG
OSBuildNumber: USHORT
OSCSDVersion: USHORT
OSPlatformId: ULONG
ImageSubSystem: ULONG
ImageSubSystemMajorVersion: ULONG
ImageSubSystemMinorVersion: ULONG
ActiveProcessAffinityMask: KAFFINITY

note: there is padding here on 64 bit

GdiHandleBuffer: [ switch (@sizeOf(usize)) { 4 => 0x22, 8 => 0x3C, else => unreachable, } ]ULONG
PostProcessInitRoutine: PVOID

Fields appended in 5.0 (Windows 2000):

TlsExpansionBitmap: *RTL_BITMAP
TlsExpansionBitmapBits: [32]ULONG
SessionId: ULONG
AppCompatFlags: ULARGE_INTEGER

note: there is padding here on 64 bit Versions: 5.1+

AppCompatFlagsUser: ULARGE_INTEGER
ShimData: PVOID
AppCompatInfo: PVOID

Versions: 5.0+

CSDVersion: UNICODE_STRING
ActivationContextData: *const ACTIVATION_CONTEXT_DATA

Fields appended in 5.1 (Windows XP):

ProcessAssemblyStorageMap: *ASSEMBLY_STORAGE_MAP
SystemDefaultActivationData: *const ACTIVATION_CONTEXT_DATA
SystemAssemblyStorageMap: *ASSEMBLY_STORAGE_MAP
MinimumStackCommit: ULONG_PTR
FlsCallback: *FLS_CALLBACK_INFO

Fields appended in 5.2 (Windows Server 2003):

FlsListHead: LIST_ENTRY
FlsBitmap: *RTL_BITMAP
FlsBitmapBits: [4]ULONG
FlsHighIndex: ULONG
WerRegistrationData: PVOID

Fields appended in 6.0 (Windows Vista):

WerShipAssertPtr: PVOID
pUnused: PVOID

Fields appended in 6.1 (Windows 7):

pImageHeaderHash: PVOID
TracingFlags: ULONG

TODO: https://www.geoffchappell.com/studies/windows/win32/ntdll/structs/peb/tracingflags.htm

CsrServerReadOnlySharedMemoryBase: ULONGLONG

Base address in the CSRSS address space of the memory region shared with the CSR server.

TppWorkerpListLock: ULONG

Fields appended in 1511:

TppWorkerpList: LIST_ENTRY
WaitOnAddressHashTable: [0x80]PVOID
TelemetryCoverageHeader: PVOID

Fields appended in 1709:

CloudFileFlags: ULONG

Structs

File

os/windows.zig:5053
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
pub const PEB = extern struct {
    // Versions: All
    InheritedAddressSpace: BOOLEAN,

    // Versions: 3.51+
    ReadImageFileExecOptions: BOOLEAN,
    BeingDebugged: BOOLEAN,

    // Versions: 5.2+ (previously was padding)
    BitField: UCHAR,

    // Versions: all
    Mutant: HANDLE,
    ImageBaseAddress: HMODULE,
    Ldr: *PEB_LDR_DATA,
    ProcessParameters: *RTL_USER_PROCESS_PARAMETERS,
    SubSystemData: PVOID,
    ProcessHeap: ?*HEAP,

    // Versions: 5.1+
    FastPebLock: *RTL_CRITICAL_SECTION,

    // Versions: 5.2+
    AtlThunkSListPtr: PVOID,
    IFEOKey: PVOID,

    // Versions: 6.0+

    /// https://www.geoffchappell.com/studies/windows/win32/ntdll/structs/peb/crossprocessflags.htm
    CrossProcessFlags: ULONG,

    // Versions: 6.0+
    union1: extern union {
        KernelCallbackTable: PVOID,
        UserSharedInfoPtr: PVOID,
    },

    // Versions: 5.1+
    SystemReserved: ULONG,

    // Versions: 5.1, (not 5.2, not 6.0), 6.1+
    AtlThunkSListPtr32: ULONG,

    // Versions: 6.1+
    ApiSetMap: PVOID,

    // Versions: all
    TlsExpansionCounter: ULONG,
    // note: there is padding here on 64 bit
    TlsBitmap: *RTL_BITMAP,
    TlsBitmapBits: [2]ULONG,
    /// Our base address of the memory region shared with the CSR server.
    ReadOnlySharedMemoryBase: PVOID,

    // Versions: 1703+
    SharedData: PVOID,

    // Versions: all
    ReadOnlyStaticServerData: *UnknownStaticServerDataIndirection,
    AnsiCodePageData: PVOID,
    OemCodePageData: PVOID,
    UnicodeCaseTableData: PVOID,

    // Versions: 3.51+
    NumberOfProcessors: ULONG,
    NtGlobalFlag: ULONG,

    // Versions: all
    CriticalSectionTimeout: LARGE_INTEGER,

    // End of Original PEB size

    // Fields appended in 3.51:
    HeapSegmentReserve: ULONG_PTR,
    HeapSegmentCommit: ULONG_PTR,
    HeapDeCommitTotalFreeThreshold: ULONG_PTR,
    HeapDeCommitFreeBlockThreshold: ULONG_PTR,
    NumberOfHeaps: ULONG,
    MaximumNumberOfHeaps: ULONG,
    ProcessHeaps: *PVOID,

    // Fields appended in 4.0:
    GdiSharedHandleTable: PVOID,
    ProcessStarterHelper: PVOID,
    GdiDCAttributeList: ULONG,
    // note: there is padding here on 64 bit
    LoaderLock: *RTL_CRITICAL_SECTION,
    OSMajorVersion: ULONG,
    OSMinorVersion: ULONG,
    OSBuildNumber: USHORT,
    OSCSDVersion: USHORT,
    OSPlatformId: ULONG,
    ImageSubSystem: ULONG,
    ImageSubSystemMajorVersion: ULONG,
    ImageSubSystemMinorVersion: ULONG,
    // note: there is padding here on 64 bit
    ActiveProcessAffinityMask: KAFFINITY,
    GdiHandleBuffer: [
        switch (@sizeOf(usize)) {
            4 => 0x22,
            8 => 0x3C,
            else => unreachable,
        }
    ]ULONG,

    // Fields appended in 5.0 (Windows 2000):
    PostProcessInitRoutine: PVOID,
    TlsExpansionBitmap: *RTL_BITMAP,
    TlsExpansionBitmapBits: [32]ULONG,
    SessionId: ULONG,
    // note: there is padding here on 64 bit
    // Versions: 5.1+
    AppCompatFlags: ULARGE_INTEGER,
    AppCompatFlagsUser: ULARGE_INTEGER,
    ShimData: PVOID,
    // Versions: 5.0+
    AppCompatInfo: PVOID,
    CSDVersion: UNICODE_STRING,

    // Fields appended in 5.1 (Windows XP):
    ActivationContextData: *const ACTIVATION_CONTEXT_DATA,
    ProcessAssemblyStorageMap: *ASSEMBLY_STORAGE_MAP,
    SystemDefaultActivationData: *const ACTIVATION_CONTEXT_DATA,
    SystemAssemblyStorageMap: *ASSEMBLY_STORAGE_MAP,
    MinimumStackCommit: ULONG_PTR,

    // Fields appended in 5.2 (Windows Server 2003):
    FlsCallback: *FLS_CALLBACK_INFO,
    FlsListHead: LIST_ENTRY,
    FlsBitmap: *RTL_BITMAP,
    FlsBitmapBits: [4]ULONG,
    FlsHighIndex: ULONG,

    // Fields appended in 6.0 (Windows Vista):
    WerRegistrationData: PVOID,
    WerShipAssertPtr: PVOID,

    // Fields appended in 6.1 (Windows 7):
    pUnused: PVOID, // previously pContextData
    pImageHeaderHash: PVOID,

    /// TODO: https://www.geoffchappell.com/studies/windows/win32/ntdll/structs/peb/tracingflags.htm
    TracingFlags: ULONG,

    // Fields appended in 6.2 (Windows 8):
    /// Base address in the CSRSS address space of the memory region shared with the CSR server.
    CsrServerReadOnlySharedMemoryBase: ULONGLONG,

    // Fields appended in 1511:
    TppWorkerpListLock: ULONG,
    TppWorkerpList: LIST_ENTRY,
    WaitOnAddressHashTable: [0x80]PVOID,

    // Fields appended in 1709:
    TelemetryCoverageHeader: PVOID,
    CloudFileFlags: ULONG,

    /// Details of this structure are unknown, but the existence of the field at offset 8 is known
    /// from experimentation and from reverse-engineering kernelbase.dll.
    const UnknownStaticServerDataIndirection = extern struct {
        unknown: u64,
        /// In the CSRSS address space.
        base_static_server_data_addr: u64,
    };
}