| Min version | XP SP2 | 2003/XP64 | 2003/XP64 SP1 | ||
|---|---|---|---|---|---|
| Max version | XP SP3 | 10 TH2 | |||
| Architecture | x86 | x86 | x86 | x64 | |
| x86 offset offset:bitpos | Field Name | x64 offset offset:bitpos | |||
| 0x0000 | unsigned long Signature | 0x0000 | |||
| 0x0004 | unsigned long HeapFlags | 0x0004 | |||
| 0x0008 | struct _RTL_CRITICAL_SECTION * HeapCritSect | 0x0008 | |||
| 0x000C | unsigned long nRemoteLockAcquired | 0x0010 | |||
| 0x0010 | struct _DPH_HEAP_BLOCK * pVirtualStorageListHead | 0x0018 | |||
| 0x0014 | struct _DPH_HEAP_BLOCK * pVirtualStorageListTail | 0x0020 | |||
| 0x0018 | unsigned long nVirtualStorageRanges | 0x0028 | |||
| 0x001C | uintptr_t nVirtualStorageBytes | 0x0030 | |||
| 0x0020 | struct _DPH_HEAP_BLOCK * pBusyAllocationListHead | struct _RTL_AVL_TABLE BusyNodesTable | 0x0038 | ||
| 0x0024 | struct _DPH_HEAP_BLOCK * pBusyAllocationListTail | ||||
| 0x0028 | unsigned long nBusyAllocations | ||||
| 0x002C | unsigned long nBusyAllocationBytesCommitted | ||||
| 0x0030 | struct _DPH_HEAP_BLOCK * pFreeAllocationListHead | ||||
| 0x0034 | struct _DPH_HEAP_BLOCK * pFreeAllocationListTail | ||||
| 0x0038 | unsigned long nFreeAllocations | ||||
| 0x003C | unsigned long nFreeAllocationBytesCommitted | ||||
| 0x0040 | struct _DPH_HEAP_BLOCK * pAvailableAllocationListHead | ||||
| 0x0044 | struct _DPH_HEAP_BLOCK * pAvailableAllocationListTail | ||||
| 0x0048 | unsigned long nAvailableAllocations | ||||
| 0x004C | unsigned long nAvailableAllocationBytesCommitted | ||||
| 0x0050 | struct _DPH_HEAP_BLOCK * pUnusedNodeListHead | ||||
| 0x0054 | struct _DPH_HEAP_BLOCK * pUnusedNodeListTail | ||||
| 0x0058 | unsigned long nUnusedNodes | struct _DPH_HEAP_BLOCK * NodeToAllocate | 0x00A0 | ||
| 0x005C | unsigned long nBusyAllocationBytesAccessible | unsigned long nBusyAllocations | 0x00A8 | ||
| 0x0060 | struct _DPH_HEAP_BLOCK * pNodePoolListHead | uintptr_t nBusyAllocationBytesCommitted | 0x00B0 | ||
| 0x0064 | struct _DPH_HEAP_BLOCK * pNodePoolListTail | struct _DPH_HEAP_BLOCK * pFreeAllocationListHead | 0x00B8 | ||
| 0x0068 | unsigned long nNodePools | struct _DPH_HEAP_BLOCK * pFreeAllocationListTail | 0x00C0 | ||
| 0x006C | unsigned long nNodePoolBytes | unsigned long nFreeAllocations | 0x00C8 | ||
| 0x0070 | struct _DPH_HEAP_ROOT * pNextHeapRoot | struct _LIST_ENTRY NextHeap | uintptr_t nFreeAllocationBytesCommitted | 0x00D0 | |
| 0x0074 | struct _DPH_HEAP_ROOT * pPrevHeapRoot | struct _LIST_ENTRY AvailableAllocationHead | 0x00D8 | ||
| 0x0078 | unsigned long nUnProtectionReferenceCount | unsigned long ExtraFlags | |||
| 0x007C | unsigned long InsideAllocateNode | unsigned long Seed | unsigned long nAvailableAllocations | 0x00E8 | |
| 0x0080 | unsigned long ExtraFlags | void * NormalHeap | uintptr_t nAvailableAllocationBytesCommitted | 0x00F0 | |
| 0x0084 | unsigned long Seed | struct _RTL_TRACE_BLOCK * CreateStackTrace | struct _DPH_HEAP_BLOCK * pUnusedNodeListHead | 0x00F8 | |
| 0x0088 | void * NormalHeap | void * FirstThread | struct _DPH_HEAP_BLOCK * pUnusedNodeListTail | 0x0100 | |
| 0x008C | struct _RTL_TRACE_BLOCK * CreateStackTrace | unsigned long nUnusedNodes | 0x0108 | ||
| 0x0090 | void * FirstThread | uintptr_t nBusyAllocationBytesAccessible | 0x0110 | ||
| 0x0094 | struct _DPH_HEAP_BLOCK * pNodePoolListHead | 0x0118 | |||
| 0x0098 | struct _DPH_HEAP_BLOCK * pNodePoolListTail | 0x0120 | |||
| 0x009C | unsigned long nNodePools | 0x0128 | |||
| 0x00A0 | uintptr_t nNodePoolBytes | 0x0130 | |||
| 0x00A4 | struct _LIST_ENTRY NextHeap | 0x0138 | |||
| 0x00AC | unsigned long ExtraFlags | 0x0148 | |||
| 0x00B0 | unsigned long Seed | 0x014C | |||
| 0x00B4 | void * NormalHeap | 0x0150 | |||
| 0x00B8 | struct _RTL_TRACE_BLOCK * CreateStackTrace | 0x0158 | |||
| 0x00BC | void * FirstThread | 0x0160 | |||