typedef struct _HEAP_ENTRY                                                      // 22 / 26 elements; 0x0008 / 0x0010 Bytes
{
    union                                                                       // 8 / 5 elements; 0x0008 / 0x0010 Bytes
    {
        HEAP_UNPACKED_ENTRY     UnpackedEntry;                                  // 0x0000 / 0x0000; 0x0008 / 0x0010 Bytes
        struct                                                                  // 3 / 2 elements; 0x0004 / 0x0010 Bytes
        {
#if defined(_M_X64)
            PVOID               PreviousBlockPrivateData;                       // ------ / 0x0000; ------ / 0x0008 Bytes
            union                                                               // ------ / 0x0008; - / 3 elements; ------ / 0x0008 Bytes
            {
                struct                                                          // ------ / 0x0008; - / 3 elements; ------ / 0x0004 Bytes
                {
                    UINT16      Size;                                           // ------ / 0x0008; ------ / 0x0002 Bytes
                    UINT8       Flags;                                          // ------ / 0x000A; ------ / 0x0001 Bytes
                    UINT8       SmallTagIndex;                                  // ------ / 0x000B; ------ / 0x0001 Bytes
                };
                struct                                                          // ------ / 0x0008; - / 4 elements; ------ / 0x0008 Bytes
                {
                    ULONG32     SubSegmentCode;                                 // ------ / 0x0008; ------ / 0x0004 Bytes
                    UINT16      PreviousSize;                                   // ------ / 0x000C; ------ / 0x0002 Bytes
                    union                                                       // ------ / 0x000E; - / 2 elements; ------ / 0x0001 Bytes
                    {
                        UINT8   SegmentOffset;                                  // ------ / 0x000E; ------ / 0x0001 Bytes
                        UINT8   LFHFlags;                                       // ------ / 0x000E; ------ / 0x0001 Bytes
                    };
                    UINT8       UnusedBytes;                                    // ------ / 0x000F; ------ / 0x0001 Bytes
                };
                UINT64          CompactHeader;                                  // ------ / 0x0008; ------ / 0x0008 Bytes
            };
#else                                                                           // #if defined(_M_X64)
            UINT16              Size;                                           // 0x0000 / ------; 0x0002 / ------ Bytes
            UINT8               Flags;                                          // 0x0002 / ------; 0x0001 / ------ Bytes
            UINT8               SmallTagIndex;                                  // 0x0003 / ------; 0x0001 / ------ Bytes
#endif                                                                          // #if defined(_M_X64)
        };
#if !defined(_M_X64)
        struct                                                                  // 4 / - elements; 0x0008 / ------ Bytes
        {
            ULONG32             SubSegmentCode;                                 // 0x0000 / ------; 0x0004 / ------ Bytes
            UINT16              PreviousSize;                                   // 0x0004 / ------; 0x0002 / ------ Bytes
            union                                                               // 0x0006 / ------; 2 / - elements; 0x0001 / ------ Bytes
            {
                UINT8           SegmentOffset;                                  // 0x0006 / ------; 0x0001 / ------ Bytes
                UINT8           LFHFlags;                                       // 0x0006 / ------; 0x0001 / ------ Bytes
            };
            UINT8               UnusedBytes;                                    // 0x0007 / ------; 0x0001 / ------ Bytes
        };
#endif                                                                          // #if !defined(_M_X64)
        HEAP_EXTENDED_ENTRY     ExtendedEntry;                                  // 0x0000 / 0x0000; 0x0008 / 0x0010 Bytes
        struct                                                                  // 2 / 5 elements; 0x0004 / 0x0010 Bytes
        {
#if defined(_M_X64)
            PVOID               Reserved;                                       // ------ / 0x0000; ------ / 0x0008 Bytes
            union                                                               // ------ / 0x0008; - / 2 elements; ------ / 0x0004 Bytes
            {
                struct                                                          // ------ / 0x0008; - / 2 elements; ------ / 0x0004 Bytes
                {
                    UINT16      FunctionIndex;                                  // ------ / 0x0008; ------ / 0x0002 Bytes
                    UINT16      ContextValue;                                   // ------ / 0x000A; ------ / 0x0002 Bytes
                };
                ULONG32         InterceptorValue;                               // ------ / 0x0008; ------ / 0x0004 Bytes
            };
            UINT16              UnusedBytesLength;                              // ------ / 0x000C; ------ / 0x0002 Bytes
            UINT8               EntryOffset;                                    // ------ / 0x000E; ------ / 0x0001 Bytes
            UINT8               ExtendedBlockSignature;                         // ------ / 0x000F; ------ / 0x0001 Bytes
#else                                                                           // #if defined(_M_X64)
            UINT16              FunctionIndex;                                  // 0x0000 / ------; 0x0002 / ------ Bytes
            UINT16              ContextValue;                                   // 0x0002 / ------; 0x0002 / ------ Bytes
#endif                                                                          // #if defined(_M_X64)
        };
        struct                                                                  // 4 / 2 elements; 0x0008 / 0x0010 Bytes
        {
#if defined(_M_X64)
            PVOID               ReservedForAlignment;                           // ------ / 0x0000; ------ / 0x0008 Bytes
            union                                                               // ------ / 0x0008; - / 2 elements; ------ / 0x0008 Bytes
            {
                struct                                                          // ------ / 0x0008; - / 2 elements; ------ / 0x0008 Bytes
                {
                    ULONG32     Code1;                                          // ------ / 0x0008; ------ / 0x0004 Bytes
                    union                                                       // ------ / 0x000C; - / 2 elements; ------ / 0x0004 Bytes
                    {
                        struct                                                  // ------ / 0x000C; - / 3 elements; ------ / 0x0004 Bytes
                        {
                            UINT16 
                                Code2;                                          // ------ / 0x000C; ------ / 0x0002 Bytes
                            UINT8 
                                Code3;                                          // ------ / 0x000E; ------ / 0x0001 Bytes
                            UINT8 
                                Code4;                                          // ------ / 0x000F; ------ / 0x0001 Bytes
                        };
                        ULONG32 
                                Code234;                                        // ------ / 0x000C; ------ / 0x0004 Bytes
                    };
                };
                UINT64          AgregateCode;                                   // ------ / 0x0008; ------ / 0x0008 Bytes
            };
#else                                                                           // #if defined(_M_X64)
            ULONG32             InterceptorValue;                               // 0x0000 / ------; 0x0004 / ------ Bytes
            UINT16              UnusedBytesLength;                              // 0x0004 / ------; 0x0002 / ------ Bytes
            UINT8               EntryOffset;                                    // 0x0006 / ------; 0x0001 / ------ Bytes
            UINT8               ExtendedBlockSignature;                         // 0x0007 / ------; 0x0001 / ------ Bytes
#endif                                                                          // #if defined(_M_X64)
        };
#if !defined(_M_X64)
        struct                                                                  // 2 / - elements; 0x0008 / ------ Bytes
        {
            ULONG32             Code1;                                          // 0x0000 / ------; 0x0004 / ------ Bytes
            union                                                               // 0x0004 / ------; 2 / - elements; 0x0004 / ------ Bytes
            {
                struct                                                          // 0x0004 / ------; 3 / - elements; 0x0004 / ------ Bytes
                {
                    UINT16      Code2;                                          // 0x0004 / ------; 0x0002 / ------ Bytes
                    UINT8       Code3;                                          // 0x0006 / ------; 0x0001 / ------ Bytes
                    UINT8       Code4;                                          // 0x0007 / ------; 0x0001 / ------ Bytes
                };
                ULONG32         Code234;                                        // 0x0004 / ------; 0x0004 / ------ Bytes
            };
        };
        UINT64                  AgregateCode;                                   // 0x0000 / ------; 0x0008 / ------ Bytes
#endif                                                                          // #if !defined(_M_X64)
    };
} HEAP_ENTRY, * PHEAP_ENTRY;

Return to OS-specific structures/unions/enums list.
Return to OS version list.