次の方法で共有


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 コールバック関数でバス関係を報告しません。 代わりに、ドライバーは、「バス上のデバイスの列挙」で説明されているガイドラインに従います。

EjectionRelations

    ほとんどのフレームワーク ベースのドライバーは、EvtDeviceRelationsQuery コールバック関数でエジェクション関係を報告しません。 代わりに、デバイスのバスのドライバーは WdfPdoAddEjectionRelationsPhysicalDevice と WdfPdoRemoveEjectionRelationsPhysicalDevice を呼び出します。

RemovalRelations

    ほとんどのフレームワーク ベースのドライバーは、EvtDeviceRelationsQuery コールバック関数の削除関係を報告しません。 代わりに、ドライバーは WdfDeviceAddRemovalRelationsPhysicalDevice と WdfDeviceRemoveRemovalRelationsPhysicalDevice を呼び出します。

TargetDeviceRelation

    フレームワーク ベースのドライバーは、デバイスのターゲット関係を報告する必要はありません。 代わりに、フレームワークはこの要求を処理します。

フレームワークは、デバイスが削除されている場合でも、RelationTypeが、ToolbarRelations または RemovalRelations を使用して EvtDeviceRelationsQuery コールバック関数を呼び出すことができます。

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
Header wdfdevice.h (Wdf.h を含む)
IRQL PASSIVE_LEVEL