typedef struct _PEB32
{
    unsigned char InheritedAddressSpace;
    unsigned char ReadImageFileExecOptions;
    unsigned char BeingDebugged;
    union
    {
        unsigned char BitField;
        struct
        {
            unsigned char ImageUsesLargePages : 1;
            unsigned char IsProtectedProcess : 1;
            unsigned char IsLegacyProcess : 1;
            unsigned char IsImageDynamicallyRelocated : 1;
            unsigned char SkipPatchingUser32Forwarders : 1;
            unsigned char SpareBits : 3;
        };
    };
    unsigned long Mutant;
    unsigned long ImageBaseAddress;
    unsigned long Ldr;
    unsigned long ProcessParameters;
    unsigned long SubSystemData;
    unsigned long ProcessHeap;
    unsigned long FastPebLock;
    unsigned long AtlThunkSListPtr;
    unsigned long IFEOKey;
    union
    {
        unsigned long CrossProcessFlags;
        struct
        {
            unsigned long ProcessInJob : 1;
            unsigned long ProcessInitializing : 1;
            unsigned long ProcessUsingVEH : 1;
            unsigned long ProcessUsingVCH : 1;
            unsigned long ProcessUsingFTH : 1;
            unsigned long ReservedBits0 : 27;
        };
    };
    union
    {
        unsigned long KernelCallbackTable;
        unsigned long UserSharedInfoPtr;
    };
    unsigned long SystemReserved[1];
    unsigned long AtlThunkSListPtr32;
    unsigned long ApiSetMap;
    unsigned long TlsExpansionCounter;
    unsigned long TlsBitmap;
    unsigned long TlsBitmapBits[2];
    unsigned long ReadOnlySharedMemoryBase;
    unsigned long HotpatchInformation;
    unsigned long ReadOnlyStaticServerData;
    unsigned long AnsiCodePageData;
    unsigned long OemCodePageData;
    unsigned long UnicodeCaseTableData;
    unsigned long NumberOfProcessors;
    unsigned long NtGlobalFlag;
    LARGE_INTEGER CriticalSectionTimeout;
    unsigned long HeapSegmentReserve;
    unsigned long HeapSegmentCommit;
    unsigned long HeapDeCommitTotalFreeThreshold;
    unsigned long HeapDeCommitFreeBlockThreshold;
    unsigned long NumberOfHeaps;
    unsigned long MaximumNumberOfHeaps;
    unsigned long ProcessHeaps;
    unsigned long GdiSharedHandleTable;
    unsigned long ProcessStarterHelper;
    unsigned long GdiDCAttributeList;
    unsigned long LoaderLock;
    unsigned long OSMajorVersion;
    unsigned long OSMinorVersion;
    unsigned short OSBuildNumber;
    unsigned short OSCSDVersion;
    unsigned long OSPlatformId;
    unsigned long ImageSubsystem;
    unsigned long ImageSubsystemMajorVersion;
    unsigned long ImageSubsystemMinorVersion;
    unsigned long ActiveProcessAffinityMask;
    unsigned long GdiHandleBuffer[34];
    unsigned long PostProcessInitRoutine;
    unsigned long TlsExpansionBitmap;
    unsigned long TlsExpansionBitmapBits[32];
    unsigned long SessionId;
    ULARGE_INTEGER AppCompatFlags;
    ULARGE_INTEGER AppCompatFlagsUser;
    unsigned long pShimData;
    unsigned long AppCompatInfo;
    STRING32 CSDVersion;
    unsigned long ActivationContextData;
    unsigned long ProcessAssemblyStorageMap;
    unsigned long SystemDefaultActivationContextData;
    unsigned long SystemAssemblyStorageMap;
    unsigned long MinimumStackCommit;
    unsigned long FlsCallback;
    LIST_ENTRY32 FlsListHead;
    unsigned long FlsBitmap;
    unsigned long FlsBitmapBits[4];
    unsigned long FlsHighIndex;
    unsigned long WerRegistrationData;
    unsigned long WerShipAssertPtr;
    unsigned long pContextData;
    unsigned long pImageHeaderHash;
    union
    {
        unsigned long TracingFlags;
        struct
        {
            unsigned long HeapTracingEnabled : 1;
            unsigned long CritSecTracingEnabled : 1;
            unsigned long SpareTracingBits : 30;
        };
    };
} PEB32, *PPEB32;