ReactOS 0.4.17-dev-683-g0dafdc5
arbiter.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Arbitration Library
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: Generic Arbiter Library
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#pragma once
9
10#define TAG_ARBITER 'ibrA'
11
13{
16#if (NTDDI_VERSION >= NTDDI_VISTA)
19#else
22#endif
28
30{
44
45typedef struct _ARBITER_ORDERING
46{
50
52{
57
59
60typedef NTSTATUS
62 _In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
63 _Out_ PUINT64 OutMinimumAddress,
64 _Out_ PUINT64 OutMaximumAddress,
65 _Out_ PUINT64 OutLength,
66 _Out_ PUINT64 OutAlignment
67);
68
69typedef NTSTATUS
71 _In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor,
74);
75
76typedef NTSTATUS
80 _Out_ PUINT64 OutLength
81);
82
83typedef INT32
85 _In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor
86);
87
88#if (NTDDI_VERSION >= NTDDI_VISTA)
89typedef NTSTATUS
91 _In_ PARBITER_INSTANCE Arbiter,
93);
94
95typedef NTSTATUS
97 _In_ PARBITER_INSTANCE Arbiter,
99);
100
101typedef NTSTATUS
103 _In_ PARBITER_INSTANCE Arbiter,
105);
106
107typedef NTSTATUS
109 _In_ PARBITER_INSTANCE Arbiter,
111);
112
113typedef NTSTATUS
115 _In_ PARBITER_INSTANCE Arbiter,
117);
118
119typedef NTSTATUS
121 _In_ PARBITER_INSTANCE Arbiter,
123);
124
125#else
126typedef NTSTATUS
128 _In_ PARBITER_INSTANCE Arbiter,
129 _Inout_ PLIST_ENTRY ArbitrationList
130);
131
132typedef NTSTATUS
134 _In_ PARBITER_INSTANCE Arbiter,
135 _Inout_ PLIST_ENTRY ArbitrationList
136);
137
138typedef NTSTATUS
140 _In_ PARBITER_INSTANCE Arbiter,
141 _Inout_ PLIST_ENTRY ArbitrationList
142);
143
144typedef NTSTATUS
146 _In_ PARBITER_INSTANCE Arbiter,
147 _In_ PLIST_ENTRY ArbitrationList
148);
149
150typedef NTSTATUS
152 _In_ PARBITER_INSTANCE Arbiter,
154 _In_ PIO_RESOURCE_DESCRIPTOR ConflictingResource,
155 _Out_ PULONG ConflictCount,
157);
158
159typedef NTSTATUS
161 _In_ PARBITER_INSTANCE Arbiter,
164);
165#endif // (NTDDI_VERSION >= NTDDI_VISTA)
166
167typedef NTSTATUS
169 _In_ PARBITER_INSTANCE Arbiter
170);
171
172typedef NTSTATUS
174 _In_ PARBITER_INSTANCE Arbiter
175);
176
177typedef NTSTATUS
179 _In_ PARBITER_INSTANCE Arbiter,
180 _In_ PCM_RESOURCE_LIST StartResources
181);
182
183typedef NTSTATUS
185 _In_ PARBITER_INSTANCE Arbiter,
187);
188
189typedef NTSTATUS
191 _In_ PARBITER_INSTANCE Arbiter,
193);
194
195typedef BOOLEAN
197 _In_ PARBITER_INSTANCE Arbiter,
199);
200
201typedef BOOLEAN
203 _In_ PARBITER_INSTANCE Arbiter,
205);
206
207typedef VOID
209 _In_ PARBITER_INSTANCE Arbiter,
211);
212
213typedef VOID
215 _In_ PARBITER_INSTANCE Arbiter,
217);
218
219typedef BOOLEAN
221 _In_ PARBITER_INSTANCE Arbiter,
223);
224
225typedef NTSTATUS
227 _Out_ PIO_RESOURCE_DESCRIPTOR OutIoDescriptor,
228 _In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor
229);
230
231#if (NTDDI_VERSION >= NTDDI_VISTA)
232typedef NTSTATUS
234 _In_ PARBITER_INSTANCE Arbiter,
235 _In_ ULONG DescriptorCount,
237 _Inout_ PRTL_RANGE_LIST RangeList
238);
239#endif
240
241typedef struct _ARBITER_INSTANCE
242{
246#if (NTDDI_VERSION >= NTDDI_VISTA)
247 PCWSTR OrderingName; // Vista+: selects registry AllocationOrder<OrderingName>
248#endif
249 CM_RESOURCE_TYPE ResourceType;
278#if (NTDDI_VERSION >= NTDDI_VISTA)
280#endif
282#if (NTDDI_VERSION >= NTDDI_VISTA)
284#endif
289#if (NTDDI_VERSION >= NTDDI_VISTA) && (NTDDI_VERSION < NTDDI_WINBLUE)
290 WCHAR PdoDescriptionString[336];
291 CHAR PdoSymbolicNameString[672];
292 WCHAR PdoAddressString[1];
293#endif
295
296CODE_SEG("PAGE")
298NTAPI
301 _In_ PDEVICE_OBJECT BusDeviceObject,
302 _In_ CM_RESOURCE_TYPE ResourceType,
303 _In_ PCWSTR ArbiterName,
304 _In_ PCWSTR OrderName,
305 _In_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction
306);
307
308CODE_SEG("PAGE")
309VOID
310NTAPI
312 _In_ PARBITER_INSTANCE Arbiter
313);
314
315CODE_SEG("PAGE")
316VOID
317NTAPI
320);
321
322CODE_SEG("PAGE")
324NTAPI
326 _Inout_ PARBITER_ORDERING_LIST OrderingList,
328 _In_ UINT64 End
329);
330
331CODE_SEG("PAGE")
333NTAPI
336 _In_ PCWSTR AllocationOrderName,
337 _In_ PCWSTR ReservedResourcesName,
338 _In_opt_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction
339);
340
341/* The generic dispatch entry point (installed as ARBITER_INTERFACE.ArbiterHandler). */
342CODE_SEG("PAGE")
344NTAPI
349);
350
351#if (NTDDI_VERSION >= NTDDI_VISTA)
352CODE_SEG("PAGE")
354NTAPI
356 _In_ PARBITER_INSTANCE Arbiter,
358);
359
360CODE_SEG("PAGE")
362NTAPI
364 _In_ PARBITER_INSTANCE Arbiter,
366);
367
368CODE_SEG("PAGE")
370NTAPI
372 _In_ PARBITER_INSTANCE Arbiter,
374);
375
376CODE_SEG("PAGE")
378NTAPI
380 _In_ PARBITER_INSTANCE Arbiter,
382);
383
384#else // (NTDDI_VERSION < NTDDI_VISTA)
385
386CODE_SEG("PAGE")
388NTAPI
390 _In_ PARBITER_INSTANCE Arbiter,
391 _Inout_ PLIST_ENTRY ArbitrationList
392);
393
394CODE_SEG("PAGE")
396NTAPI
398 _In_ PARBITER_INSTANCE Arbiter,
399 _Inout_ PLIST_ENTRY ArbitrationList
400);
401
402CODE_SEG("PAGE")
404NTAPI
406 _In_ PARBITER_INSTANCE Arbiter,
407 _Inout_ PLIST_ENTRY ArbitrationList
408);
409
410CODE_SEG("PAGE")
412NTAPI
414 _In_ PARBITER_INSTANCE Arbiter,
416 _In_ PIO_RESOURCE_DESCRIPTOR ConflictingResource,
417 _Out_ PULONG ConflictCount,
419);
420#endif // (NTDDI_VERSION >= NTDDI_VISTA)
421
422CODE_SEG("PAGE")
424NTAPI
426 _In_ PARBITER_INSTANCE Arbiter
427);
428
429CODE_SEG("PAGE")
431NTAPI
433 _In_ PARBITER_INSTANCE Arbiter
434);
435
436CODE_SEG("PAGE")
438NTAPI
440 _In_ PARBITER_INSTANCE Arbiter,
442);
443
444CODE_SEG("PAGE")
446NTAPI
448 _In_ PARBITER_INSTANCE Arbiter,
450);
451
452CODE_SEG("PAGE")
453VOID
454NTAPI
456 _In_ PARBITER_INSTANCE Arbiter,
458);
459
460CODE_SEG("PAGE")
461VOID
462NTAPI
464 _In_ PARBITER_INSTANCE Arbiter,
466);
#define CODE_SEG(...)
static _Out_opt_ PULONGLONG Start
#define VOID
Definition: acefi.h:82
unsigned short UINT16
Definition: actypes.h:129
unsigned char BOOLEAN
Definition: actypes.h:127
COMPILER_DEPENDENT_UINT64 UINT64
Definition: actypes.h:131
NTSTATUS NTAPI ArbiterLibBootAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_BOOT_ALLOCATION_PARAMETERS Parameters)
Definition: arbiter.c:61
BOOLEAN(NTAPI * PARB_FIND_SUITABLE_RANGE)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.h:202
NTSTATUS(NTAPI * PARB_ALLOCATE_ENTRY)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.h:190
BOOLEAN NTAPI ArbiterLibGetNextAllocationRange(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.c:213
struct _ARBITER_ORDERING_LIST * PARBITER_ORDERING_LIST
NTSTATUS(NTAPI * PARB_ADD_RESERVED)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ADD_RESERVED_PARAMETERS Parameters)
Definition: arbiter.h:120
NTSTATUS(NTAPI * PARB_ROLLBACK_ALLOCATION)(_In_ PARBITER_INSTANCE Arbiter)
Definition: arbiter.h:173
VOID(NTAPI * PARB_ADD_ALLOCATION)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.h:208
struct _ARBITER_ALTERNATIVE * PARBITER_ALTERNATIVE
struct _ARBITER_ALLOCATION_STATE ARBITER_ALLOCATION_STATE
NTSTATUS NTAPI ArbiterLibRetestAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_RETEST_ALLOCATION_PARAMETERS Parameters)
Definition: arbiter.c:42
NTSTATUS(NTAPI * PARB_TRANSLATE_ORDERING)(_Out_ PIO_RESOURCE_DESCRIPTOR OutIoDescriptor, _In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
Definition: arbiter.h:226
struct _ARBITER_ALLOCATION_STATE * PARBITER_ALLOCATION_STATE
NTSTATUS(NTAPI * PARB_INITIALIZE_RANGE_LIST)(_In_ PARBITER_INSTANCE Arbiter, _In_ ULONG DescriptorCount, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptors, _Inout_ PRTL_RANGE_LIST RangeList)
Definition: arbiter.h:233
NTSTATUS NTAPI ArbiterLibTestAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_TEST_ALLOCATION_PARAMETERS Parameters)
Definition: arbiter.c:23
BOOLEAN(NTAPI * PARB_OVERRIDE_CONFLICT)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.h:220
NTSTATUS(NTAPI * PARB_PREPROCESS_ENTRY)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.h:184
VOID NTAPI ArbiterLibBacktrackAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.c:251
BOOLEAN NTAPI ArbiterLibFindSuitableRange(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.c:226
struct _ARBITER_ORDERING * PARBITER_ORDERING
NTSTATUS(NTAPI * PARB_RETEST_ALLOCATION)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_RETEST_ALLOCATION_PARAMETERS Parameters)
Definition: arbiter.h:96
NTSTATUS(NTAPI * PARB_QUERY_ARBITRATE)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_ARBITRATE_PARAMETERS Parameters)
Definition: arbiter.h:108
BOOLEAN(NTAPI * PARB_GET_NEXT_ALLOCATION_RANGE)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.h:196
NTSTATUS NTAPI ArbiterLibCommitAllocation(_In_ PARBITER_INSTANCE Arbiter)
Definition: arbiter.c:138
VOID NTAPI ArbiterLibDeleteInstance(_In_ PARBITER_INSTANCE Arbiter)
Definition: arbiter.c:302
NTSTATUS NTAPI ArbiterLibRollbackAllocation(_In_ PARBITER_INSTANCE Arbiter)
Definition: arbiter.c:150
NTSTATUS(NTAPI * PARB_PACK_RESOURCE)(_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor, _In_ UINT64 Start, _Out_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor)
Definition: arbiter.h:70
NTSTATUS NTAPI ArbiterLibDefaultAssignmentOrdering(_Inout_ PARBITER_INSTANCE Arbiter, _In_ PCWSTR AllocationOrderName, _In_ PCWSTR ReservedResourcesName, _In_opt_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction)
Definition: ordering.c:328
NTSTATUS NTAPI ArbiterLibHandler(_In_ PVOID Context, _In_ ARBITER_ACTION Action, _Inout_ PARBITER_PARAMETERS Parameters)
Definition: arbiter.c:288
struct _ARBITER_ORDERING ARBITER_ORDERING
struct _ARBITER_INSTANCE ARBITER_INSTANCE
struct _ARBITER_INSTANCE * PARBITER_INSTANCE
Definition: arbiter.h:58
NTSTATUS(NTAPI * PARB_UNPACK_RESOURCE)(_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor, _Out_ PUINT64 Start, _Out_ PUINT64 OutLength)
Definition: arbiter.h:77
NTSTATUS(NTAPI * PARB_BOOT_ALLOCATION)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_BOOT_ALLOCATION_PARAMETERS Parameters)
Definition: arbiter.h:102
VOID NTAPI ArbiterLibAddAllocation(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.c:239
struct _ARBITER_ALTERNATIVE ARBITER_ALTERNATIVE
VOID(NTAPI * PARB_BACKTRACK_ALLOCATION)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_ALLOCATION_STATE ArbState)
Definition: arbiter.h:214
VOID NTAPI ArbiterLibFreeOrderingList(_Inout_ PARBITER_ORDERING_LIST OrderingList)
Definition: ordering.c:52
NTSTATUS(NTAPI * PARB_UNPACK_REQUIREMENT)(_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor, _Out_ PUINT64 OutMinimumAddress, _Out_ PUINT64 OutMaximumAddress, _Out_ PUINT64 OutLength, _Out_ PUINT64 OutAlignment)
Definition: arbiter.h:61
NTSTATUS NTAPI ArbiterLibInitializeInstance(_Inout_ PARBITER_INSTANCE Arbiter, _In_ PDEVICE_OBJECT BusDeviceObject, _In_ CM_RESOURCE_TYPE ResourceType, _In_ PCWSTR ArbiterName, _In_ PCWSTR OrderName, _In_ PARB_TRANSLATE_ORDERING TranslateOrderingFunction)
Definition: arbiter.c:349
NTSTATUS(NTAPI * PARB_QUERY_CONFLICT)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_CONFLICT_PARAMETERS Parameters)
Definition: arbiter.h:114
NTSTATUS(NTAPI * PARB_START_ARBITER)(_In_ PARBITER_INSTANCE Arbiter, _In_ PCM_RESOURCE_LIST StartResources)
Definition: arbiter.h:178
NTSTATUS NTAPI ArbiterLibAddOrdering(_Inout_ PARBITER_ORDERING_LIST OrderingList, _In_ UINT64 Start, _In_ UINT64 End)
Definition: ordering.c:70
INT32(NTAPI * PARB_SCORE_REQUIREMENT)(_In_ PIO_RESOURCE_DESCRIPTOR IoDescriptor)
Definition: arbiter.h:84
NTSTATUS NTAPI ArbiterLibQueryConflict(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_QUERY_CONFLICT_PARAMETERS Parameters)
Definition: arbiter.c:100
NTSTATUS(NTAPI * PARB_COMMIT_ALLOCATION)(_In_ PARBITER_INSTANCE Arbiter)
Definition: arbiter.h:168
NTSTATUS(NTAPI * PARB_TEST_ALLOCATION)(_In_ PARBITER_INSTANCE Arbiter, _Inout_ PARBITER_TEST_ALLOCATION_PARAMETERS Parameters)
Definition: arbiter.h:90
struct _ARBITER_ORDERING_LIST ARBITER_ORDERING_LIST
LONG NTSTATUS
Definition: precomp.h:26
unsigned __int64 * PUINT64
Definition: basetsd.h:181
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1157
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
Definition: cdprocs.h:843
#define NTSTATUS
Definition: precomp.h:19
BOOLEAN(NTAPI * PRTL_CONFLICT_RANGE_CALLBACK)(PVOID Context, struct _RTL_RANGE *Range)
Definition: rtltypes.h:705
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
short WCHAR
Definition: pedump.c:58
#define BOOLEAN
Definition: pedump.c:73
char CHAR
Definition: pedump.c:57
_In_ PVOID Context
Definition: storport.h:2269
PARBITER_ALTERNATIVE CurrentAlternative
Definition: arbiter.h:36
UCHAR RangeAvailableAttributes
Definition: arbiter.h:41
PARBITER_ALTERNATIVE Alternatives
Definition: arbiter.h:38
PARBITER_LIST_ENTRY Entry
Definition: arbiter.h:35
PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: arbiter.h:25
PARB_RETEST_ALLOCATION RetestAllocation
Definition: arbiter.h:263
BOOLEAN TransactionInProgress
Definition: arbiter.h:281
PARB_UNPACK_RESOURCE UnpackResource
Definition: arbiter.h:260
ULONG ReferenceCount
Definition: arbiter.h:254
PARB_OVERRIDE_CONFLICT OverrideConflict
Definition: arbiter.h:277
PARB_SCORE_REQUIREMENT ScoreRequirement
Definition: arbiter.h:261
PRTL_RANGE_LIST Allocation
Definition: arbiter.h:250
PKEVENT MutexEvent
Definition: arbiter.h:244
PARB_START_ARBITER StartArbiter
Definition: arbiter.h:270
PARBITER_INTERFACE Interface
Definition: arbiter.h:255
PARB_ALLOCATE_ENTRY AllocateEntry
Definition: arbiter.h:272
PRTL_CONFLICT_RANGE_CALLBACK ConflictCallback
Definition: arbiter.h:288
PDEVICE_OBJECT BusDeviceObject
Definition: arbiter.h:286
CM_RESOURCE_TYPE ResourceType
Definition: arbiter.h:249
PARB_UNPACK_REQUIREMENT UnpackRequirement
Definition: arbiter.h:258
ARBITER_ORDERING_LIST ReservedList
Definition: arbiter.h:253
PARB_QUERY_ARBITRATE QueryArbitrate
Definition: arbiter.h:267
PARB_INITIALIZE_RANGE_LIST InitializeRangeList
Definition: arbiter.h:279
PARB_PREPROCESS_ENTRY PreprocessEntry
Definition: arbiter.h:271
PARB_FIND_SUITABLE_RANGE FindSuitableRange
Definition: arbiter.h:274
PARBITER_ALLOCATION_STATE AllocationStack
Definition: arbiter.h:257
UINT32 Signature
Definition: arbiter.h:243
PARB_GET_NEXT_ALLOCATION_RANGE GetNextAllocationRange
Definition: arbiter.h:273
PARB_BOOT_ALLOCATION BootAllocation
Definition: arbiter.h:266
PVOID ConflictCallbackContext
Definition: arbiter.h:287
ULONG AllocationStackMaxSize
Definition: arbiter.h:256
PARB_ADD_RESERVED AddReserved
Definition: arbiter.h:269
PARB_TEST_ALLOCATION TestAllocation
Definition: arbiter.h:262
PARB_ADD_ALLOCATION AddAllocation
Definition: arbiter.h:275
PCWSTR OrderingName
Definition: arbiter.h:247
PARB_QUERY_CONFLICT QueryConflict
Definition: arbiter.h:268
PRTL_RANGE_LIST PossibleAllocation
Definition: arbiter.h:251
PKEVENT TransactionEvent
Definition: arbiter.h:283
PARB_COMMIT_ALLOCATION CommitAllocation
Definition: arbiter.h:264
ARBITER_ORDERING_LIST OrderingList
Definition: arbiter.h:252
PARB_PACK_RESOURCE PackResource
Definition: arbiter.h:259
PARB_BACKTRACK_ALLOCATION BacktrackAllocation
Definition: arbiter.h:276
PARB_ROLLBACK_ALLOCATION RollbackAllocation
Definition: arbiter.h:265
Definition: iotypes.h:4633
PARBITER_ORDERING Orderings
Definition: arbiter.h:55
UINT64 Start
Definition: arbiter.h:47
Definition: typedefs.h:120
int32_t INT32
Definition: typedefs.h:58
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
unsigned char UCHAR
Definition: typedefs.h:53
#define NTAPI
Definition: typedefs.h:36
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t UINT32
Definition: typedefs.h:59
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
Definition: wdfiotarget.h:510
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
enum _ARBITER_ACTION ARBITER_ACTION