ReactOS 0.4.16-dev-340-g0540c21
fxresource.hpp
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation
4
5Module Name:
6
7 FxResource.hpp
8
9Abstract:
10
11 This module implements the resource object.
12
13Author:
14
15
16
17Environment:
18
19 Both kernel and user mode
20
21Revision History:
22
23--*/
24
25#ifndef _FXRESOURCE_H_
26#define _FXRESOURCE_H_
27
28extern "C" {
29
30#if defined(EVENT_TRACING)
31#include "FxResource.hpp.tmh"
32#endif
33
34}
35
36#if (FX_CORE_MODE==FX_CORE_USER_MODE)
37
39 //
40 // start physical address of resource range assigned by pnp
41 //
43
44 //
45 // start of mapped system base address
46 //
48
49 //
50 // end of mapped system base address
51 //
53
54 //
55 // user-mode mapped address
56 //
58
59 //
60 // Length of resource range assigned by pnp
61 //
63
64 //
65 // Length of mapped resource range
66 //
68
69 static
74 _Out_ FxRegisterResourceInfo** RegisterTable
75 )
76 {
79
80 ASSERT(RegisterTable != NULL);
81 *RegisterTable = NULL;
82
84 if (table == NULL) {
88 "Failed to allocate Resource table %!STATUS!", status);
89 return status;
90 }
91
92 *RegisterTable = table;
94
95 return status;
96 }
97
99 VOID
100 ):
104 m_Length(0),
106 {
108 };
109
111
112 VOID
114 __in PHYSICAL_ADDRESS StartPa,
116 )
117 {
118 m_StartPa = StartPa;
120 }
121
122 VOID
124 __in PVOID SystemBaseAddress,
125 __in SIZE_T MappedLength,
126 __in PVOID UsermodeBaseAddress
127 )
128 {
129 m_StartSystemVa = SystemBaseAddress;
130 m_MappedLength = MappedLength;
131 m_EndSystemVa = ((PUCHAR) m_StartSystemVa) + MappedLength - 1;
132 m_StartUsermodeVa = UsermodeBaseAddress;
133 };
134
135 VOID
137 VOID
138 )
139 {
143 m_MappedLength = 0;
144 };
145
146};
147
149 //
150 // start physical address
151 //
153
154 //
155 // end physical address
156 //
158
159 //
160 // Length of resource
161 //
163
164 static
169 _Out_ FxPortResourceInfo** PortTable
170 )
171 {
174
175 ASSERT(PortTable != NULL);
176 *PortTable = NULL;
177
179 if (table == NULL) {
183 "Failed to allocate Resource table %!STATUS!", status);
184 return status;
185 }
186
187 *PortTable = table;
189
190 return status;
191 }
192
194 VOID
195 ):
196 m_Length(0)
197 {
199 m_EndPa.QuadPart = 0;
200 };
201
203
204 VOID
206 __in PHYSICAL_ADDRESS StartPa,
208 )
209 {
210 m_StartPa = StartPa;
211 m_EndPa.QuadPart = StartPa.QuadPart + Length - 1;
213 }
214};
215
216#endif
217
218//
219// Used in FilterResourceRequirements, and QueryResourceRequirements
220//
221
222class FxResourceIo : public FxObject {
223public:
225
226 //
227 // Clone of m_Descriptor which is returned to the driver writer when it
228 // requests a descriptor pointer. We clone the descriptor so that if the
229 // driver writer attempts to modify the pointer in place, they modify the
230 // clone and not the real descriptor.
231 //
233
234public:
236 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
238 ) : FxObject(FX_TYPE_RESOURCE_IO, 0, FxDriverGlobals)
239 {
241 }
242
244};
245
246//
247// Used in StartDevice
248//
249class FxResourceCm : public FxObject {
250public:
252
253 //
254 // Clone of m_Descriptor which is returned to the driver writer when it
255 // requests a descriptor pointer. We clone the descriptor so that if the
256 // driver writer attempts to modify the pointer in place, they modify the
257 // clone and not the real descriptor.
258 //
260
261public:
263 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
265 ) : FxObject(FX_TYPE_RESOURCE_CM, 0, FxDriverGlobals)
266 {
268 }
269
271};
272
278};
279
281protected:
283 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
286 __in UCHAR AccessFlags = FxResourceNoAccess
287 ) : FxCollection(FxDriverGlobals, Type, Size),
288 m_AccessFlags(AccessFlags), m_Changed(FALSE)
289 {
290 //
291 // Driver cannot delete this or any of its derivations
292 //
294 }
295
296public:
297
298 BOOLEAN
301 );
302
305 AddAt(
308 );
309
310 BOOLEAN
312 VOID
313 )
314 {
316 }
317
318 BOOLEAN
320 VOID
321 )
322 {
324 }
325
326 VOID
328 VOID
329 )
330 {
331 m_Changed = TRUE;
332 }
333
334 BOOLEAN
336 VOID
337 )
338 {
339 return m_Changed;
340 }
341
342public:
344
346};
347
349
350#if (FX_CORE_MODE==FX_CORE_USER_MODE)
351protected:
352 //
353 // Table of mapped register resources
354 //
357
358 //
359 // Table of port resources
360 //
363
364 //
365 // TRUE if we have at least one CmResourceTypeConnection resource.
366 //
368
369 //
370 // Lock to serialize access to port/register resource table
371 //
373
374#endif // FX_CORE_USER_MODE
375
376protected:
378 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
379 __in UCHAR AccessFlags
380 ) : FxResourceCollection(FxDriverGlobals,
383 AccessFlags)
384 {
385#if (FX_CORE_MODE==FX_CORE_USER_MODE)
391#endif // FX_CORE_USER_MODE
392 }
393
394 ~FxCmResList();
395
396public:
397 static
402 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
404 __in_opt PWDF_OBJECT_ATTRIBUTES ListAttributes,
405 __in UCHAR AccessFlags
406 )
407 {
408 NTSTATUS ntStatus;
409 FxCmResList *resList = NULL;
410
412
413 //
414 // Initialize
415 //
417
418 //
419 // Allocate a new resource list object
420 //
421 resList = new(FxDriverGlobals, ListAttributes)
422 FxCmResList(FxDriverGlobals, AccessFlags);
423
424 if (resList == NULL) {
425
427
428 DoTraceLevelMessage(FxDriverGlobals, TRACE_LEVEL_ERROR,
430 "Failed to allocate FxCmResList, "
431 "returning %!STATUS!",
432 ntStatus);
433 goto exit;
434 }
435
436 *ResourceList = resList;
437 ntStatus = STATUS_SUCCESS;
438
439 exit:
440 if (!NT_SUCCESS(ntStatus)) {
441 if (NULL != resList) {
442 resList->DeleteFromFailedCreate();
443 }
444 }
445 return ntStatus;
446 }
447
448 WDFCMRESLIST
450 VOID
451 )
452 {
453 return (WDFCMRESLIST) GetObjectHandle();
454 }
455
460 __in UCHAR AccessFlags
461 );
462
467 );
468
469 ULONG
470 GetCount(
471 VOID
472 );
473
477 );
478
479#if (FX_CORE_MODE == FX_CORE_USER_MODE)
480
481 //
482 // Lock functions used internally
483 //
484 __inline
485 void
486#pragma prefast(suppress:__WARNING_UNEXPECTED_IRQL_CHANGE, "UM has no IRQL")
488 )
489 {
490 KIRQL oldIrql;
491
492 m_ResourceTableLock.Acquire(&oldIrql);
493
494 UNREFERENCED_PARAMETER(oldIrql);
495 }
496
497 __inline
498 void
499#pragma prefast(suppress:__WARNING_UNEXPECTED_IRQL_CHANGE, "UM has no IRQL")
501 )
502 {
504 }
505
508 VOID
509 );
510
513 VOID
514 );
515
516 VOID
519 __in PVOID SystemMappedAddress,
521 __in PVOID UsermodeMappedAddress
522 );
523
524 VOID
527 );
528
529 HRESULT
534 );
535
536 HRESULT
539 __out PVOID* UsermodeBaseAddress
540 );
541
542 HRESULT
544 __in PVOID SystemAddress,
546 __out_opt PVOID* UsermodeAddress
547 );
548
549 HRESULT
553 );
554
555 HRESULT
559 );
560
561 SIZE_T
565 );
566
567 HRESULT
573 );
574
575 VOID
577 VOID
578 );
579
580 VOID
582 VOID
583 )
584 {
587 delete [] m_RegisterResourceTable;
590 }
592 }
593
594 VOID
596 VOID
597 )
598 {
600 if (m_PortResourceTable != NULL) {
601 delete [] m_PortResourceTable;
604 }
606 }
607
611 VOID
612 );
613
614 BOOLEAN
616 VOID
617 )
618 {
620 }
621
622#endif // FX_CORE_USER_MODE
623
624};
625
627protected:
629 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
630 __in UCHAR AccessFlags = FxResourceNoAccess
631 ) :
632 FxResourceCollection(FxDriverGlobals,
635 AccessFlags),
637 {
638 m_AccessFlags = AccessFlags;
639 }
640
641public:
642
643 static
647 __in FxIoResReqList** ResourceReqList,
648 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
649 __in_opt PWDF_OBJECT_ATTRIBUTES ListAttributes,
650 __in UCHAR AccessFlags
651 )
652 {
653 NTSTATUS ntStatus;
654 FxIoResReqList *resReqList = NULL;
655
656 //
657 // Initialize
658 //
659 *ResourceReqList = NULL;
660
661 //
662 // Allocate a new resource list object
663 //
664 resReqList = new(FxDriverGlobals, ListAttributes)
665 FxIoResReqList(FxDriverGlobals, AccessFlags);
666 if (resReqList == NULL) {
668
669 DoTraceLevelMessage(FxDriverGlobals, TRACE_LEVEL_ERROR,
671 "Failed to allocate FxIoResReqList, "
672 "returning %!STATUS!",
673 ntStatus);
674
675 goto exit;
676 }
677
678 *ResourceReqList = resReqList;
679 ntStatus = STATUS_SUCCESS;
680
681 exit:
682 if (!NT_SUCCESS(ntStatus)) {
683 if (NULL != resReqList) {
684 resReqList->DeleteFromFailedCreate();
685 }
686 }
687 return ntStatus;
688 }
689
690 WDFIORESREQLIST
692 VOID
693 )
694 {
695 return (WDFIORESREQLIST) GetObjectHandle();
696 }
697
698 static
702 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
703 __in PIO_RESOURCE_REQUIREMENTS_LIST WdmRequirementsList,
704 __in UCHAR AccessFlags
705 );
706
710 VOID
711 );
712
713public:
715
717};
718
720public:
722 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
724 ) :
727 {
728 m_AccessFlags = RequirementsList->m_AccessFlags;
729 }
730
731 WDFIORESLIST
733 VOID
734 )
735 {
736 return (WDFIORESLIST) GetObjectHandle();
737 }
738
742 __deref_in PIO_RESOURCE_LIST* WdmResourceList
743 );
744
745public:
747};
748
749#endif // _FXRESOURCE_H_
unsigned char BOOLEAN
Type
Definition: Type.h:7
LONG NTSTATUS
Definition: precomp.h:26
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
Definition: cdprocs.h:843
HRESULT ValidatePortAddressRange(__in PVOID Address, __in SIZE_T Length)
VOID DeletePortResourceTable(VOID)
Definition: fxresource.hpp:595
static _Must_inspect_result_ NTSTATUS _CreateAndInit(__in FxCmResList **ResourceList, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in CfxDevice *Device, __in_opt PWDF_OBJECT_ATTRIBUTES ListAttributes, __in UCHAR AccessFlags)
Definition: fxresource.hpp:400
BOOLEAN m_HasConnectionResources
Definition: fxresource.hpp:367
PCM_PARTIAL_RESOURCE_DESCRIPTOR GetDescriptor(__in ULONG Index)
VOID ValidateResourceUnmap(VOID)
FxRegisterResourceInfo * m_RegisterResourceTable
Definition: fxresource.hpp:355
_Must_inspect_result_ PCM_RESOURCE_LIST CreateWdmList(__in __drv_strictTypeMatch(__drv_typeExpr) POOL_TYPE PoolType=PagedPool)
HRESULT ValidateAndClearMapping(__in PVOID Address, __in SIZE_T Length)
NTSTATUS BuildPortResourceTable(VOID)
HRESULT ValidateRegisterSystemBaseAddress(__in PVOID Address, __out PVOID *UsermodeBaseAddress)
SIZE_T GetResourceLength(__in PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, __out_opt PHYSICAL_ADDRESS *Start)
VOID DeleteRegisterResourceTable(VOID)
Definition: fxresource.hpp:581
WDFCMRESLIST GetHandle(VOID)
Definition: fxresource.hpp:449
HRESULT ValidateRegisterPhysicalAddressRange(__in PHYSICAL_ADDRESS PhysicalAddress, __in SIZE_T Size, __out FxRegisterResourceInfo **TableEntry)
ULONG m_RegisterResourceTableSizeCe
Definition: fxresource.hpp:356
FxPortResourceInfo * m_PortResourceTable
Definition: fxresource.hpp:361
HRESULT ValidateRegisterSystemAddressRange(__in PVOID SystemAddress, __in SIZE_T Length, __out_opt PVOID *UsermodeAddress)
__inline void LockResourceTable()
Definition: fxresource.hpp:487
FxCmResList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in UCHAR AccessFlags)
Definition: fxresource.hpp:377
_Must_inspect_result_ NTSTATUS CheckForConnectionResources(VOID)
ULONG m_PortResourceTableSizeCe
Definition: fxresource.hpp:362
HRESULT MapIoSpaceWorker(__in PHYSICAL_ADDRESS PhysicalAddress, __in SIZE_T NumberOfBytes, __in MEMORY_CACHING_TYPE CacheType, __deref_out VOID **PseudoBaseAddress)
NTSTATUS BuildRegisterResourceTable(VOID)
BOOLEAN HasConnectionResources(VOID)
Definition: fxresource.hpp:615
MxLock m_ResourceTableLock
Definition: fxresource.hpp:372
VOID UpdateRegisterResourceEntryLocked(__in FxRegisterResourceInfo *Entry, __in PVOID SystemMappedAddress, __in SIZE_T NumberOfBytes, __in PVOID UsermodeMappedAddress)
_Must_inspect_result_ NTSTATUS BuildFromWdmList(__in PCM_RESOURCE_LIST ResourceList, __in UCHAR AccessFlags)
VOID ClearRegisterResourceEntryLocked(__in FxRegisterResourceInfo *Entry)
__inline void UnlockResourceTable()
Definition: fxresource.hpp:500
WDFIORESLIST GetHandle(VOID)
Definition: fxresource.hpp:732
_Must_inspect_result_ NTSTATUS BuildFromWdmList(__deref_in PIO_RESOURCE_LIST *WdmResourceList)
FxIoResReqList * m_OwningList
Definition: fxresource.hpp:746
FxIoResList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxIoResReqList *RequirementsList)
Definition: fxresource.hpp:721
_Must_inspect_result_ PIO_RESOURCE_REQUIREMENTS_LIST CreateWdmList(VOID)
static _Must_inspect_result_ NTSTATUS _CreateAndInit(__in FxIoResReqList **ResourceReqList, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt PWDF_OBJECT_ATTRIBUTES ListAttributes, __in UCHAR AccessFlags)
Definition: fxresource.hpp:646
static _Must_inspect_result_ FxIoResReqList * _CreateFromWdmList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PIO_RESOURCE_REQUIREMENTS_LIST WdmRequirementsList, __in UCHAR AccessFlags)
INTERFACE_TYPE m_InterfaceType
Definition: fxresource.hpp:716
WDFIORESREQLIST GetHandle(VOID)
Definition: fxresource.hpp:691
FxIoResReqList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in UCHAR AccessFlags=FxResourceNoAccess)
Definition: fxresource.hpp:628
VOID MarkNoDeleteDDI(__in FxObjectLockState State=ObjectLock)
Definition: fxobject.hpp:1118
VOID DeleteFromFailedCreate(VOID)
Definition: fxobject.cpp:391
CM_PARTIAL_RESOURCE_DESCRIPTOR m_DescriptorClone
Definition: fxresource.hpp:259
DECLARE_INTERNAL_NEW_OPERATOR()
FxResourceCm(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PCM_PARTIAL_RESOURCE_DESCRIPTOR Resource)
Definition: fxresource.hpp:262
CM_PARTIAL_RESOURCE_DESCRIPTOR m_Descriptor
Definition: fxresource.hpp:251
BOOLEAN IsChanged(VOID)
Definition: fxresource.hpp:335
FxResourceCollection(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in WDFTYPE Type, __in USHORT Size, __in UCHAR AccessFlags=FxResourceNoAccess)
Definition: fxresource.hpp:282
BOOLEAN IsRemoveAllowed(VOID)
Definition: fxresource.hpp:311
BOOLEAN RemoveAndDelete(__in ULONG Index)
BOOLEAN IsAddAllowed(VOID)
Definition: fxresource.hpp:319
_Must_inspect_result_ NTSTATUS AddAt(__in ULONG Index, __in FxObject *Object)
VOID MarkChanged(VOID)
Definition: fxresource.hpp:327
IO_RESOURCE_DESCRIPTOR m_Descriptor
Definition: fxresource.hpp:224
DECLARE_INTERNAL_NEW_OPERATOR()
FxResourceIo(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PIO_RESOURCE_DESCRIPTOR Resource)
Definition: fxresource.hpp:235
IO_RESOURCE_DESCRIPTOR m_DescriptorClone
Definition: fxresource.hpp:232
Definition: mxlock.h:102
#define __out_opt
Definition: dbghelp.h:65
#define __in
Definition: dbghelp.h:35
#define __deref_out
Definition: dbghelp.h:26
#define __in_opt
Definition: dbghelp.h:38
#define __out
Definition: dbghelp.h:62
#define TRACINGPNP
Definition: dbgtrace.h:67
#define TRACINGDEVICE
Definition: dbgtrace.h:58
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define __drv_strictTypeMatch(mode)
Definition: driverspecs.h:330
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define PagedPool
Definition: env_spec_w32.h:308
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
return pObject GetObjectHandle()
_Must_inspect_result_ _In_ WDFDEVICE _In_ PHYSICAL_ADDRESS _In_ SIZE_T _In_ MEMORY_CACHING_TYPE _Out_ PVOID * PseudoBaseAddress
DriverGlobals
return pTarget Start()
#define FLAG_TO_BOOL(_Flags, _FlagMask)
Definition: fxobject.hpp:125
FxResourceAccessFlags
Definition: fxresource.hpp:273
@ FxResourceNoAccess
Definition: fxresource.hpp:274
@ FxResourceRemoveAllowed
Definition: fxresource.hpp:276
@ FxResourceAllAccessAllowed
Definition: fxresource.hpp:277
@ FxResourceAddAllowed
Definition: fxresource.hpp:275
return pList GetCount()
USHORT WDFTYPE
Definition: fxtypes.h:29
@ FX_TYPE_IO_RES_REQ_LIST
Definition: fxtypes.h:90
@ FX_TYPE_IO_RES_LIST
Definition: fxtypes.h:88
@ FX_TYPE_CM_RES_LIST
Definition: fxtypes.h:89
@ FX_TYPE_RESOURCE_CM
Definition: fxtypes.h:70
@ FX_TYPE_RESOURCE_IO
Definition: fxtypes.h:69
@ Internal
Definition: hwresource.cpp:137
enum _INTERFACE_TYPE INTERFACE_TYPE
#define ASSERT(a)
Definition: mode.c:44
#define _Must_inspect_result_
Definition: no_sal2.h:62
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
int Count
Definition: noreturn.cpp:7
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:325
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
unsigned short USHORT
Definition: pedump.c:61
static WCHAR Address[46]
Definition: ping.c:68
#define exit(n)
Definition: config.h:202
#define STATUS_SUCCESS
Definition: shellext.h:65
#define __deref_in
Definition: specstrings.h:137
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
base of all file and directory entries
Definition: entries.h:83
VOID SetPhysicalAddress(__in PHYSICAL_ADDRESS StartPa, __in SIZE_T Length)
Definition: fxresource.hpp:205
static NTSTATUS _CreateAndInit(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ ULONG Count, _Out_ FxPortResourceInfo **PortTable)
Definition: fxresource.hpp:166
PHYSICAL_ADDRESS m_EndPa
Definition: fxresource.hpp:157
PHYSICAL_ADDRESS m_StartPa
Definition: fxresource.hpp:152
static NTSTATUS _CreateAndInit(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ ULONG Count, _Out_ FxRegisterResourceInfo **RegisterTable)
Definition: fxresource.hpp:71
VOID SetPhysicalAddress(__in PHYSICAL_ADDRESS StartPa, __in SIZE_T Length)
Definition: fxresource.hpp:113
VOID ClearMappedAddress(VOID)
Definition: fxresource.hpp:136
PHYSICAL_ADDRESS m_StartPa
Definition: fxresource.hpp:42
VOID SetMappedAddress(__in PVOID SystemBaseAddress, __in SIZE_T MappedLength, __in PVOID UsermodeBaseAddress)
Definition: fxresource.hpp:123
Definition: ps.c:97
INT POOL_TYPE
Definition: typedefs.h:78
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
LONGLONG QuadPart
Definition: typedefs.h:114
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3815
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:309
_In_ WDFIORESREQLIST RequirementsList
Definition: wdfresource.h:65
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:342
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1098
_Must_inspect_result_ typedef _In_ ULONG TableEntry
Definition: iotypes.h:4303
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
Definition: iotypes.h:1036
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE CacheType
Definition: mmfuncs.h:217
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE
unsigned char UCHAR
Definition: xmlstorage.h:181