typedef struct _MM_SESSION_SPACE
{
    volatile long ReferenceCount;
    union
    {
        unsigned long LongFlags;
        MM_SESSION_SPACE_FLAGS Flags;
    } u;
    unsigned long SessionId;
    volatile long ProcessReferenceToSession;
    LIST_ENTRY ProcessList;
    LARGE_INTEGER LastProcessSwappedOutTime;
    unsigned __int64 SessionPageDirectoryIndex;
    volatile unsigned __int64 NonPagablePages;
    volatile unsigned __int64 CommittedPages;
    void *PagedPoolStart;
    void *PagedPoolEnd;
    void *SessionObject;
    void *SessionObjectHandle;
    volatile long ResidentProcessCount;
    unsigned long SessionPoolAllocationFailures[4];
    LIST_ENTRY ImageList;
    unsigned long LocaleId;
    unsigned long AttachCount;
    KGATE AttachGate;
    LIST_ENTRY WsListEntry;
    GENERAL_LOOKASIDE Lookaside[21];
    MMSESSION Session;
    MM_PAGED_POOL_INFO PagedPoolInfo;
    MMSUPPORT Vm;
    MMWSLE *Wsle;
    void (*DriverUnload)(DRIVER_OBJECT *);
    POOL_DESCRIPTOR PagedPool;
    MMPTE PageDirectory;
    KGUARDED_MUTEX SessionVaLock;
    RTL_BITMAP DynamicVaBitMap;
    unsigned long DynamicVaHint;
    MI_SPECIAL_POOL SpecialPool;
    KGUARDED_MUTEX SessionPteLock;
    long PoolBigEntriesInUse;
    unsigned long PagedPoolPdeCount;
    unsigned long SpecialPoolPdeCount;
    unsigned long DynamicSessionPdeCount;
    MI_SYSTEM_PTE_TYPE SystemPteInfo;
    void *PoolTrackTableExpansion;
    unsigned __int64 PoolTrackTableExpansionSize;
    void *PoolTrackBigPages;
    unsigned __int64 PoolTrackBigPagesSize;
    IO_SESSION_STATE IoState;
    unsigned long IoStateSequence;
    KEVENT IoNotificationEvent;
    PS_CPU_QUOTA_BLOCK *CpuQuotaBlock;
} MM_SESSION_SPACE, *PMM_SESSION_SPACE;