共用方式為


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 回呼函式中報告總線關聯性。 相反地,驅動程式會遵循列舉總線上的裝置中所述的指導方針。

退出Relations

    大部分以架構為基礎的驅動程式不會報告 EvtDeviceRelationsQuery 回呼函式中的退出關聯。 相反地,裝置總線的驅動程式會呼叫 WdfPdoAddEjectionRelationsPhysicalDevice 和 WdfPdoRemoveEjectionRelationsPhysicalDevice。

RemovalRelations

    大部分以架構為基礎的驅動程式不會報告 EvtDeviceRelationsQuery 回呼函式中的移除關聯。 相反地,驅動程式會呼叫 WdfDeviceAddRemovalRelationsPhysicalDevice 和 WdfDeviceRemoveRemovalRelationsPhysicalDevice。

TargetDeviceRelation

    架構型驅動程式不需要報告裝置的目標關聯性。 相反地,架構會處理此要求。

即使移除裝置,架構也可以呼叫 EvtDeviceRelationsQuery 回呼函式,其 RelationType 值為 退出RelationsRemovedRelations

規格需求

需求
目標平台 Universal
最小 KMDF 版本 1.0
標頭 wdfdevice.h (包含 Wdf.h)
IRQL PASSIVE_LEVEL