typedef struct _MMPFN
{
    union
    {
        unsigned __int64 Flink;
        unsigned long WsIndex;
        KEVENT *Event;
        void *Next;
        void *VolatileNext;
        KTHREAD *KernelStackOwner;
        SINGLE_LIST_ENTRY NextStackPfn;
    } u1;
    union
    {
        unsigned __int64 Blink;
        MMPTE *ImageProtoPte;
        unsigned __int64 ShareCount;
    } u2;
    union
    {
        MMPTE *PteAddress;
        void *VolatilePteAddress;
        volatile long Lock;
        unsigned __int64 PteLong;
    };
    union
    {
        struct
        {
            unsigned short ReferenceCount;
            MMPFNENTRY e1;
        };
        struct
        {
            union
            {
                unsigned short ReferenceCount;
                volatile short VolatileReferenceCount;
            };
            unsigned short ShortFlags;
        } e2;
    } u3;
    unsigned short UsedPageTableEntries;
    unsigned char VaType;
    unsigned char ViewCount;
    union
    {
        MMPTE OriginalPte;
        volatile long AweReferenceCount;
    };
    union
    {
        struct
        {
            unsigned __int64 PteFrame : 52;
            unsigned __int64 Unused : 3;
            unsigned __int64 PfnImageVerified : 1;
            unsigned __int64 AweAllocation : 1;
            unsigned __int64 PrototypePte : 1;
            unsigned __int64 PageColor : 6;
        };
    } u4;
} MMPFN, *PMMPFN;