typedef struct _HEAP
{
    HEAP_ENTRY Entry;
    unsigned long SegmentSignature;
    unsigned long SegmentFlags;
    LIST_ENTRY SegmentListEntry;
    HEAP *Heap;
    void *BaseAddress;
    unsigned long NumberOfPages;
    HEAP_ENTRY *FirstEntry;
    HEAP_ENTRY *LastValidEntry;
    unsigned long NumberOfUnCommittedPages;
    unsigned long NumberOfUnCommittedRanges;
    unsigned short SegmentAllocatorBackTraceIndex;
    unsigned short Reserved;
    LIST_ENTRY UCRSegmentList;
    unsigned long Flags;
    unsigned long ForceFlags;
    unsigned long CompatibilityFlags;
    unsigned long EncodeFlagMask;
    HEAP_ENTRY Encoding;
    unsigned __int64 PointerKey;
    unsigned long Interceptor;
    unsigned long VirtualMemoryThreshold;
    unsigned long Signature;
    unsigned __int64 SegmentReserve;
    unsigned __int64 SegmentCommit;
    unsigned __int64 DeCommitFreeBlockThreshold;
    unsigned __int64 DeCommitTotalFreeThreshold;
    unsigned __int64 TotalFreeSize;
    unsigned __int64 MaximumAllocationSize;
    unsigned short ProcessHeapsListIndex;
    unsigned short HeaderValidateLength;
    void *HeaderValidateCopy;
    unsigned short NextAvailableTagIndex;
    unsigned short MaximumTagIndex;
    HEAP_TAG_ENTRY *TagEntries;
    LIST_ENTRY UCRList;
    unsigned __int64 AlignRound;
    unsigned __int64 AlignMask;
    LIST_ENTRY VirtualAllocdBlocks;
    LIST_ENTRY SegmentList;
    unsigned short AllocatorBackTraceIndex;
    unsigned long NonDedicatedListLength;
    void *BlocksIndex;
    void *UCRIndex;
    HEAP_PSEUDO_TAG_ENTRY *PseudoTagEntries;
    LIST_ENTRY FreeLists;
    HEAP_LOCK *LockVariable;
    long (*CommitRoutine)(void *, void **, unsigned __int64 *);
    void *FrontEndHeap;
    unsigned short FrontHeapLockCount;
    unsigned char FrontEndHeapType;
    HEAP_COUNTERS Counters;
    HEAP_TUNING_PARAMETERS TuningParameters;
} HEAP, *PHEAP;