25 #ifndef _FXRESOURCE_H_ 26 #define _FXRESOURCE_H_ 30 #if defined(EVENT_TRACING) 31 #include "FxResource.hpp.tmh" 36 #if (FX_CORE_MODE==FX_CORE_USER_MODE) 81 *RegisterTable =
NULL;
88 "Failed to allocate Resource table %!STATUS!",
status);
92 *RegisterTable =
table;
183 "Failed to allocate Resource table %!STATUS!",
status);
350 #if (FX_CORE_MODE==FX_CORE_USER_MODE) 374 #endif // FX_CORE_USER_MODE 385 #if (FX_CORE_MODE==FX_CORE_USER_MODE) 391 #endif // FX_CORE_USER_MODE 421 resList =
new(FxDriverGlobals, ListAttributes)
424 if (resList ==
NULL) {
430 "Failed to allocate FxCmResList, " 431 "returning %!STATUS!",
441 if (
NULL != resList) {
479 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 486 #pragma prefast(suppress:__WARNING_UNEXPECTED_IRQL_CHANGE, "UM has no IRQL") 499 #pragma prefast(suppress:__WARNING_UNEXPECTED_IRQL_CHANGE, "UM has no IRQL") 622 #endif // FX_CORE_USER_MODE 659 *ResourceReqList =
NULL;
664 resReqList =
new(FxDriverGlobals, ListAttributes)
666 if (resReqList ==
NULL) {
671 "Failed to allocate FxIoResReqList, " 672 "returning %!STATUS!",
678 *ResourceReqList = resReqList;
683 if (
NULL != resReqList) {
749 #endif // _FXRESOURCE_H_
BOOLEAN RemoveAndDelete(__in ULONG Index)
VOID SetMappedAddress(__in PVOID SystemBaseAddress, __in SIZE_T MappedLength, __in PVOID UsermodeBaseAddress)
INTERFACE_TYPE m_InterfaceType
DECLARE_INTERNAL_NEW_OPERATOR()
#define FLAG_TO_BOOL(_Flags, _FlagMask)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
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
enum _INTERFACE_TYPE INTERFACE_TYPE
static NTSTATUS _CreateAndInit(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ ULONG Count, _Out_ FxRegisterResourceInfo **RegisterTable)
HRESULT ValidateRegisterSystemBaseAddress(__in PVOID Address, __out PVOID *UsermodeBaseAddress)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
IO_RESOURCE_DESCRIPTOR m_Descriptor
BOOLEAN IsRemoveAllowed(VOID)
VOID DeletePortResourceTable(VOID)
#define UNREFERENCED_PARAMETER(P)
~FxRegisterResourceInfo()
_Must_inspect_result_ NTSTATUS AddAt(__in ULONG Index, __in FxObject *Object)
DECLARE_INTERNAL_NEW_OPERATOR()
IN PVOID IN PVOID IN USHORT IN USHORT Size
GLenum GLsizei GLenum GLenum const GLvoid * table
FxIoResList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxIoResReqList *RequirementsList)
HRESULT ValidateAndClearMapping(__in PVOID Address, __in SIZE_T Length)
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
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)
FxRegisterResourceInfo * m_RegisterResourceTable
FxResourceCm(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PCM_PARTIAL_RESOURCE_DESCRIPTOR Resource)
NTSTATUS BuildPortResourceTable(VOID)
__inline void UnlockResourceTable()
VOID DeleteRegisterResourceTable(VOID)
FxPortResourceInfo * m_PortResourceTable
CM_PARTIAL_RESOURCE_DESCRIPTOR m_Descriptor
BOOLEAN m_HasConnectionResources
_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
CM_PARTIAL_RESOURCE_DESCRIPTOR m_DescriptorClone
HRESULT ValidatePortAddressRange(__in PVOID Address, __in SIZE_T Length)
VOID SetPhysicalAddress(__in PHYSICAL_ADDRESS StartPa, __in SIZE_T Length)
PVOID __inline GetObjectHandle(VOID)
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE CacheType
FxRegisterResourceInfo(VOID)
_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
static NTSTATUS _CreateAndInit(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ ULONG Count, _Out_ FxPortResourceInfo **PortTable)
ULONG m_PortResourceTableSizeCe
NTSTATUS BuildRegisterResourceTable(VOID)
WDFIORESLIST GetHandle(VOID)
IO_RESOURCE_DESCRIPTOR m_DescriptorClone
__inline void LockResourceTable()
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
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
VOID MarkNoDeleteDDI(__in FxObjectLockState State=ObjectLock)
#define _Must_inspect_result_
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
#define TRACE_LEVEL_ERROR
PHYSICAL_ADDRESS m_StartPa
FxResourceIo(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PIO_RESOURCE_DESCRIPTOR Resource)
_Must_inspect_result_ NTSTATUS CheckForConnectionResources(VOID)
WDFIORESREQLIST GetHandle(VOID)
WDFCMRESLIST GetHandle(VOID)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
BOOLEAN IsAddAllowed(VOID)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
HRESULT MapIoSpaceWorker(__in PHYSICAL_ADDRESS PhysicalAddress, __in SIZE_T NumberOfBytes, __in MEMORY_CACHING_TYPE CacheType, __deref_out VOID **PseudoBaseAddress)
#define __drv_strictTypeMatch(mode)
_In_ WDFIORESREQLIST RequirementsList
_Must_inspect_result_ typedef _In_ ULONG TableEntry
VOID DeleteFromFailedCreate(VOID)
FxCmResList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in UCHAR AccessFlags)
ULONG m_RegisterResourceTableSizeCe
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ PCM_RESOURCE_LIST CreateWdmList(__in __drv_strictTypeMatch(__drv_typeExpr) POOL_TYPE PoolType=PagedPool)
VOID ClearMappedAddress(VOID)
FxIoResReqList(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in UCHAR AccessFlags=FxResourceNoAccess)
#define RtlCopyMemory(Destination, Source, Length)
static _Must_inspect_result_ NTSTATUS _CreateAndInit(__in FxIoResReqList **ResourceReqList, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt PWDF_OBJECT_ATTRIBUTES ListAttributes, __in UCHAR AccessFlags)
VOID SetPhysicalAddress(__in PHYSICAL_ADDRESS StartPa, __in SIZE_T Length)
VOID ClearRegisterResourceEntryLocked(__in FxRegisterResourceInfo *Entry)
BOOLEAN HasConnectionResources(VOID)
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)
static SERVICE_STATUS status
base of all file and directory entries
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)
PHYSICAL_ADDRESS m_StartPa
FxIoResReqList * m_OwningList