typedef struct _MMVAD_LONG
{
    union
    {
        __int64 Balance : 2;
        MMVAD *Parent;
    } u1;
    MMVAD *LeftChild;
    MMVAD *RightChild;
    unsigned __int64 StartingVpn;
    unsigned __int64 EndingVpn;
    union
    {
        unsigned __int64 LongFlags;
        MMVAD_FLAGS VadFlags;
    } u;
    EX_PUSH_LOCK PushLock;
    union
    {
        unsigned __int64 LongFlags3;
        MMVAD_FLAGS3 VadFlags3;
    } u5;
    union
    {
        unsigned long LongFlags2;
        MMVAD_FLAGS2 VadFlags2;
    } u2;
    SUBSECTION *Subsection;
    MMPTE *FirstPrototypePte;
    MMPTE *LastContiguousPte;
    LIST_ENTRY ViewLinks;
    EPROCESS *VadsProcess;
    union
    {
        LIST_ENTRY List;
        MMADDRESS_LIST Secured;
    } u3;
    union
    {
        MMBANKED_SECTION *Banked;
        MMEXTEND_INFO *ExtendedInfo;
    } u4;
} MMVAD_LONG, *PMMVAD_LONG;