28#include "FxDeviceUm.tmh"
64 IWudfDevice2* device2;
71 return (
FxDevice *)device2->GetContext();
88 if (
DeviceInit->Fdo.EventCallbacks.EvtDeviceFilterAddResourceRequirements !=
NULL &&
89 DeviceInit->Fdo.EventCallbacks.EvtDeviceRemoveAddedResources ==
NULL) {
95 "Must set EvtDeviceRemoveAddedResources if "
96 "EvtDeviceFilterAddResourceRequirements (%p) is set",
97 DeviceInit->Fdo.EventCallbacks.EvtDeviceFilterAddResourceRequirements);
165 if (
DeviceInit->Fdo.EventCallbacks.Size != 0) {
199 FX_VERIFY(DRIVER(BadArgument,
TODO), CHECK_NULL(attachedDevice));
345 ULONG characteristics;
349 IWudfDevice2* pNewDeviceObject2;
350 IWudfDeviceStack2* pDevStack2;
368 characteristics =
DeviceInit->Characteristics;
378 (
PVOID*)&pDevStack2);
399 (
PVOID*)&pNewDeviceObject);
400 FX_VERIFY(INTERNAL, CHECK_QI(
hr, pNewDeviceObject));
426 status = pNewDeviceObject2->InitializeEventForRemoveLock(
438 pNewDeviceObject2->SetContext(
this);
523 "Deleting !devobj %p, WDFDEVICE %p, attached to !devobj %p",
556 "Deleting !devobj %p, WDFDEVICE %p, attached to !devobj %p",
595 _Out_ UMINT::WDF_DEVICE_IO_BUFFER_RETRIEVAL *RetrievalMode,
624 *RetrievalMode =
device->GetRetrievalMode();
625 *RWPreference =
device->GetPreferredRWTransferMode();
626 *IoctlPreference =
device->GetPreferredIoctlTransferMode();
725 if (
Action == ActionInvalid) {
729 if ((
Action == QueryS0Idle ||
Action == QuerySxWake) && QueryResult ==
NULL) {
735 case SetS0IdleEnable:
738 case SetS0IdleDisable:
741 case SetSxWakeEnable:
744 case SetSxWakeDisable:
813 m_PoxInterface.PowerRequiredCallbackInvoked();
822 m_PoxInterface.PowerNotRequiredCallbackInvoked();
827 _In_ IWudfDeviceStack * DevStack,
831 PUMDF_VERSION_DATA driverVersion = DevStack->GetMinDriverVersion();
832 BOOL preserveCompat =
833 DevStack->ShouldPreserveIrpCompletionStatusCompatibility();
835 return CHostFxUtil::NtStatusFromHr(Hr,
836 driverVersion->MajorNumber,
837 driverVersion->MinorNumber,
867 "Failed to open hw registry key to read hw access settings");
884 if (((WDF_DIRECT_HARDWARE_ACCESS_TYPE)
data) < WdfDirectHardwareAccessMax) {
892 "invalid direct hardware access value in registry %u",
893 (WDF_DIRECT_HARDWARE_ACCESS_TYPE)
data);
898 "Failed to read direct hardware access value in registry");
917 if (((WDF_REGISTER_ACCESS_MODE_TYPE)
data) < WdfRegisterAccessMax) {
925 "Invalid Register Access mode value in registry %u",
926 (WDF_REGISTER_ACCESS_MODE_TYPE)
data);
931 "Failed to read Register Access mode value in registry");
949 if (((WDF_FILE_OBJECT_POLICY_TYPE)
data) < WdfFileObjectPolicyMax) {
957 "Invalid File object Policy value in registry %u",
958 (WDF_FILE_OBJECT_POLICY_TYPE)
data);
963 "Failed to read File Object Policy value in registry");
981 if (((WDF_FS_CONTEXT_USE_POLICY_TYPE)
data) < WdfFsContextUsePolicyMax) {
989 "Invalid Fs Context Use Policy value in registry %u",
990 (WDF_FILE_OBJECT_POLICY_TYPE)
data);
995 "Failed to read Fs Context Use Policy value in registry");
1004 if (
NULL != wudfKey) {
1014 _In_ IWudfDeviceStack* DeviceStack,
1024 UMINT::WDF_PROPERTY_STORE_ROOT
root;
1025 UMINT::WDF_PROPERTY_STORE_RETRIEVE_FLAGS
flags = UMINT::WdfPropertyStoreNormal;
1031 #define WDF_REGKEY_DEVICE_SUBKEY 256
1032 #define WDF_REGKEY_DRIVER_SUBKEY 256
1034 root.LengthCb =
sizeof(UMINT::WDF_PROPERTY_STORE_ROOT);
1042 root.RootClass = UMINT::WdfPropertyStoreRootClassHardwareKey;
1046 root.Qualifier.HardwareKey.ServiceName = DriverName;
1047 flags = UMINT::WdfPropertyStoreCreateIfMissing;
1051 root.Qualifier.HardwareKey.ServiceName = WDF_PROPERTY_STORE_HARDWARE_KEY_ROOT;
1056 root.RootClass = UMINT::WdfPropertyStoreRootClassSoftwareKey;
1060 subpath = DriverName;
1061 flags = UMINT::WdfPropertyStoreCreateIfMissing;
1070 root.RootClass = UMINT::WdfPropertyStoreRootClassLegacyHardwareKey;
1075 flags = UMINT::WdfPropertyStoreCreateVolatile;
1078 root.Qualifier.LegacyHardwareKey.LegacyMapName = DriverName;
1081 hr = ((IWudfDeviceStack*)DeviceStack)->CreateRegistryEntry(&
root,
1111 GUID guidBuffer = {0};
1112 ULONG guidChLen = 2 + 4 + 32 + 1;
1118 ULONG resultLen = 0;
1120 UMINT::WDF_PROPERTY_STORE_ROOT rootSpecifier;
1121 rootSpecifier.LengthCb =
sizeof(UMINT::WDF_PROPERTY_STORE_ROOT);
1122 rootSpecifier.RootClass = UMINT::WdfPropertyStoreRootClassHardwareKey;
1123 rootSpecifier.Qualifier.HardwareKey.ServiceName =
NULL;
1131 propKey = &DEVPKEY_Device_DeviceDesc;
1134 propKey = &DEVPKEY_Device_HardwareIds;
1137 propKey = &DEVPKEY_Device_CompatibleIds;
1146 propKey = &DEVPKEY_Device_Class;
1149 propKey = &DEVPKEY_Device_ClassGuid;
1150 convertGuidToString =
TRUE;
1153 propKey = &DEVPKEY_NAME;
1156 propKey = &DEVPKEY_Device_Manufacturer;
1159 propKey = &DEVPKEY_Device_FriendlyName;
1162 propKey = &DEVPKEY_Device_LocationInfo;
1165 propKey = &DEVPKEY_Device_PDOName;
1168 propKey = &DEVPKEY_Device_BusTypeGuid;
1171 propKey = &DEVPKEY_Device_LegacyBusType;
1174 propKey = &DEVPKEY_Device_BusNumber;
1177 propKey = &DEVPKEY_Device_EnumeratorName;
1180 propKey = &DEVPKEY_Device_Address;
1183 propKey = &DEVPKEY_Device_UINumber;
1186 propKey = &DEVPKEY_Device_InstallState;
1189 propKey = &DEVPKEY_Device_RemovalPolicy;
1198 propKey = &DEVPKEY_Device_ContainerId;
1199 convertGuidToString =
TRUE;
1203 FX_VERIFY(DRIVER(BadArgument,
TODO), CHECK_NOT_NULL(propKey));
1205 if (convertGuidToString)
1208 bufferLen =
sizeof(
GUID);
1211 hr = ((IWudfDeviceStack*)DeviceStack)->GetUnifiedPropertyData(&rootSpecifier,
1228 if (convertGuidToString)
1238 L"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
1239 guidBuffer.Data1, guidBuffer.Data2, guidBuffer.Data3,
1240 guidBuffer.Data4[0], guidBuffer.Data4[1],
1241 guidBuffer.Data4[2], guidBuffer.Data4[3],
1242 guidBuffer.Data4[4], guidBuffer.Data4[5],
1243 guidBuffer.Data4[6], guidBuffer.Data4[7]);
1262 *
ResultLength = convertGuidToString ? guidCbLen : resultLen;
1314 "WDFDEVICE %p allocate buffer for symbolic name failed, %!STATUS!",
1334 "WDFDEVICE %p create symbolic link failed, %!STATUS!",
1375 UMINT::WDF_PROPERTY_STORE_ROOT rootSpecifier = {0};
1378 PWDF_DEVICE_INTERFACE_PROPERTY_DATA interfaceData =
1381 rootSpecifier.LengthCb =
sizeof(UMINT::WDF_PROPERTY_STORE_ROOT);
1382 rootSpecifier.RootClass = UMINT::WdfPropertyStoreRootClassDeviceInterfaceKey;
1383 rootSpecifier.Qualifier.DeviceInterfaceKey.InterfaceGUID =
1384 interfaceData->InterfaceClassGUID;
1385 if (interfaceData->ReferenceString !=
NULL) {
1386 rootSpecifier.Qualifier.DeviceInterfaceKey.ReferenceString =
1387 interfaceData->ReferenceString->Buffer;
1389 propertyKey = interfaceData->PropertyKey;
1390 lcid = interfaceData->Lcid;
1391 flags = interfaceData->Flags;
1399 rootSpecifier.LengthCb =
sizeof(UMINT::WDF_PROPERTY_STORE_ROOT);
1400 rootSpecifier.RootClass = UMINT::WdfPropertyStoreRootClassHardwareKey;
1402 lcid = deviceData->
Lcid;
1420 "WDFDEVICE %p failed to assign interface property, %!STATUS!",
1464 driverName =
Device->m_DeviceKeyPath;
1563 ULONG requiredLength = 0;
1567 IWudfDeviceStack* devStack;
1585 devStack =
Device->m_DevStack;
1588 UMINT::WDF_PROPERTY_STORE_ROOT rootSpecifier = {0};
1591 PWDF_DEVICE_INTERFACE_PROPERTY_DATA interfaceData =
1594 rootSpecifier.LengthCb =
sizeof(UMINT::WDF_PROPERTY_STORE_ROOT);
1595 rootSpecifier.RootClass = UMINT::WdfPropertyStoreRootClassDeviceInterfaceKey;
1596 rootSpecifier.Qualifier.DeviceInterfaceKey.InterfaceGUID =
1597 interfaceData->InterfaceClassGUID;
1598 if (interfaceData->ReferenceString !=
NULL) {
1599 rootSpecifier.Qualifier.DeviceInterfaceKey.ReferenceString =
1600 interfaceData->ReferenceString->Buffer;
1602 propertyKey = interfaceData->PropertyKey;
1603 lcid = interfaceData->Lcid;
1604 flags = interfaceData->Flags;
1612 rootSpecifier.LengthCb =
sizeof(UMINT::WDF_PROPERTY_STORE_ROOT);
1613 rootSpecifier.RootClass = UMINT::WdfPropertyStoreRootClassHardwareKey;
1615 lcid = deviceData->
Lcid;
1619 hr = devStack->GetUnifiedPropertyData(&rootSpecifier,
1642 "Query for unified property buffer failed, %!STATUS!",
1700 if (
PropertyData->Size !=
sizeof(WDF_DEVICE_INTERFACE_PROPERTY_DATA)) {
1703 "PropertyData size (%d) incorrect, expected %d, %!STATUS!",
1705 sizeof(WDF_DEVICE_INTERFACE_PROPERTY_DATA),
status);
1734 "WDFDEVICE %p cannot assign interface property for an interface not"
1735 " yet registered with WDF, %!STATUS!",
1749 UMINT::WDF_DEVICE_IO_BUFFER_RETRIEVAL retrievalMode;
1780 "Handle to hardware key not yet available");
1791 "Failed to open hw registry key to read hw access settings");
1808 if (((WDF_KERNEL_MODE_CLIENT_POLICY_TYPE)
Data) == WdfAllowKernelModeClients) {
1809 DeviceRegInfo->IsKernelModeClientAllowed =
TRUE;
1814 "Failed to read kernel mode client policy value in registry");
1829 if (((WDF_FILE_OBJECT_POLICY_TYPE)
Data) == WdfAllowNullAndUnknownFileObjects) {
1830 DeviceRegInfo->IsNullFileObjectAllowed =
TRUE;
1835 "Failed to read file object policy value in registry");
1850 if (((WDF_METHOD_NEITHER_ACTION_TYPE)
Data) == WdfMethodNeitherAction_Copy) {
1851 DeviceRegInfo->IsMethodNeitherActionCopy =
TRUE;
1856 "Failed to read method neither action value in registry");
1871 if (((WDF_PROCESS_SHARING_TYPE)
Data) == WdfProcessSharingDisabled) {
1872 DeviceRegInfo->IsHostProcessSharingDisabled =
TRUE;
1877 "Failed to read method neither action value in registry");
1899 "Failed to allocate memory for string buffer");
1934 "Failed to read Group id value in registry");
1940 if (
NULL != wudfKey) {
#define RegCloseKey(hKey)
MxDeviceObject m_AttachedDevice
__inline MxDeviceObject * GetMxDeviceObject(VOID)
MxDeviceObject m_DeviceObject
MxDeviceObject m_PhysicalDevice
static _Must_inspect_result_ NTSTATUS _QueryProperty(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _In_opt_ PWDFDEVICE_INIT DeviceInit, _In_opt_ FxDevice *Device, _In_opt_ MdDeviceObject RemotePdo, _In_ DEVICE_REGISTRY_PROPERTY DeviceProperty, _In_ ULONG BufferLength, _Out_opt_ PVOID PropertyBuffer, _Out_opt_ PULONG ResultLength)
virtual _Must_inspect_result_ NTSTATUS AllocateDmaEnablerList(VOID)
WDF_REGISTER_ACCESS_MODE_TYPE m_RegisterAccessMode
NTSTATUS CreateSymbolicLink(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _In_ PCUNICODE_STRING SymbolicLinkName)
static BOOL TransportQueryId(_In_ IWudfDevice *DeviceObject, _In_ DWORD Id, _In_ PVOID DataBuffer, _In_ SIZE_T cbDataBufferSize)
static WUDF_INTERFACE_CONTEXT RemoteInterfaceArrival(_In_ IWudfDevice *DeviceObject, _In_ LPCGUID DeviceInterfaceGuid, _In_ PCWSTR SymbolicLink)
VOID DeleteSymbolicLink(VOID)
VOID DestructorInternal(VOID)
virtual VOID AddChildList(__inout FxChildList *List)
_Must_inspect_result_ NTSTATUS SetFilter(__in BOOLEAN Value)
__inline FxPkgFdo * GetFdoPkg(VOID)
VOID GetDeviceStackIoType(_Out_ WDF_DEVICE_IO_TYPE *ReadWriteIoType, _Out_ WDF_DEVICE_IO_TYPE *IoControlIoType)
__inline CHAR GetStackSize(VOID)
virtual VOID AddDmaEnabler(__inout FxDmaEnabler *Enabler)
static _Must_inspect_result_ NTSTATUS _QueryPropertyEx(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_opt_ PWDFDEVICE_INIT DeviceInit, _In_opt_ FxDevice *Device, _In_ PVOID PropertyData, _In_ FxPropertyType FxPropertyType, _In_ ULONG BufferLength, _Out_ PVOID PropertyBuffer, _Out_ PULONG ResultLength, _Out_ PDEVPROPTYPE PropertyType)
WDF_DEVICE_IO_TYPE m_IoctlIoType
FxInterruptThreadpool * m_InteruptThreadpool
_Must_inspect_result_ NTSTATUS FxValidateInterfacePropertyData(_In_ PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData)
static NTSTATUS NtStatusFromHr(_In_ IWudfDeviceStack *DevStack, _In_ HRESULT Hr)
static FxDevice * GetFxDevice(__in MdDeviceObject DeviceObject)
static VOID DispatchWithLockUm(_In_ MdDeviceObject DeviceObject, _In_ MdIrp Irp, _In_opt_ IUnknown *Context)
VOID InvalidateDeviceState(VOID)
MdDeviceObject __inline GetSafePhysicalDevice(VOID)
_Must_inspect_result_ NTSTATUS OpenSettingsKey(__out HANDLE *Key, __in ACCESS_MASK DesiredAccess=STANDARD_RIGHTS_ALL)
static void PoFxDevicePowerRequired(_In_ MdDeviceObject DeviceObject)
_Must_inspect_result_ NTSTATUS PdoInitialize(__in PWDFDEVICE_INIT DeviceInit)
FxMessageDispatch * m_Dispatcher
FxPkgGeneral * m_PkgGeneral
static FxWdmDeviceExtension * _GetFxWdmExtension(__in MdDeviceObject DeviceObject)
static void RemoteInterfaceRemoval(_In_ IWudfDevice *DeviceObject, _In_ WUDF_INTERFACE_CONTEXT RemoteInterfaceID)
VOID RetrieveDeviceRegistrySettings(VOID)
static void PoFxDevicePowerNotRequired(_In_ MdDeviceObject DeviceObject)
static _Must_inspect_result_ NTSTATUS _ValidateOpenKeyParams(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _In_opt_ PWDFDEVICE_INIT DeviceInit, _In_opt_ FxDevice *Device)
ULONG m_DirectTransferThreshold
virtual VOID RemoveDmaEnabler(__inout FxDmaEnabler *Enabler)
WDF_DEVICE_IO_TYPE m_ReadWriteIoType
VOID InstallPackage(__inout FxPackage *Package)
static VOID GetPreferredTransferMode(_In_ MdDeviceObject DeviceObject, _Out_ UMINT::WDF_DEVICE_IO_BUFFER_RETRIEVAL *RetrievalMode, _Out_ WDF_DEVICE_IO_TYPE *RWPreference, _Out_ WDF_DEVICE_IO_TYPE *IoctlPreference)
static _Must_inspect_result_ NTSTATUS STDCALL DispatchWithLock(__in MdDeviceObject DeviceObject, __in MdIrp OriginalIrp)
VOID SetFilterIoType(VOID)
_Must_inspect_result_ NTSTATUS AssignProperty(_In_ PVOID PropertyData, _In_ FxPropertyType FxPropertyType, _In_ DEVPROPTYPE Type, _In_ ULONG BufferLength, _In_opt_ PVOID PropertyBuffer)
BOOLEAN IsInterfaceRegistered(_In_ const GUID *InterfaceClassGUID, _In_opt_ PCUNICODE_STRING RefString)
VOID RetrieveDeviceInfoRegistrySettings(_Out_ PCWSTR *GroupId, _Out_ PUMDF_DRIVER_REGSITRY_INFO DeviceRegInfo)
virtual VOID RemoveChildList(__inout FxChildList *List)
static VOID DispatchUm(_In_ MdDeviceObject DeviceObject, _In_ MdIrp Irp, _In_opt_ IUnknown *Context)
IWudfDeviceStack * GetDeviceStack(VOID)
NTSTATUS ProcessWmiPowerQueryOrSetData(_In_ RdWmiPowerAction Action, _Out_ BOOLEAN *QueryResult)
UNICODE_STRING m_SymbolicLinkName
BOOLEAN m_SelfIoTargetNeeded
BOOLEAN m_CleanupFromFailedCreate
WDF_FILE_OBJECT_POLICY_TYPE m_FileObjectPolicy
IWudfDeviceStack * m_DevStack
_Must_inspect_result_ NTSTATUS FdoInitialize(__in PWDFDEVICE_INIT DeviceInit)
__inline VOID SetStackSize(_In_ CHAR Size)
_Must_inspect_result_ NTSTATUS OpenDevicemapKeyWorker(_In_ PFX_DRIVER_GLOBALS pFxDriverGlobals, _In_ PCUNICODE_STRING KeyName, _In_ ACCESS_MASK DesiredAccess, _In_ FxRegKey *pKey)
_Must_inspect_result_ NTSTATUS CreateDevice(__in PWDFDEVICE_INIT DeviceInit)
WDF_FS_CONTEXT_USE_POLICY_TYPE m_FsContextUsePolicy
BOOLEAN m_PowerPageableCapable
static __inline NTSTATUS _GetDeviceProperty(_In_ MdDeviceObject DeviceObject, _In_ DEVICE_REGISTRY_PROPERTY DeviceProperty, _In_ ULONG BufferLength, _Out_opt_ PVOID PropertyBuffer, _Out_ PULONG ResultLength)
UMINT::WDF_DEVICE_IO_BUFFER_RETRIEVAL m_RetrievalMode
WDF_DIRECT_HARDWARE_ACCESS_TYPE m_DirectHardwareAccess
static _Must_inspect_result_ NTSTATUS _OpenKey(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _In_opt_ PWDFDEVICE_INIT DeviceInit, _In_opt_ FxDevice *Device, _In_ ULONG DeviceInstanceKeyType, _In_ ACCESS_MASK DesiredAccess, _In_opt_ PWDF_OBJECT_ATTRIBUTES KeyAttributes, _Out_ WDFKEY *Key)
_Must_inspect_result_ NTSTATUS ControlDeviceInitialize(__in PWDFDEVICE_INIT DeviceInit)
static __inline NTSTATUS _OpenDeviceRegistryKey(_In_ MdDeviceObject DeviceObject, _In_ ULONG DevInstKeyType, _In_ ACCESS_MASK DesiredAccess, _Out_ PHANDLE DevInstRegKey)
virtual VOID SetDeviceTelemetryInfoFlags(_In_ FxDeviceInfoFlags Flag)
static NTSTATUS _CreateAndInitialize(_In_ PFX_DRIVER_GLOBALS DriverGlobals, _In_ FxDevice *Device, _Out_ FxMessageDispatch **ppWudfDispatcher)
VOID SetDeviceBase(__in CfxDeviceBase *DeviceBase)
PVOID __inline GetObjectHandleUnchecked(VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
VOID MarkNoDeleteDDI(__in FxObjectLockState State=ObjectLock)
VOID DeleteFromFailedCreate(VOID)
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS pGlobals, __in CfxDevice *Device, __deref_out FxPkgFdo **PkgFdo)
virtual _Must_inspect_result_ NTSTATUS Initialize(__in PWDFDEVICE_INIT DeviceInit)
_Must_inspect_result_ NTSTATUS CreateDefaultDeviceList(__in PWDF_CHILD_LIST_CONFIG ListConfig, __in PWDF_OBJECT_ATTRIBUTES ListAttributes)
_Must_inspect_result_ NTSTATUS RegisterCallbacks(__in PWDF_FDO_EVENT_CALLBACKS DispatchTable)
_Must_inspect_result_ NTSTATUS PostCreateDeviceInitialize(VOID)
_Must_inspect_result_ NTSTATUS Initialize(__in PWDFDEVICE_INIT DeviceInit)
_Must_inspect_result_ NTSTATUS PostCreateDeviceInitialize(__in PWDFDEVICE_INIT Init)
VOID PowerPolicySetSxWakeState(__in BOOLEAN State)
FxPowerPolicyMachine m_PowerPolicyMachine
VOID PowerPolicySetS0IdleState(__in BOOLEAN State)
__inline VOID SetHandle(__in HANDLE Key)
__inline VOID SetObject(__in_opt MdDeviceObject DeviceObject)
VOID InvalidateDeviceState(__in MdDeviceObject Fdo)
__inline MdDeviceObject GetObject(VOID)
VOID SetDeviceExtension(PVOID Value)
VOID SetFlags(ULONG Flags)
static __inline VOID MxInitializeRemoveLock(__in MdRemoveLock Lock, __in ULONG AllocateTag, __in ULONG MaxLockedMinutes, __in ULONG HighWatermark)
static VOID MxDetachDevice(_Inout_ MdDeviceObject Device)
#define STATUS_NOT_IMPLEMENTED
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
static const WCHAR SymbolicLink[]
FX_VERIFY(INTERNAL, CHECK_NOT_NULL(LoaderInterface->pIWudfHost))
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
PFX_DRIVER_GLOBALS pFxDriverGlobals
return pDevice GetDeviceObject()
IWudfDeviceStack * deviceStack
_In_ WDFDEVICE _In_ PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData
_In_ WDFDEVICE _Out_ WDF_DEVICE_IO_TYPE _Out_ WDF_DEVICE_IO_TYPE * IoControlIoType
_In_ WDFDEVICE _In_ PWDF_DEVICE_INTERFACE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG _Out_ PDEVPROPTYPE PropertyType
ioTypeConfig ReadWriteIoType
FxVerifierDbgBreakPoint(pFxDriverGlobals)
#define FX_FS_CONTEXT_USE_POLICY
#define FX_FILE_OBJECT_POLICY
#define FX_METHOD_NEITHER_ACTION
#define FX_REGISTER_ACCESS_MODE
#define FX_DIRECT_HARDWARE_ACCESS
#define FX_PROCESS_SHARING_ENABLED
#define FX_KERNEL_MODE_CLIENT_POLICY
#define FX_DEVICE_GROUP_ID
PFX_DRIVER_GLOBALS pGlobals
#define FxPointerNotNull(FxDriverGlobals, Ptr)
void FxPoolFree(__in_xcount(ptr is at an offset from AllocationStart) PVOID ptr)
@ DeviceInfoHasDynamicChildren
_Must_inspect_result_ NTSTATUS __inline FxValidateUnicodeString(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PCUNICODE_STRING String)
_Must_inspect_result_ NTSTATUS FxValidateObjectAttributes(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in ULONG Flags=FX_VALIDATE_OPTION_NONE_SPECIFIED)
__inline NTSTATUS FxVerifierCheckIrqlLevel(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define ERROR_FILE_NOT_FOUND
#define FX_PLUGPLAY_REGKEY_DEVICEMAP
UINT64 WUDF_INTERFACE_CONTEXT
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
#define _Must_inspect_result_
#define _Analysis_assume_
#define ASSERTMSG(msg, exp)
#define UNREFERENCED_PARAMETER(P)
#define STATUS_BUFFER_TOO_SMALL
#define TRACE_LEVEL_ERROR
#define TRACE_LEVEL_INFORMATION
_Must_inspect_result_ NTSTATUS FxDuplicateUnicodeString(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in const UNICODE_STRING *Source, __out PUNICODE_STRING Destination)
FxPowerPolicyOwnerSettings * m_Owner
WakePolicySettings m_WakeSettings
IdlePolicySettings m_IdleSettings
WUDF_IO_REMOVE_LOCK IoRemoveLock
_In_ const DEVPROPKEY * PropertyKey
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INVALID_DEVICE_STATE
#define STATUS_INFO_LENGTH_MISMATCH
#define STATUS_INSUFFICIENT_RESOURCES
#define PLUGPLAY_REGKEY_DRIVER
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ PWDFDEVICE_INIT DeviceInit
#define DECLARE_CONST_UNICODE_STRING(_variablename, _string)
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK _In_opt_ PWDF_OBJECT_ATTRIBUTES KeyAttributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG DeviceInstanceKeyType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID PropertyBuffer
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY DeviceProperty
enum _WDF_DEVICE_IO_TYPE WDF_DEVICE_IO_TYPE
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
struct _WDF_DEVICE_PROPERTY_DATA * PWDF_DEVICE_PROPERTY_DATA
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
#define WDF_REGKEY_DRIVER_SUBKEY
#define WDF_REGKEY_DEVICE_SUBKEY
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define HRESULT_FROM_WIN32(x)
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH * Dispatch
#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE
_In_ ULONG _In_ ACCESS_MASK _Out_ PHANDLE DevInstRegKey
_In_ ULONG DevInstKeyType
#define PLUGPLAY_REGKEY_DEVICE
@ DevicePropertyCompatibleIDs
@ DevicePropertyEnumeratorName
@ DevicePropertyBootConfiguration
@ DevicePropertyResourceRequirements
@ DevicePropertyDriverKeyName
@ DevicePropertyInstallState
@ DevicePropertyClassGuid
@ DevicePropertyBusNumber
@ DevicePropertyBootConfigurationTranslated
@ DevicePropertyRemovalPolicy
@ DevicePropertyPhysicalDeviceObjectName
@ DevicePropertyLegacyBusType
@ DevicePropertyAllocatedResources
@ DevicePropertyManufacturer
@ DevicePropertyClassName
@ DevicePropertyFriendlyName
@ DevicePropertyContainerID
@ DevicePropertyLocationInformation
@ DevicePropertyHardwareID
@ DevicePropertyBusTypeGuid
@ DevicePropertyDeviceDescription