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

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

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

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
标头 wdfdevice.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL