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 值為 退出Relations 或 RemovedRelations 。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
標頭 | wdfdevice.h (包含 Wdf.h) |
IRQL | PASSIVE_LEVEL |