EVT_WDF_DEVICE_RELATIONS_QUERY回调函数 (wdfdevice.h)

[仅适用于 KMDF]

驱动程序的 EvtDeviceRelationsQuery 事件回调报告驱动程序支持的设备之间的关系更改。

语法

EVT_WDF_DEVICE_RELATIONS_QUERY EvtWdfDeviceRelationsQuery;

void EvtWdfDeviceRelationsQuery(
  [in] WDFDEVICE Device,
  [in] DEVICE_RELATION_TYPE RelationType
)
{...}

参数

[in] Device

框架设备对象的句柄。

[in] RelationType

DEVICE_RELATION_TYPE类型的枚举器值。 DEVICE_RELATION_TYPE枚举在 wdm.h中定义。

返回值

没有

言论

若要注册 EvtDeviceRelationsQuery 回调函数,驱动程序必须调用 WdfDeviceInitSetPnpPowerEventCallbacks

大多数基于框架的驱动程序不需要提供此回调函数。

在系统初始化期间,即插即用管理器通过向驱动程序堆栈发送 IRP_MN_QUERY_DEVICE_RELATIONS 请求来枚举系统上的所有设备。 如果基于框架的驱动程序注册了 EvtDeviceRelationsQuery 回调函数,则框架将调用它。 总线的函数驱动程序必须报告附加到总线的所有子设备。

此外,在框架调用 IoInvalidateDeviceRelations 例程以报告驱动程序总线上的设备之间更改的关系后,即插即用管理器会向驱动程序堆栈发送另一个IRP_MN_QUERY_DEVICE_RELATIONS请求。 然后,该框架调用驱动程序的 EvtDeviceRelationsQuery 回调函数,以便驱动程序可以提供有关更改的详细信息。

驱动程序必须执行的作类型取决于 RelationType 参数收到的值。 该值可以是下列值之一:

BusRelations

    大多数基于框架的驱动程序不会在 EvtDeviceRelationsQuery 回调函数中报告总线关系。 相反,驱动程序遵循在总线上枚举设备中介绍的准则。

弹出关系

    大多数基于框架的驱动程序不会报告 EvtDeviceRelationsQuery 回调函数中的弹出关系。 相反,设备的总线驱动程序调用 WdfPdoAddEjectionRelationsPhysicalDevice 和 WdfPdoRemoveEjectionRelationsPhysicalDevice。

RemovalRelations

    大多数基于框架的驱动程序不会报告 EvtDeviceRelationsQuery 回调函数中的删除关系。 相反,驱动程序调用 WdfDeviceAddRemovalRelationsPhysicalDevice 和 WdfDeviceRemoveRemovalRelationsPhysicalDevice。

TargetDeviceRelation

    基于框架的驱动程序不必报告设备的目标关系。 相反,框架将处理此请求。

框架可以使用 RelationType值调用 EvtDeviceRelationsQuery 回调函数,RemovedRelations,即使设备被删除也是如此。

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
标头 wdfdevice.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL