ReactOS  0.4.15-dev-3331-g8ebe441
fxresource.hpp
Go to the documentation of this file.
1 /*++
2 
3 Copyright (c) Microsoft Corporation
4 
5 Module Name:
6 
7  FxResource.hpp
8 
9 Abstract:
10 
11  This module implements the resource object.
12 
13 Author:
14 
15 
16 
17 Environment:
18 
19  Both kernel and user mode
20 
21 Revision History:
22 
23 --*/
24 
25 #ifndef _FXRESOURCE_H_
26 #define _FXRESOURCE_H_
27 
28 extern "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
70  NTSTATUS
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),
105  m_MappedLength(0)
106  {
107  m_StartPa.QuadPart = 0;
108  };
109 
111 
112  VOID
114  __in PHYSICAL_ADDRESS StartPa,
116  )
117  {
118  m_StartPa = StartPa;
119  m_Length = Length;
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
165  NTSTATUS
168  _In_ ULONG Count,
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  {
198  m_StartPa.QuadPart = 0;
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;
212  m_Length = Length;
213  }
214 };
215 
216 #endif
217 
218 //
219 // Used in FilterResourceRequirements, and QueryResourceRequirements
220 //
221 
222 class FxResourceIo : public FxObject {
223 public:
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 
234 public:
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 //
249 class FxResourceCm : public FxObject {
250 public:
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 
261 public:
263  __in PFX_DRIVER_GLOBALS FxDriverGlobals,
265  ) : FxObject(FX_TYPE_RESOURCE_CM, 0, FxDriverGlobals)
266  {
268  }
269 
271 };
272 
278 };
279 
281 protected:
283  __in PFX_DRIVER_GLOBALS FxDriverGlobals,
284  __in WDFTYPE Type,
285  __in USHORT Size,
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  //
293  MarkNoDeleteDDI();
294  }
295 
296 public:
297 
298  BOOLEAN
301  );
302 
304  NTSTATUS
305  AddAt(
306  __in ULONG Index,
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 
342 public:
344 
346 };
347 
349 
350 #if (FX_CORE_MODE==FX_CORE_USER_MODE)
351 protected:
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 
376 protected:
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 
396 public:
397  static
399  NTSTATUS
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  //
416  *ResourceList = NULL;
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 
457  NTSTATUS
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 
506  NTSTATUS
508  VOID
509  );
510 
511  NTSTATUS
513  VOID
514  );
515 
516  VOID
519  __in PVOID SystemMappedAddress,
521  __in PVOID UsermodeMappedAddress
522  );
523 
524  VOID
527  );
528 
529  HRESULT
532  __in SIZE_T Size,
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  {
586  if (m_RegisterResourceTable != NULL) {
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 
609  NTSTATUS
611  VOID
612  );
613 
614  BOOLEAN
616  VOID
617  )
618  {
620  }
621 
622 #endif // FX_CORE_USER_MODE
623 
624 };
625 
627 protected:
629  __in PFX_DRIVER_GLOBALS FxDriverGlobals,
630  __in UCHAR AccessFlags = FxResourceNoAccess
631  ) :
632  FxResourceCollection(FxDriverGlobals,
635  AccessFlags),
637  {
638  m_AccessFlags = AccessFlags;
639  }
640 
641 public:
642 
643  static
645  NTSTATUS
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 
713 public:
715 
717 };
718 
720 public:
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 
740  NTSTATUS
742  __deref_in PIO_RESOURCE_LIST* WdmResourceList
743  );
744 
745 public:
747 };
748 
749 #endif // _FXRESOURCE_H_
#define __deref_in
Definition: specstrings.h:137
BOOLEAN RemoveAndDelete(__in ULONG Index)
VOID SetMappedAddress(__in PVOID SystemBaseAddress, __in SIZE_T MappedLength, __in PVOID UsermodeBaseAddress)
Definition: fxresource.hpp:123
INTERFACE_TYPE m_InterfaceType
Definition: fxresource.hpp:716
DECLARE_INTERNAL_NEW_OPERATOR()
#define FLAG_TO_BOOL(_Flags, _FlagMask)
Definition: fxobject.hpp:125
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
HRESULT ValidateRegisterPhysicalAddressRange(__in PHYSICAL_ADDRESS PhysicalAddress, __in SIZE_T Size, __out FxRegisterResourceInfo **TableEntry)
_Must_inspect_result_ FxCollectionEntry * Start(VOID)
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:339
enum _INTERFACE_TYPE INTERFACE_TYPE
static NTSTATUS _CreateAndInit(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ ULONG Count, _Out_ FxRegisterResourceInfo **RegisterTable)
Definition: fxresource.hpp:71
HRESULT ValidateRegisterSystemBaseAddress(__in PVOID Address, __out PVOID *UsermodeBaseAddress)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
IO_RESOURCE_DESCRIPTOR m_Descriptor
Definition: fxresource.hpp:224
BOOLEAN IsRemoveAllowed(VOID)
Definition: fxresource.hpp:311
#define _Out_
Definition: ms_sal.h:345
VOID DeletePortResourceTable(VOID)
Definition: fxresource.hpp:595
#define __in_opt
Definition: dbghelp.h:38
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
unsigned char * PUCHAR
Definition: retypes.h:3
LONG NTSTATUS
Definition: precomp.h:26
_Must_inspect_result_ NTSTATUS AddAt(__in ULONG Index, __in FxObject *Object)
DECLARE_INTERNAL_NEW_OPERATOR()
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
DriverGlobals
FxIoResList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxIoResReqList *RequirementsList)
Definition: fxresource.hpp:721
HRESULT ValidateAndClearMapping(__in PVOID Address, __in SIZE_T Length)
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:304
HRESULT ValidateRegisterSystemAddressRange(__in PVOID SystemAddress, __in SIZE_T Length, __out_opt PVOID *UsermodeAddress)
FxResourceCollection(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in WDFTYPE Type, __in USHORT Size, __in UCHAR AccessFlags=FxResourceNoAccess)
Definition: fxresource.hpp:282
FxRegisterResourceInfo * m_RegisterResourceTable
Definition: fxresource.hpp:355
FxResourceCm(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PCM_PARTIAL_RESOURCE_DESCRIPTOR Resource)
Definition: fxresource.hpp:262
NTSTATUS BuildPortResourceTable(VOID)
__inline void UnlockResourceTable()
Definition: fxresource.hpp:500
VOID DeleteRegisterResourceTable(VOID)
Definition: fxresource.hpp:581
FxPortResourceInfo * m_PortResourceTable
Definition: fxresource.hpp:361
UCHAR KIRQL
Definition: env_spec_w32.h:591
CM_PARTIAL_RESOURCE_DESCRIPTOR m_Descriptor
Definition: fxresource.hpp:251
BOOLEAN m_HasConnectionResources
Definition: fxresource.hpp:367
#define __out_opt
Definition: dbghelp.h:65
_Must_inspect_result_ _In_ WDFDEVICE _In_ PHYSICAL_ADDRESS _In_ SIZE_T _In_ MEMORY_CACHING_TYPE _Out_ PVOID * PseudoBaseAddress
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
Definition: cdprocs.h:843
#define FALSE
Definition: types.h:117
CM_PARTIAL_RESOURCE_DESCRIPTOR m_DescriptorClone
Definition: fxresource.hpp:259
HRESULT ValidatePortAddressRange(__in PVOID Address, __in SIZE_T Length)
VOID SetPhysicalAddress(__in PHYSICAL_ADDRESS StartPa, __in SIZE_T Length)
Definition: fxresource.hpp:205
PVOID __inline GetObjectHandle(VOID)
Definition: fxobject.hpp:603
#define __out
Definition: dbghelp.h:62
unsigned char BOOLEAN
BOOLEAN IsChanged(VOID)
Definition: fxresource.hpp:335
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE CacheType
Definition: mmfuncs.h:214
static WCHAR Address[46]
Definition: ping.c:68
#define _In_
Definition: ms_sal.h:308
_Must_inspect_result_ PIO_RESOURCE_REQUIREMENTS_LIST CreateWdmList(VOID)
PCM_PARTIAL_RESOURCE_DESCRIPTOR GetDescriptor(__in ULONG Index)
VOID ValidateResourceUnmap(VOID)
_Must_inspect_result_ NTSTATUS BuildFromWdmList(__deref_in PIO_RESOURCE_LIST *WdmResourceList)
MxLock m_ResourceTableLock
Definition: fxresource.hpp:372
static NTSTATUS _CreateAndInit(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ ULONG Count, _Out_ FxPortResourceInfo **PortTable)
Definition: fxresource.hpp:166
int Count
Definition: noreturn.cpp:7
ULONG m_PortResourceTableSizeCe
Definition: fxresource.hpp:362
#define TRACINGDEVICE
Definition: dbgtrace.h:58
NTSTATUS BuildRegisterResourceTable(VOID)
WDFIORESLIST GetHandle(VOID)
Definition: fxresource.hpp:732
#define ASSERT(a)
Definition: mode.c:44
IO_RESOURCE_DESCRIPTOR m_DescriptorClone
Definition: fxresource.hpp:232
__inline void LockResourceTable()
Definition: fxresource.hpp:487
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
LONG HRESULT
Definition: typedefs.h:79
INT POOL_TYPE
Definition: typedefs.h:78
_In_ WDFCOLLECTION _In_ ULONG Index
Type
Definition: Type.h:6
SIZE_T GetResourceLength(__in PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, __out_opt PHYSICAL_ADDRESS *Start)
_Must_inspect_result_ NTSTATUS BuildFromWdmList(__in PCM_RESOURCE_LIST ResourceList, __in UCHAR AccessFlags)
VOID UpdateRegisterResourceEntryLocked(__in FxRegisterResourceInfo *Entry, __in PVOID SystemMappedAddress, __in SIZE_T NumberOfBytes, __in PVOID UsermodeMappedAddress)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1098
unsigned char UCHAR
Definition: xmlstorage.h:181
VOID MarkNoDeleteDDI(__in FxObjectLockState State=ObjectLock)
Definition: fxobject.hpp:1118
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define _Must_inspect_result_
Definition: ms_sal.h:558
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
Definition: mxlock.h:101
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
PHYSICAL_ADDRESS m_StartPa
Definition: fxresource.hpp:152
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define TRACINGPNP
Definition: dbgtrace.h:67
FxResourceIo(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PIO_RESOURCE_DESCRIPTOR Resource)
Definition: fxresource.hpp:235
_Must_inspect_result_ NTSTATUS CheckForConnectionResources(VOID)
unsigned short USHORT
Definition: pedump.c:61
WDFIORESREQLIST GetHandle(VOID)
Definition: fxresource.hpp:691
USHORT WDFTYPE
Definition: fxtypes.h:29
WDFCMRESLIST GetHandle(VOID)
Definition: fxresource.hpp:449
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
BOOLEAN IsAddAllowed(VOID)
Definition: fxresource.hpp:319
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
Definition: iotypes.h:1035
#define NULL
Definition: types.h:112
HRESULT MapIoSpaceWorker(__in PHYSICAL_ADDRESS PhysicalAddress, __in SIZE_T NumberOfBytes, __in MEMORY_CACHING_TYPE CacheType, __deref_out VOID **PseudoBaseAddress)
#define __drv_strictTypeMatch(mode)
Definition: driverspecs.h:329
_In_ WDFIORESREQLIST RequirementsList
Definition: wdfresource.h:65
_Must_inspect_result_ typedef _In_ ULONG TableEntry
Definition: iotypes.h:4303
VOID DeleteFromFailedCreate(VOID)
Definition: fxobject.cpp:391
FxResourceAccessFlags
Definition: fxresource.hpp:273
FxCmResList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in UCHAR AccessFlags)
Definition: fxresource.hpp:377
ULONG m_RegisterResourceTableSizeCe
Definition: fxresource.hpp:356
#define __deref_out
Definition: dbghelp.h:26
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
Definition: wdfdevice.h:3810
unsigned int ULONG
Definition: retypes.h:1
_Must_inspect_result_ PCM_RESOURCE_LIST CreateWdmList(__in __drv_strictTypeMatch(__drv_typeExpr) POOL_TYPE PoolType=PagedPool)
VOID ClearMappedAddress(VOID)
Definition: fxresource.hpp:136
FxIoResReqList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in UCHAR AccessFlags=FxResourceNoAccess)
Definition: fxresource.hpp:628
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
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
#define STATUS_SUCCESS
Definition: shellext.h:65
VOID SetPhysicalAddress(__in PHYSICAL_ADDRESS StartPa, __in SIZE_T Length)
Definition: fxresource.hpp:113
void exit(int exitcode)
Definition: _exit.c:33
PHYSICAL_ADDRESS m_EndPa
Definition: fxresource.hpp:157
VOID ClearRegisterResourceEntryLocked(__in FxRegisterResourceInfo *Entry)
BOOLEAN HasConnectionResources(VOID)
Definition: fxresource.hpp:615
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE
static _Must_inspect_result_ FxIoResReqList * _CreateFromWdmList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PIO_RESOURCE_REQUIREMENTS_LIST WdmRequirementsList, __in UCHAR AccessFlags)
#define __in
Definition: dbghelp.h:35
VOID MarkChanged(VOID)
Definition: fxresource.hpp:327
static SERVICE_STATUS status
Definition: service.c:31
base of all file and directory entries
Definition: entries.h:82
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
LONGLONG QuadPart
Definition: typedefs.h:114
PHYSICAL_ADDRESS m_StartPa
Definition: fxresource.hpp:42
FxIoResReqList * m_OwningList
Definition: fxresource.hpp:746
Definition: ps.c:97