ReactOS 0.4.15-dev-5666-gc548b97
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 _M_AMD64
81 PVOID PreviousBlockPrivateData;
82#endif
83 union
84 {
85 struct
86 {
90 };
91 struct
92 {
93#ifndef _M_AMD64
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);
142#else
143C_ASSERT(sizeof(HEAP_ENTRY) == 8);
144#endif
147
148typedef struct _HEAP_TAG_ENTRY
149{
157
159{
164
165typedef struct _HEAP_COUNTERS
166{
186
188{
192
193typedef struct _HEAP_LIST_LOOKUP
194{
205
206#define HEAP_SEGMENT_MEMBERS \
207 HEAP_ENTRY Entry; \
208 ULONG SegmentSignature; \
209 ULONG SegmentFlags; \
210 LIST_ENTRY SegmentListEntry; \
211 struct _HEAP *Heap; \
212 PVOID BaseAddress; \
213 ULONG NumberOfPages; \
214 PHEAP_ENTRY FirstEntry; \
215 PHEAP_ENTRY LastValidEntry; \
216 ULONG NumberOfUnCommittedPages; \
217 ULONG NumberOfUnCommittedRanges; \
218 USHORT SegmentAllocatorBackTraceIndex; \
219 USHORT Reserved; \
220 LIST_ENTRY UCRSegmentList
221
222typedef struct _HEAP
223{
225
248 LIST_ENTRY UCRSegments; // FIXME: non-Vista
253 struct _HEAP_SEGMENT *Segments[HEAP_SEGMENTS]; //FIXME: non-Vista
256 PVOID BlocksIndex; // HEAP_LIST_LOOKUP
267 RTL_BITMAP FreeHintBitmap; // FIXME: non-Vista
268 PLIST_ENTRY FreeHints[ANYSIZE_ARRAY]; // FIXME: non-Vista
270
271typedef struct _HEAP_SEGMENT
272{
275
277{
283
284typedef struct _HEAP_UCR_SEGMENT
285{
290
291typedef struct _HEAP_ENTRY_EXTRA
292{
293 union
294 {
295 struct
296 {
300 };
302 };
304
306
308{
315
316/* Global variables */
319
320/* Functions declarations */
321
322/* heap.c */
325 PHEAP_FREE_ENTRY FreeEntry,
326 PSIZE_T FreeSize,
328
331
333RtlpValidateHeap(PHEAP Heap, BOOLEAN ForceValidation);
334
337
339RtlpValidateHeapHeaders(PHEAP Heap, BOOLEAN Recalculate);
340
341/* heapdbg.c */
344 PVOID Addr,
345 SIZE_T TotalSize,
347 PVOID Lock,
349
352
355 ULONG Flags,
356 SIZE_T Size);
357
360 ULONG Flags,
361 PVOID Ptr,
362 SIZE_T Size);
363
366 ULONG Flags,
367 PVOID Ptr);
368
371 ULONG Flags,
373 PVOID *UserValue,
374 PULONG UserFlags);
375
378 ULONG Flags,
380 PVOID UserValue);
381
383NTAPI
385 ULONG Flags,
387 ULONG UserFlagsReset,
388 ULONG UserFlagsSet);
389
392 ULONG Flags,
393 PVOID Ptr);
394
395/* heappage.c */
396
399 PVOID Addr,
400 SIZE_T TotalSize,
402 PVOID Lock,
404
407
410 IN ULONG Flags,
411 IN SIZE_T Size);
412
415 ULONG Flags,
416 PVOID Ptr);
417
420 ULONG Flags,
421 PVOID Ptr,
422 SIZE_T Size);
423
425RtlpPageHeapLock(HANDLE HeapPtr);
426
429
432 ULONG Flags,
434 PVOID *UserValue,
435 PULONG UserFlags);
436
439 ULONG Flags,
441 PVOID UserValue);
442
444NTAPI
446 ULONG Flags,
448 ULONG UserFlagsReset,
449 ULONG UserFlagsSet);
450
452NTAPI
454 ULONG Flags,
455 PVOID Block);
456
459 ULONG Flags,
460 PVOID Ptr);
461
462VOID
463NTAPI
465
466VOID
467NTAPI
469
470VOID
471NTAPI
473
474#endif
unsigned char BOOLEAN
unsigned long long UINT64
#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
unsigned int * PULONG
Definition: retypes.h:1
unsigned int ULONG
Definition: retypes.h:1
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
Definition: mmfuncs.h:404
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize 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:1702
NTSTATUS(* PRTL_HEAP_COMMIT_ROUTINE)(IN PVOID Base, IN OUT PVOID *CommitAddress, IN OUT PULONG CommitSize)
Definition: nt_native.h:1660
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:1150
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:1674
struct _HEAP_TUNING_PARAMETERS HEAP_TUNING_PARAMETERS
HEAP_ENTRY_EXTRA * PHEAP_FREE_ENTRY_EXTRA
Definition: heap.h:305
SIZE_T NTAPI RtlpPageHeapSize(HANDLE HeapPtr, ULONG Flags, PVOID Ptr)
Definition: heappage.c:2310
struct _HEAP_UCR_SEGMENT HEAP_UCR_SEGMENT
BOOLEAN NTAPI RtlpValidateHeap(PHEAP Heap, BOOLEAN ForceValidation)
Definition: heap.c:3513
BOOLEAN NTAPI RtlpPageHeapLock(HANDLE HeapPtr)
Definition: heappage.c:2415
PVOID NTAPI RtlpPageHeapReAllocate(HANDLE HeapPtr, ULONG Flags, PVOID Ptr, SIZE_T Size)
Definition: heappage.c:2015
struct _HEAP_LIST_LOOKUP HEAP_LIST_LOOKUP
struct _HEAP_SEGMENT HEAP_SEGMENT
HANDLE NTAPI RtlDebugCreateHeap(ULONG Flags, PVOID Addr, SIZE_T TotalSize, SIZE_T CommitSize, PVOID Lock, PRTL_HEAP_PARAMETERS Parameters)
Definition: heapdbg.c:20
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:305
BOOLEAN NTAPI RtlpValidateHeapHeaders(PHEAP Heap, BOOLEAN Recalculate)
Definition: heap.c:3260
struct _HEAP_COUNTERS HEAP_COUNTERS
BOOLEAN NTAPI RtlDebugSetUserFlagsHeap(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, ULONG UserFlagsReset, ULONG UserFlagsSet)
Definition: heapdbg.c:431
BOOLEAN NTAPI RtlpPageHeapSetUserValue(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, PVOID UserValue)
Definition: heappage.c:2227
VOID NTAPI RtlInitializeHeapManager(VOID)
Definition: libsupp.c:243
BOOLEAN NTAPI RtlpPageHeapGetUserInfo(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, PVOID *UserValue, PULONG UserFlags)
Definition: heappage.c:2185
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:1923
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:3269
PVOID NTAPI RtlpPageHeapAllocate(IN PVOID HeapPtr, IN ULONG Flags, IN SIZE_T Size)
Definition: heappage.c:1758
BOOLEAN NTAPI RtlpPageHeapUnlock(HANDLE HeapPtr)
Definition: heappage.c:2429
PHEAP_ENTRY_EXTRA NTAPI RtlpGetExtraStuffPointer(PHEAP_ENTRY HeapEntry)
Definition: heap.c:2632
BOOLEAN NTAPI RtlpDebugPageHeapValidate(PVOID HeapPtr, ULONG Flags, PVOID Block)
Definition: heappage.c:2351
#define HEAP_SEGMENTS
Definition: heap.h:15
BOOLEAN NTAPI RtlpPageHeapSetUserFlags(PVOID HeapHandle, ULONG Flags, PVOID BaseAddress, ULONG UserFlagsReset, ULONG UserFlagsSet)
Definition: heappage.c:2268
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:1533
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:181
SIZE_T TotalMemoryLargeUCR
Definition: heap.h:169
SIZE_T TotalMemoryCommitted
Definition: heap.h:168
ULONG DecommittRate
Definition: heap.h:178
SIZE_T InBlockDeccomitSize
Definition: heap.h:184
SIZE_T TotalSizeInVirtualBlocks
Definition: heap.h:170
ULONG TotalUCRs
Definition: heap.h:172
ULONG CommitFailures
Definition: heap.h:179
SIZE_T TotalMemoryReserved
Definition: heap.h:167
ULONG InBlockDeccommits
Definition: heap.h:183
ULONG LockAcquires
Definition: heap.h:175
ULONG CommitRate
Definition: heap.h:177
ULONG CompactedUCRs
Definition: heap.h:182
ULONG TotalSegments
Definition: heap.h:171
ULONG CommittOps
Definition: heap.h:173
ULONG InBlockCommitFailures
Definition: heap.h:180
ULONG LockCollisions
Definition: heap.h:176
ULONG DeCommitOps
Definition: heap.h:174
Definition: heap.h:292
ULONG_PTR Settable
Definition: heap.h:299
USHORT AllocatorBackTraceIndex
Definition: heap.h:297
UINT64 ZeroInit
Definition: heap.h:301
USHORT TagIndex
Definition: heap.h:298
Definition: heap.h:136
Definition: heap.h:130
LIST_ENTRY FreeList
Definition: heap.h:132
ULONG ExtraItem
Definition: heap.h:197
ULONG BaseIndex
Definition: heap.h:200
PULONG ListsInUseUlong
Definition: heap.h:202
PLIST_ENTRY ListHead
Definition: heap.h:201
struct _HEAP_LIST_LOOKUP * ExtendedLookup
Definition: heap.h:195
ULONG ArraySize
Definition: heap.h:196
ULONG OutOfRangeItems
Definition: heap.h:199
ULONG ItemCount
Definition: heap.h:198
PLIST_ENTRY * ListHints
Definition: heap.h:203
Definition: heap.h:159
ULONG Allocs
Definition: heap.h:160
ULONG Frees
Definition: heap.h:161
SIZE_T Size
Definition: heap.h:162
HEAP_SEGMENT_MEMBERS
Definition: heap.h:273
Definition: heap.h:149
USHORT TagIndex
Definition: heap.h:153
ULONG Size
Definition: heap.h:152
ULONG Allocs
Definition: heap.h:150
USHORT CreatorBackTraceIndex
Definition: heap.h:154
ULONG Frees
Definition: heap.h:151
WCHAR TagName[24]
Definition: heap.h:155
ULONG CommittThresholdShift
Definition: heap.h:189
SIZE_T MaxPreCommittThreshold
Definition: heap.h:190
LIST_ENTRY SegmentEntry
Definition: heap.h:279
LIST_ENTRY ListEntry
Definition: heap.h:278
SIZE_T CommittedSize
Definition: heap.h:288
LIST_ENTRY ListEntry
Definition: heap.h:286
SIZE_T ReservedSize
Definition: heap.h:287
Definition: heap.h:308
LIST_ENTRY Entry
Definition: heap.h:309
HEAP_ENTRY BusyBlock
Definition: heap.h:313
SIZE_T ReserveSize
Definition: heap.h:312
SIZE_T CommitSize
Definition: heap.h:311
HEAP_ENTRY_EXTRA ExtraStuff
Definition: heap.h:310
Definition: heap.c:52
ULONG Flags
Definition: heap.h:226
USHORT HeaderValidateLength
Definition: heap.h:242
ULONG_PTR PointerKey
Definition: heap.h:231
ULONG Interceptor
Definition: heap.h:232
ULONG VirtualMemoryThreshold
Definition: heap.h:233
HEAP_COUNTERS Counters
Definition: heap.h:265
PRTL_HEAP_COMMIT_ROUTINE CommitRoutine
Definition: heap.h:261
USHORT MaximumTagIndex
Definition: heap.h:245
ULONG EncodeFlagMask
Definition: heap.h:229
ULONG_PTR AlignRound
Definition: heap.h:249
ULONG ForceFlags
Definition: heap.h:227
PVOID UCRIndex
Definition: heap.h:257
PLIST_ENTRY FreeHints[ANYSIZE_ARRAY]
Definition: heap.h:268
USHORT NextAvailableTagIndex
Definition: heap.h:244
SIZE_T TotalFreeSize
Definition: heap.h:239
UCHAR FrontEndHeapType
Definition: heap.h:264
SIZE_T SegmentCommit
Definition: heap.h:236
RTL_BITMAP FreeHintBitmap
Definition: heap.h:267
SIZE_T SegmentReserve
Definition: heap.h:235
ULONG_PTR AlignMask
Definition: heap.h:250
LIST_ENTRY VirtualAllocdBlocks
Definition: heap.h:251
USHORT ProcessHeapsListIndex
Definition: heap.h:241
PHEAP_PSEUDO_TAG_ENTRY PseudoTagEntries
Definition: heap.h:258
LIST_ENTRY FreeLists
Definition: heap.h:259
LIST_ENTRY SegmentList
Definition: heap.h:252
PHEAP_TAG_ENTRY TagEntries
Definition: heap.h:246
ULONG Signature
Definition: heap.h:234
USHORT AllocatorBackTraceIndex
Definition: heap.h:254
SIZE_T MaximumAllocationSize
Definition: heap.h:240
ULONG NonDedicatedListLength
Definition: heap.h:255
LIST_ENTRY UCRSegments
Definition: heap.h:248
HEAP_TUNING_PARAMETERS TuningParameters
Definition: heap.h:266
PVOID BlocksIndex
Definition: heap.h:256
SIZE_T DeCommitFreeBlockThreshold
Definition: heap.h:237
PHEAP_LOCK LockVariable
Definition: heap.h:260
PVOID FrontEndHeap
Definition: heap.h:262
LIST_ENTRY UCRList
Definition: heap.h:247
PVOID HeaderValidateCopy
Definition: heap.h:243
HEAP_ENTRY Encoding
Definition: heap.h:230
HEAP_SEGMENT_MEMBERS
Definition: heap.h:224
USHORT FrontHeapLockCount
Definition: heap.h:263
ULONG CompatibilityFlags
Definition: heap.h:228
SIZE_T DeCommitTotalFreeThreshold
Definition: heap.h:238
struct _HEAP_SEGMENT * Segments[HEAP_SEGMENTS]
Definition: heap.h:253
Definition: typedefs.h:120
ULONG_PTR * PSIZE_T
Definition: typedefs.h:80
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint64_t ULONGLONG
Definition: typedefs.h:67
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_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
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
_In_ BOOLEAN Remove
Definition: psfuncs.h:110
unsigned char UCHAR
Definition: xmlstorage.h:181
__wchar_t WCHAR
Definition: xmlstorage.h:180