ReactOS 0.4.17-dev-243-g1369312
heap.h
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: lib/rtl/heap.h
5 * PURPOSE: Run-Time Libary Heap Manager header
6 * PROGRAMMER: Aleksey Bragin
7 */
8
9/* INCLUDES ******************************************************************/
10
11#ifndef RTL_HEAP_H
12#define RTL_HEAP_H
13
14/* Core heap definitions */
15#define HEAP_SEGMENTS 64
16
17#define HEAP_ENTRY_SIZE ((ULONG)sizeof(HEAP_ENTRY))
18#ifdef _WIN64
19#define HEAP_ENTRY_SHIFT 4
20#else
21#define HEAP_ENTRY_SHIFT 3
22#endif
23#define HEAP_MAX_BLOCK_SIZE ((0x80000 - PAGE_SIZE) >> HEAP_ENTRY_SHIFT)
24
25#define ARENA_INUSE_FILLER 0xBAADF00D
26#define ARENA_FREE_FILLER 0xFEEEFEEE
27#define HEAP_TAIL_FILL 0xab
28
29// from ntifs.h, should go to another header!
30#define HEAP_GLOBAL_TAG 0x0800
31#define HEAP_PSEUDO_TAG_FLAG 0x8000
32#define HEAP_TAG_MASK (HEAP_MAXIMUM_TAG << HEAP_TAG_SHIFT)
33#define HEAP_TAGS_MASK (HEAP_TAG_MASK ^ (0xFF << HEAP_TAG_SHIFT))
34
35#define HEAP_EXTRA_FLAGS_MASK (HEAP_CAPTURE_STACK_BACKTRACES | \
36 HEAP_SETTABLE_USER_VALUE | \
37 HEAP_TAGS_MASK)
38
39/* Heap entry flags */
40#define HEAP_ENTRY_BUSY 0x01
41#define HEAP_ENTRY_EXTRA_PRESENT 0x02
42#define HEAP_ENTRY_FILL_PATTERN 0x04
43#define HEAP_ENTRY_VIRTUAL_ALLOC 0x08
44#define HEAP_ENTRY_LAST_ENTRY 0x10
45#define HEAP_ENTRY_SETTABLE_FLAG1 0x20
46#define HEAP_ENTRY_SETTABLE_FLAG2 0x40
47#define HEAP_ENTRY_SETTABLE_FLAG3 0x80
48#define HEAP_ENTRY_SETTABLE_FLAGS (HEAP_ENTRY_SETTABLE_FLAG1 | HEAP_ENTRY_SETTABLE_FLAG2 | HEAP_ENTRY_SETTABLE_FLAG3)
49
50/* Signatures */
51#define HEAP_SIGNATURE 0xeefeeff
52#define HEAP_SEGMENT_SIGNATURE 0xffeeffee
53
54/* Segment flags */
55#define HEAP_USER_ALLOCATED 0x1
56
57/* A handy inline to distinguis normal heap, special "debug heap" and special "page heap" */
60{
62
68 {
69 /* This is a special heap */
70 return TRUE;
71 }
72
73 /* No need for a special treatment */
74 return FALSE;
75}
76
77/* Heap structures */
79{
80#ifdef _WIN64
81 PVOID PreviousBlockPrivateData;
82#endif
83 union
84 {
85 struct
86 {
90 };
91 struct
92 {
93#ifndef _WIN64
95#else
96 ULONG SubSegmentCodeDummy;
97#endif
99 union
100 {
103 };
105 };
106 struct
107 {
110 };
111 struct
112 {
117 };
118 struct
119 {
124 };
126 };
127};
128
129typedef struct _HEAP_FREE_ENTRY
130{
131 struct _HEAP_COMMON_ENTRY;
134
135typedef struct _HEAP_ENTRY
136{
137 struct _HEAP_COMMON_ENTRY;
139
140#ifdef _WIN64
141C_ASSERT(sizeof(HEAP_ENTRY) == 16);
146#else
147C_ASSERT(sizeof(HEAP_ENTRY) == 8);
152#endif
155
156typedef struct _HEAP_TAG_ENTRY
157{
165
167{
172
173typedef struct _HEAP_COUNTERS
174{
194
196{
200
201typedef struct _HEAP_LIST_LOOKUP
202{
213
214#define HEAP_SEGMENT_MEMBERS \
215 HEAP_ENTRY Entry; \
216 ULONG SegmentSignature; \
217 ULONG SegmentFlags; \
218 LIST_ENTRY SegmentListEntry; \
219 struct _HEAP *Heap; \
220 PVOID BaseAddress; \
221 ULONG NumberOfPages; \
222 PHEAP_ENTRY FirstEntry; \
223 PHEAP_ENTRY LastValidEntry; \
224 ULONG NumberOfUnCommittedPages; \
225 ULONG NumberOfUnCommittedRanges; \
226 USHORT SegmentAllocatorBackTraceIndex; \
227 USHORT Reserved; \
228 LIST_ENTRY UCRSegmentList
229
230typedef struct _HEAP
231{
233
256 LIST_ENTRY UCRSegments; // FIXME: non-Vista
261 struct _HEAP_SEGMENT *Segments[HEAP_SEGMENTS]; //FIXME: non-Vista
264 PVOID BlocksIndex; // HEAP_LIST_LOOKUP
275 RTL_BITMAP FreeHintBitmap; // FIXME: non-Vista
276 PLIST_ENTRY FreeHints[ANYSIZE_ARRAY]; // FIXME: non-Vista
278
279typedef struct _HEAP_SEGMENT
280{
283
285{
291
292typedef struct _HEAP_UCR_SEGMENT
293{
298
299typedef struct _HEAP_ENTRY_EXTRA
300{
301 union
302 {
303 struct
304 {
308 };
310 };
312
314
316{
323
324/* Global variables */
327
328/* Functions declarations */
329
330/* heap.c */
333 PHEAP_FREE_ENTRY FreeEntry,
334 PSIZE_T FreeSize,
336
339
341RtlpValidateHeap(PHEAP Heap, BOOLEAN ForceValidation);
342
345
347RtlpValidateHeapHeaders(PHEAP Heap, BOOLEAN Recalculate);
348
349/* heapdbg.c */
353 PVOID Addr,
354 SIZE_T TotalSize,
356 PVOID Lock,
358
361
364 ULONG Flags,
365 SIZE_T Size);
366
369 ULONG Flags,
370 PVOID Ptr,
371 SIZE_T Size);
372
375 ULONG Flags,
376 PVOID Ptr);
377
380 ULONG Flags,
382 PVOID *UserValue,
383 PULONG UserFlags);
384
387 ULONG Flags,
389 PVOID UserValue);
390
392NTAPI
394 ULONG Flags,
396 ULONG UserFlagsReset,
397 ULONG UserFlagsSet);
398
401 ULONG Flags,
402 PVOID Ptr);
403
404/* heappage.c */
405
408 PVOID Addr,
409 SIZE_T TotalSize,
411 PVOID Lock,
413
416
419 IN ULONG Flags,
420 IN SIZE_T Size);
421
424 ULONG Flags,
425 PVOID Ptr);
426
429 ULONG Flags,
430 PVOID Ptr,
431 SIZE_T Size);
432
434RtlpPageHeapLock(HANDLE HeapPtr);
435
438
441 ULONG Flags,
443 PVOID *UserValue,
444 PULONG UserFlags);
445
448 ULONG Flags,
450 PVOID UserValue);
451
453NTAPI
455 ULONG Flags,
457 ULONG UserFlagsReset,
458 ULONG UserFlagsSet);
459
461NTAPI
463 ULONG Flags,
464 PVOID Block);
465
468 ULONG Flags,
469 PVOID Ptr);
470
471VOID
472NTAPI
474
475VOID
476NTAPI
478
479VOID
480NTAPI
482
483#endif
unsigned char BOOLEAN
Definition: actypes.h:127
COMPILER_DEPENDENT_UINT64 UINT64
Definition: actypes.h:131
#define NTSYSAPI
Definition: ntoskrnl.h:12
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
Definition: fsrtlfuncs.h:898
#define C_ASSERT(e)
Definition: intsafe.h:73
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID * BaseAddress
Definition: mmfuncs.h:404
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T CommitSize
Definition: mmfuncs.h:406
#define HEAP_SKIP_VALIDATION_CHECKS
Definition: rtltypes.h:165
#define HEAP_VALIDATE_ALL_ENABLED
Definition: rtltypes.h:166
#define HEAP_CAPTURE_STACK_BACKTRACES
Definition: rtltypes.h:164
#define HEAP_VALIDATE_PARAMETERS_ENABLED
Definition: rtltypes.h:167
#define HEAP_FLAG_PAGE_ALLOCS
Definition: rtltypes.h:160
#define HEAP_CREATE_ENABLE_TRACING
Definition: nt_native.h:1705
short WCHAR
Definition: pedump.c:58
unsigned short USHORT
Definition: pedump.c:61
struct _HEAP_ENTRY_EXTRA HEAP_ENTRY_EXTRA
SIZE_T NTAPI RtlDebugSizeHeap(HANDLE HeapPtr, ULONG Flags, PVOID Ptr)
Definition: heapdbg.c:494
PVOID NTAPI RtlDebugAllocateHeap(PVOID HeapPtr, ULONG Flags, SIZE_T Size)
Definition: heapdbg.c:130
PHEAP_FREE_ENTRY NTAPI RtlpCoalesceFreeBlocks(PHEAP Heap, PHEAP_FREE_ENTRY FreeEntry, PSIZE_T FreeSize, BOOLEAN Remove)
Definition: heap.c:1169
BOOLEAN NTAPI RtlDebugSetUserValueHeap(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, PVOID UserValue)
Definition: heapdbg.c:375
#define HEAP_ENTRY_SHIFT
Definition: heap.h:21
struct _HEAP_UCR_DESCRIPTOR HEAP_UCR_DESCRIPTOR
struct _HEAP_TAG_ENTRY * PHEAP_TAG_ENTRY
struct _HEAP_ENTRY * PHEAP_ENTRY
PVOID NTAPI RtlpPageHeapDestroy(HANDLE HeapPtr)
Definition: heappage.c:1678
struct _HEAP_TUNING_PARAMETERS HEAP_TUNING_PARAMETERS
HEAP_ENTRY_EXTRA * PHEAP_FREE_ENTRY_EXTRA
Definition: heap.h:313
SIZE_T NTAPI RtlpPageHeapSize(HANDLE HeapPtr, ULONG Flags, PVOID Ptr)
Definition: heappage.c:2318
struct _HEAP_UCR_SEGMENT HEAP_UCR_SEGMENT
BOOLEAN NTAPI RtlpValidateHeap(PHEAP Heap, BOOLEAN ForceValidation)
Definition: heap.c:3532
BOOLEAN NTAPI RtlpPageHeapLock(HANDLE HeapPtr)
Definition: heappage.c:2423
PVOID NTAPI RtlpPageHeapReAllocate(HANDLE HeapPtr, ULONG Flags, PVOID Ptr, SIZE_T Size)
Definition: heappage.c:2023
struct _HEAP_LIST_LOOKUP HEAP_LIST_LOOKUP
struct _HEAP_SEGMENT HEAP_SEGMENT
struct _HEAP_VIRTUAL_ALLOC_ENTRY HEAP_VIRTUAL_ALLOC_ENTRY
struct _HEAP_FREE_ENTRY HEAP_FREE_ENTRY
struct _HEAP_ENTRY_EXTRA * PHEAP_ENTRY_EXTRA
FORCEINLINE BOOLEAN RtlpHeapIsSpecial(ULONG Flags)
Definition: heap.h:59
struct _HEAP_UCR_SEGMENT * PHEAP_UCR_SEGMENT
struct _HEAP_TAG_ENTRY HEAP_TAG_ENTRY
BOOLEAN NTAPI RtlDebugFreeHeap(HANDLE HeapPtr, ULONG Flags, PVOID Ptr)
Definition: heapdbg.c:267
struct _HEAP_PSEUDO_TAG_ENTRY HEAP_PSEUDO_TAG_ENTRY
VOID NTAPI RtlpAddHeapToProcessList(PHEAP Heap)
Definition: heapuser.c:23
BOOLEAN NTAPI RtlDebugDestroyHeap(HANDLE HeapPtr)
Definition: heapdbg.c:95
struct _HEAP HEAP
HEAP_ENTRY_EXTRA HEAP_FREE_ENTRY_EXTRA
Definition: heap.h:313
BOOLEAN NTAPI RtlpValidateHeapHeaders(PHEAP Heap, BOOLEAN Recalculate)
Definition: heap.c:3279
struct _HEAP_COUNTERS HEAP_COUNTERS
BOOLEAN NTAPI RtlDebugSetUserFlagsHeap(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, ULONG UserFlagsReset, ULONG UserFlagsSet)
Definition: heapdbg.c:431
NTSYSAPI HANDLE NTAPI RtlDebugCreateHeap(ULONG Flags, PVOID Addr, SIZE_T TotalSize, SIZE_T CommitSize, PVOID Lock, PRTL_HEAP_PARAMETERS Parameters)
Definition: heapdbg.c:20
BOOLEAN NTAPI RtlpPageHeapSetUserValue(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, PVOID UserValue)
Definition: heappage.c:2235
VOID NTAPI RtlInitializeHeapManager(VOID)
Definition: libsupp.c:243
BOOLEAN NTAPI RtlpPageHeapGetUserInfo(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, PVOID *UserValue, PULONG UserFlags)
Definition: heappage.c:2193
PVOID NTAPI RtlDebugReAllocateHeap(HANDLE HeapPtr, ULONG Flags, PVOID Ptr, SIZE_T Size)
Definition: heapdbg.c:195
struct _HEAP_VIRTUAL_ALLOC_ENTRY * PHEAP_VIRTUAL_ALLOC_ENTRY
struct _HEAP_PSEUDO_TAG_ENTRY * PHEAP_PSEUDO_TAG_ENTRY
struct _HEAP_UCR_DESCRIPTOR * PHEAP_UCR_DESCRIPTOR
RTL_CRITICAL_SECTION RtlpProcessHeapsListLock
Definition: heapuser.c:17
BOOLEAN RtlpPageHeapEnabled
Definition: heappage.c:107
BOOLEAN NTAPI RtlpPageHeapFree(HANDLE HeapPtr, ULONG Flags, PVOID Ptr)
Definition: heappage.c:1931
struct _HEAP_COUNTERS * PHEAP_COUNTERS
struct _HEAP_FREE_ENTRY * PHEAP_FREE_ENTRY
VOID NTAPI RtlpRemoveHeapFromProcessList(PHEAP Heap)
Definition: heapuser.c:56
struct _HEAP * PHEAP
BOOLEAN NTAPI RtlDebugGetUserInfoHeap(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, PVOID *UserValue, PULONG UserFlags)
Definition: heapdbg.c:322
struct _HEAP_ENTRY HEAP_ENTRY
BOOLEAN NTAPI RtlpValidateHeapEntry(PHEAP Heap, PHEAP_ENTRY HeapEntry)
Definition: heap.c:3288
PVOID NTAPI RtlpPageHeapAllocate(IN PVOID HeapPtr, IN ULONG Flags, IN SIZE_T Size)
Definition: heappage.c:1766
BOOLEAN NTAPI RtlpPageHeapUnlock(HANDLE HeapPtr)
Definition: heappage.c:2437
PHEAP_ENTRY_EXTRA NTAPI RtlpGetExtraStuffPointer(PHEAP_ENTRY HeapEntry)
Definition: heap.c:2651
BOOLEAN NTAPI RtlpDebugPageHeapValidate(PVOID HeapPtr, ULONG Flags, PVOID Block)
Definition: heappage.c:2359
#define HEAP_SEGMENTS
Definition: heap.h:15
BOOLEAN NTAPI RtlpPageHeapSetUserFlags(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, ULONG UserFlagsReset, ULONG UserFlagsSet)
Definition: heappage.c:2276
struct _HEAP_SEGMENT * PHEAP_SEGMENT
struct _HEAP_LIST_LOOKUP * PHEAP_LIST_LOOKUP
HANDLE NTAPI RtlpPageHeapCreate(ULONG Flags, PVOID Addr, SIZE_T TotalSize, SIZE_T CommitSize, PVOID Lock, PRTL_HEAP_PARAMETERS Parameters)
Definition: heappage.c:1537
struct _HEAP_TUNING_PARAMETERS * PHEAP_TUNING_PARAMETERS
Definition: heap.h:79
USHORT PreviousSize
Definition: heap.h:98
UCHAR Code3
Definition: heap.h:122
UCHAR SmallTagIndex
Definition: heap.h:89
UCHAR Flags
Definition: heap.h:88
UCHAR ExtendedBlockSignature
Definition: heap.h:116
UCHAR UnusedBytes
Definition: heap.h:104
UCHAR SegmentOffset
Definition: heap.h:101
USHORT ContextValue
Definition: heap.h:109
USHORT FunctionIndex
Definition: heap.h:108
ULONGLONG AgregateCode
Definition: heap.h:125
USHORT Size
Definition: heap.h:87
ULONG InterceptorValue
Definition: heap.h:113
UCHAR LFHFlags
Definition: heap.h:102
ULONG Code1
Definition: heap.h:120
USHORT UnusedBytesLength
Definition: heap.h:114
PVOID SubSegmentCode
Definition: heap.h:94
USHORT Code2
Definition: heap.h:121
UCHAR EntryOffset
Definition: heap.h:115
UCHAR Code4
Definition: heap.h:123
ULONG CompactHeapCalls
Definition: heap.h:189
SIZE_T TotalMemoryLargeUCR
Definition: heap.h:177
SIZE_T TotalMemoryCommitted
Definition: heap.h:176
ULONG DecommittRate
Definition: heap.h:186
SIZE_T InBlockDeccomitSize
Definition: heap.h:192
SIZE_T TotalSizeInVirtualBlocks
Definition: heap.h:178
ULONG TotalUCRs
Definition: heap.h:180
ULONG CommitFailures
Definition: heap.h:187
SIZE_T TotalMemoryReserved
Definition: heap.h:175
ULONG InBlockDeccommits
Definition: heap.h:191
ULONG LockAcquires
Definition: heap.h:183
ULONG CommitRate
Definition: heap.h:185
ULONG CompactedUCRs
Definition: heap.h:190
ULONG TotalSegments
Definition: heap.h:179
ULONG CommittOps
Definition: heap.h:181
ULONG InBlockCommitFailures
Definition: heap.h:188
ULONG LockCollisions
Definition: heap.h:184
ULONG DeCommitOps
Definition: heap.h:182
Definition: heap.h:300
ULONG_PTR Settable
Definition: heap.h:307
USHORT AllocatorBackTraceIndex
Definition: heap.h:305
UINT64 ZeroInit
Definition: heap.h:309
USHORT TagIndex
Definition: heap.h:306
Definition: heap.h:136
Definition: heap.h:130
LIST_ENTRY FreeList
Definition: heap.h:132
ULONG ExtraItem
Definition: heap.h:205
ULONG BaseIndex
Definition: heap.h:208
PULONG ListsInUseUlong
Definition: heap.h:210
PLIST_ENTRY ListHead
Definition: heap.h:209
struct _HEAP_LIST_LOOKUP * ExtendedLookup
Definition: heap.h:203
ULONG ArraySize
Definition: heap.h:204
ULONG OutOfRangeItems
Definition: heap.h:207
ULONG ItemCount
Definition: heap.h:206
PLIST_ENTRY * ListHints
Definition: heap.h:211
Definition: heap.h:167
ULONG Allocs
Definition: heap.h:168
ULONG Frees
Definition: heap.h:169
SIZE_T Size
Definition: heap.h:170
HEAP_SEGMENT_MEMBERS
Definition: heap.h:281
Definition: heap.h:157
USHORT TagIndex
Definition: heap.h:161
ULONG Size
Definition: heap.h:160
ULONG Allocs
Definition: heap.h:158
USHORT CreatorBackTraceIndex
Definition: heap.h:162
ULONG Frees
Definition: heap.h:159
WCHAR TagName[24]
Definition: heap.h:163
ULONG CommittThresholdShift
Definition: heap.h:197
SIZE_T MaxPreCommittThreshold
Definition: heap.h:198
LIST_ENTRY SegmentEntry
Definition: heap.h:287
LIST_ENTRY ListEntry
Definition: heap.h:286
SIZE_T CommittedSize
Definition: heap.h:296
LIST_ENTRY ListEntry
Definition: heap.h:294
SIZE_T ReservedSize
Definition: heap.h:295
Definition: heap.h:316
LIST_ENTRY Entry
Definition: heap.h:317
HEAP_ENTRY BusyBlock
Definition: heap.h:321
SIZE_T ReserveSize
Definition: heap.h:320
SIZE_T CommitSize
Definition: heap.h:319
HEAP_ENTRY_EXTRA ExtraStuff
Definition: heap.h:318
Definition: heap.c:52
ULONG Flags
Definition: heap.h:234
USHORT HeaderValidateLength
Definition: heap.h:250
ULONG_PTR PointerKey
Definition: heap.h:239
ULONG Interceptor
Definition: heap.h:240
ULONG VirtualMemoryThreshold
Definition: heap.h:241
HEAP_COUNTERS Counters
Definition: heap.h:273
PRTL_HEAP_COMMIT_ROUTINE CommitRoutine
Definition: heap.h:269
USHORT MaximumTagIndex
Definition: heap.h:253
ULONG EncodeFlagMask
Definition: heap.h:237
ULONG_PTR AlignRound
Definition: heap.h:257
ULONG ForceFlags
Definition: heap.h:235
PVOID UCRIndex
Definition: heap.h:265
PLIST_ENTRY FreeHints[ANYSIZE_ARRAY]
Definition: heap.h:276
USHORT NextAvailableTagIndex
Definition: heap.h:252
SIZE_T TotalFreeSize
Definition: heap.h:247
UCHAR FrontEndHeapType
Definition: heap.h:272
SIZE_T SegmentCommit
Definition: heap.h:244
RTL_BITMAP FreeHintBitmap
Definition: heap.h:275
SIZE_T SegmentReserve
Definition: heap.h:243
ULONG_PTR AlignMask
Definition: heap.h:258
LIST_ENTRY VirtualAllocdBlocks
Definition: heap.h:259
USHORT ProcessHeapsListIndex
Definition: heap.h:249
PHEAP_PSEUDO_TAG_ENTRY PseudoTagEntries
Definition: heap.h:266
LIST_ENTRY FreeLists
Definition: heap.h:267
LIST_ENTRY SegmentList
Definition: heap.h:260
PHEAP_TAG_ENTRY TagEntries
Definition: heap.h:254
ULONG Signature
Definition: heap.h:242
USHORT AllocatorBackTraceIndex
Definition: heap.h:262
SIZE_T MaximumAllocationSize
Definition: heap.h:248
ULONG NonDedicatedListLength
Definition: heap.h:263
LIST_ENTRY UCRSegments
Definition: heap.h:256
HEAP_TUNING_PARAMETERS TuningParameters
Definition: heap.h:274
PVOID BlocksIndex
Definition: heap.h:264
SIZE_T DeCommitFreeBlockThreshold
Definition: heap.h:245
PHEAP_LOCK LockVariable
Definition: heap.h:268
PVOID FrontEndHeap
Definition: heap.h:270
LIST_ENTRY UCRList
Definition: heap.h:255
PVOID HeaderValidateCopy
Definition: heap.h:251
HEAP_ENTRY Encoding
Definition: heap.h:238
HEAP_SEGMENT_MEMBERS
Definition: heap.h:232
USHORT FrontHeapLockCount
Definition: heap.h:271
ULONG CompatibilityFlags
Definition: heap.h:236
SIZE_T DeCommitTotalFreeThreshold
Definition: heap.h:246
struct _HEAP_SEGMENT * Segments[HEAP_SEGMENTS]
Definition: heap.h:261
Definition: typedefs.h:120
ULONG_PTR * PSIZE_T
Definition: typedefs.h:80
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: typedefs.h:53
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint64_t ULONGLONG
Definition: typedefs.h:67
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4539
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
Definition: wdfsync.h:127
#define FORCEINLINE
Definition: wdftypes.h:67
RTL_HEAP_COMMIT_ROUTINE * PRTL_HEAP_COMMIT_ROUTINE
Definition: winternl.h:2787
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
_In_ BOOLEAN Remove
Definition: psfuncs.h:111