29#if defined(EVENT_TRACING)
30#include "FxResourceCollection.tmh"
58 "Removes not allowed on handle %p, remove at index %d"
130 "Adds not allowed on handle %p, add at index %d"
204 Object->DeleteFromFailedCreate();
233 pWdmDescriptor = &(*WdmResourceList)->Descriptors[0];
234 count = (*WdmResourceList)->Count;
247 if (pResource ==
NULL) {
320 if (WdmResourceList !=
NULL) {
327 ASSERT(WdmResourceList->Count == 1);
329 count = WdmResourceList->List[0].PartialResourceList.Count;
330 pDescriptor = WdmResourceList->List[0].PartialResourceList.PartialDescriptors;
332 for(
i = 0;
i <
count;
i++, pDescriptor++) {
338 if (pResource ==
NULL) {
387 pWdmResourceList =
NULL;
401 if (pWdmResourceList !=
NULL) {
407 pWdmResourceList->
Count = 1;
430 return pWdmResourceList;
469 sizeof(
pObject->m_Descriptor));
471 return &
pObject->m_DescriptorClone;
510 if (WdmRequirementsList ==
NULL) {
515 pWdmResourceList = &WdmRequirementsList->List[0];
520 for (
i = 0;
i < WdmRequirementsList->AlternativeLists;
i++) {
585 ULONG totalDescriptors;
591 totalDescriptors = 0;
592 pRequirementsList =
NULL;
606 status = RtlULongAdd(totalDescriptors,
674 if (pRequirementsList !=
NULL) {
712 pDescriptor =
pList->Descriptors;
716 pIoResCur != pIoResEnd;
717 pIoResCur = pIoResCur->
Next()) {
731 return pRequirementsList;
735 "Integer overflow occured when computing size of "
736 "IO_RESOURCE_REQUIREMENTS_LIST");
PCM_PARTIAL_RESOURCE_DESCRIPTOR GetDescriptor(__in ULONG Index)
_Must_inspect_result_ PCM_RESOURCE_LIST CreateWdmList(__in __drv_strictTypeMatch(__drv_typeExpr) POOL_TYPE PoolType=PagedPool)
_Must_inspect_result_ NTSTATUS BuildFromWdmList(__in PCM_RESOURCE_LIST ResourceList, __in UCHAR AccessFlags)
FxCollectionEntry * Next(VOID)
BOOLEAN Add(__in FxObject *Item)
_Must_inspect_result_ NTSTATUS BuildFromWdmList(__deref_in PIO_RESOURCE_LIST *WdmResourceList)
FxIoResReqList * m_OwningList
_Must_inspect_result_ PIO_RESOURCE_REQUIREMENTS_LIST CreateWdmList(VOID)
static _Must_inspect_result_ FxIoResReqList * _CreateFromWdmList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PIO_RESOURCE_REQUIREMENTS_LIST WdmRequirementsList, __in UCHAR AccessFlags)
INTERFACE_TYPE m_InterfaceType
_Must_inspect_result_ NTSTATUS AssignParentObject(__in FxObject *ParentObject)
virtual VOID DeleteObject(VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
CM_PARTIAL_RESOURCE_DESCRIPTOR m_Descriptor
BOOLEAN IsRemoveAllowed(VOID)
BOOLEAN RemoveAndDelete(__in ULONG Index)
BOOLEAN IsAddAllowed(VOID)
_Must_inspect_result_ NTSTATUS AddAt(__in ULONG Index, __in FxObject *Object)
IO_RESOURCE_DESCRIPTOR m_Descriptor
static __inline PVOID MxAllocatePoolWithTag(__in POOL_TYPE PoolType, __in SIZE_T NumberOfBytes, __in ULONG Tag)
#define NT_SUCCESS(StatCode)
#define __drv_strictTypeMatch(mode)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
PFX_DRIVER_GLOBALS pFxDriverGlobals
return pObject GetObjectHandle()
FxVerifierDbgBreakPoint(pFxDriverGlobals)
FxIoResReqList * pIoResReqList
GLuint GLuint GLsizei count
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
struct _CM_RESOURCE_LIST * PCM_RESOURCE_LIST
#define _Must_inspect_result_
#define UNREFERENCED_PARAMETER(P)
#define STATUS_ARRAY_BOUNDS_EXCEEDED
#define TRACE_LEVEL_ERROR
_Must_inspect_result_ FxCollectionEntry * FindEntry(__in ULONG Index)
_Must_inspect_result_ FxCollectionEntry * Start(VOID)
NTSTATUS RemoveEntry(__in FxCollectionEntry *Entry)
VOID AddEntry(__in FxCollectionEntry *Node, __in FxObject *Item)
_Must_inspect_result_ FxObject * GetItem(__in ULONG Index)
_Must_inspect_result_ FxCollectionEntry * End(VOID)
_Must_inspect_result_ FxCollectionEntry * AllocateEntry(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
CM_PARTIAL_RESOURCE_LIST PartialResourceList
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
CM_FULL_RESOURCE_DESCRIPTOR List[1]
INTERFACE_TYPE InterfaceType
struct _LIST_ENTRY * Blink
struct _LIST_ENTRY * Flink
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_ACCESS_DENIED
#define STATUS_INSUFFICIENT_RESOURCES
_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
#define WDF_INSERT_AT_END
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
#define WDF_NO_OBJECT_ATTRIBUTES
struct _IO_RESOURCE_LIST * PIO_RESOURCE_LIST
struct _IO_RESOURCE_REQUIREMENTS_LIST * PIO_RESOURCE_REQUIREMENTS_LIST
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST