WinHeap.H
2020-12-13 16:14
标签:style blog io color ar sp for strong div 网上找到的,对 Windows Heap 有详细的定义。 WinHeap.H 标签:style blog io color ar sp for strong div 原文地址:http://www.cnblogs.com/exclm/p/4081094.html 1 // file winheap.h
2 typedef void VOID;
3 typedef unsigned __int8 UINT8;
4 typedef unsigned __int16 UINT16;
5 typedef __int32 LONG32;
6 typedef unsigned __int32 ULONG32;
7 typedef unsigned __int64 UINT64;
8
9 // pseudo struct, for the PEB heap list
10 struct HEAPTABLE {
11 struct _HEAP *list[16];
12 };
13
14 struct _LIST_ENTRY {
15 struct _LIST_ENTRY *FLink;
16 struct _LIST_ENTRY *BLink;
17 };
18
19 union _SLIST_HEADER {
20 struct _LIST_ENTRY le;
21 };
22
23 typedef struct _HEAP_ENTRY // 7 elements, 0x8 bytes (sizeof)
24 {
25 // union // 2 elements, 0x4 bytes (sizeof)
26 // {
27 // struct // 2 elements, 0x4 bytes (sizeof)
28 // {
29 /*0x000*/ UINT16 Size;
30 /*0x002*/ UINT16 PreviousSize;
31 // };
32 ///*0x000*/ VOID* SubSegmentCode;
33 // };
34 /*0x004*/ UINT8 SmallTagIndex;
35 /*0x005*/ UINT8 Flags;
36 /*0x006*/ UINT8 UnusedBytes;
37 /*0x007*/ UINT8 SegmentIndex;
38 }HEAP_ENTRY, *PHEAP_ENTRY;
39
40 typedef struct _HEAP // 36 elements, 0x588 bytes (sizeof)
41 {
42 /*0x000*/ struct _HEAP_ENTRY Entry; // 7 elements, 0x8 bytes (sizeof)
43 /*0x008*/ ULONG32 Signature;
44 /*0x00C*/ ULONG32 Flags;
45 /*0x010*/ ULONG32 ForceFlags;
46 /*0x014*/ ULONG32 VirtualMemoryThreshold;
47 /*0x018*/ ULONG32 SegmentReserve;
48 /*0x01C*/ ULONG32 SegmentCommit;
49 /*0x020*/ ULONG32 DeCommitFreeBlockThreshold;
50 /*0x024*/ ULONG32 DeCommitTotalFreeThreshold;
51 /*0x028*/ ULONG32 TotalFreeSize;
52 /*0x02C*/ ULONG32 MaximumAllocationSize;
53 /*0x030*/ UINT16 ProcessHeapsListIndex;
54 /*0x032*/ UINT16 HeaderValidateLength;
55 /*0x034*/ VOID* HeaderValidateCopy;
56 /*0x038*/ UINT16 NextAvailableTagIndex;
57 /*0x03A*/ UINT16 MaximumTagIndex;
58 /*0x03C*/ struct _HEAP_TAG_ENTRY* TagEntries;
59 /*0x040*/ struct _HEAP_UCR_SEGMENT* UCRSegments;
60 /*0x044*/ struct _HEAP_UNCOMMMTTED_RANGE* UnusedUnCommittedRanges;
61 /*0x048*/ ULONG32 AlignRound;
62 /*0x04C*/ ULONG32 AlignMask;
63 /*0x050*/ struct _LIST_ENTRY VirtualAllocdBlocks; // 2 elements, 0x8 bytes (sizeof)
64 /*0x058*/ struct _HEAP_SEGMENT* Segments[64];
65 union // 2 elements, 0x10 bytes (sizeof)
66 {
67 /*0x158*/ ULONG32 FreeListsInUseUlong[4];
68 /*0x158*/ UINT8 FreeListsInUseBytes[16];
69 }u;
70 union // 2 elements, 0x2 bytes (sizeof)
71 {
72 /*0x168*/ UINT16 FreeListsInUseTerminate;
73 /*0x168*/ UINT16 DecommitCount;
74 }u2;
75 /*0x16A*/ UINT16 AllocatorBackTraceIndex;
76 /*0x16C*/ ULONG32 NonDedicatedListLength;
77 /*0x170*/ VOID* LargeBlocksIndex;
78 /*0x174*/ struct _HEAP_PSEUDO_TAG_ENTRY* PseudoTagEntries;
79 /*0x178*/ struct _LIST_ENTRY FreeLists[128];
80 /*0x578*/ struct _HEAP_LOCK* LockVariable;
81 ///*0x57C*/ FUNCT_0049_0C5F_CommitRoutine* CommitRoutine;
82 /*0x57C*/ VOID* CommitRoutine;
83 /*0x580*/ VOID* FrontEndHeap;
84 /*0x584*/ UINT16 FrontHeapLockCount;
85 /*0x586*/ UINT8 FrontEndHeapType;
86 /*0x587*/ UINT8 LastSegmentIndex;
87 }HEAP, *PHEAP;
88
89 typedef struct _HEAP_UNCOMMMTTED_RANGE // 4 elements, 0x10 bytes (sizeof)
90 {
91 /*0x000*/ struct _HEAP_UNCOMMMTTED_RANGE* Next;
92 /*0x004*/ ULONG32 Address;
93 /*0x008*/ ULONG32 Size;
94 /*0x00C*/ ULONG32 filler;
95 }HEAP_UNCOMMMTTED_RANGE, *PHEAP_UNCOMMMTTED_RANGE;
96
97 typedef struct _HEAP_ENTRY_EXTRA // 4 elements, 0x8 bytes (sizeof)
98 {
99 union // 2 elements, 0x8 bytes (sizeof)
100 {
101 struct // 3 elements, 0x8 bytes (sizeof)
102 {
103 /*0x000*/ UINT16 AllocatorBackTraceIndex;
104 /*0x002*/ UINT16 TagIndex;
105 /*0x004*/ ULONG32 Settable;
106 };
107 /*0x000*/ UINT64 ZeroInit;
108 };
109 }HEAP_ENTRY_EXTRA, *PHEAP_ENTRY_EXTRA;
110
111 typedef struct _HEAP_VIRTUAL_ALLOC_ENTRY // 5 elements, 0x20 bytes (sizeof)
112 {
113 /*0x000*/ struct _LIST_ENTRY Entry; // 2 elements, 0x8 bytes (sizeof)
114 /*0x008*/ struct _HEAP_ENTRY_EXTRA ExtraStuff; // 4 elements, 0x8 bytes (sizeof)
115 /*0x010*/ ULONG32 CommitSize;
116 /*0x014*/ ULONG32 ReserveSize;
117 /*0x018*/ struct _HEAP_ENTRY BusyBlock; // 7 elements, 0x8 bytes (sizeof)
118 }HEAP_VIRTUAL_ALLOC_ENTRY, *PHEAP_VIRTUAL_ALLOC_ENTRY;
119
120
121 typedef struct _HEAP_FREE_ENTRY // 8 elements, 0x10 bytes (sizeof)
122 {
123 union // 2 elements, 0x4 bytes (sizeof)
124 {
125 struct // 2 elements, 0x4 bytes (sizeof)
126 {
127 /*0x000*/ UINT16 Size;
128 /*0x002*/ UINT16 PreviousSize;
129 };
130 /*0x000*/ VOID* SubSegmentCode;
131 };
132 /*0x004*/ UINT8 SmallTagIndex;
133 /*0x005*/ UINT8 Flags;
134 /*0x006*/ UINT8 UnusedBytes;
135 /*0x007*/ UINT8 SegmentIndex;
136 /*0x008*/ struct _LIST_ENTRY FreeList; // 2 elements, 0x8 bytes (sizeof)
137 }HEAP_FREE_ENTRY, *PHEAP_FREE_ENTRY;
138
139 typedef struct _HEAP_LOOKASIDE // 10 elements, 0x30 bytes (sizeof)
140 {
141 /*0x000*/ union _SLIST_HEADER ListHead; // 4 elements, 0x8 bytes (sizeof)
142 /*0x008*/ UINT16 Depth;
143 /*0x00A*/ UINT16 MaximumDepth;
144 /*0x00C*/ ULONG32 TotalAllocates;
145 /*0x010*/ ULONG32 AllocateMisses;
146 /*0x014*/ ULONG32 TotalFrees;
147 /*0x018*/ ULONG32 FreeMisses;
148 /*0x01C*/ ULONG32 LastTotalAllocates;
149 /*0x020*/ ULONG32 LastAllocateMisses;
150 /*0x024*/ ULONG32 Counters[2];
151 /*0x02C*/ UINT8 _PADDING0_[0x4];
152 }HEAP_LOOKASIDE, *PHEAP_LOOKASIDE;
153
154 struct FRONTEND1 {
155 struct _HEAP_LOOKASIDE l[128];
156 };
157
158 typedef struct _HEAP_SEGMENT // 15 elements, 0x3C bytes (sizeof)
159 {
160 /*0x000*/ struct _HEAP_ENTRY Entry; // 7 elements, 0x8 bytes (sizeof)
161 /*0x008*/ ULONG32 Signature;
162 /*0x00C*/ ULONG32 Flags;
163 /*0x010*/ struct _HEAP* Heap;
164 /*0x014*/ ULONG32 LargestUnCommittedRange;
165 /*0x018*/ VOID* BaseAddress;
166 /*0x01C*/ ULONG32 NumberOfPages;
167 /*0x020*/ struct _HEAP_ENTRY* FirstEntry;
168 /*0x024*/ struct _HEAP_ENTRY* LastValidEntry;
169 /*0x028*/ ULONG32 NumberOfUnCommittedPages;
170 /*0x02C*/ ULONG32 NumberOfUnCommittedRanges;
171 /*0x030*/ struct _HEAP_UNCOMMMTTED_RANGE* UnCommittedRanges;
172 /*0x034*/ UINT16 AllocatorBackTraceIndex;
173 /*0x036*/ UINT16 Reserved;
174 /*0x038*/ struct _HEAP_ENTRY* LastEntryInSegment;
175 }HEAP_SEGMENT, *PHEAP_SEGMENT;
上一篇:FindWindow使用方法
下一篇:Python_内置函数