typedef struct _SEGMENT
{
    CONTROL_AREA *ControlArea;
    unsigned long TotalNumberOfPtes;
    SEGMENT_FLAGS SegmentFlags;
    unsigned __int64 NumberOfCommittedPages;
    unsigned __int64 SizeOfSegment;
    union
    {
        MMEXTEND_INFO *ExtendInfo;
        void *BasedAddress;
    };
    EX_PUSH_LOCK SegmentLock;
    union
    {
        unsigned __int64 ImageCommitment;
        EPROCESS *CreatingProcess;
    } u1;
    union
    {
        MI_SECTION_IMAGE_INFORMATION *ImageInformation;
        void *FirstMappedVa;
    } u2;
    MMPTE *PrototypePte;
    MMPTE ThePtes[1];
} SEGMENT, *PSEGMENT;