次の方法で共有


列挙要求の処理

PnP マネージャーは、いつでもバス ドライバーにその子の列挙を要求することができます。 (WDM インターフェイスに慣れている場合、列挙リクエストは関係タイプBusRelationsを持つIRP_MN_QUERY_DEVICE_RELATIONSリクエストです。)フレームワーク ベースのドライバーでは、これらのリクエストは表示されません。 代わりに、フレームワークは、デバイスの子リストに格納されている情報を使用してリクエストを処理します。 ドライバーは、PnP マネージャーが列挙を要求したときにフレームワークが正しい情報を提供できるように、子リストを最新の状態に保つ役割を担います。

動的な列挙をサポートするフレームワーク ベースのバス ドライバーは、特定の子デバイスの再列挙リクエストを受け取ることができます。 このようなリクエストは、ドライバーがデバイスの障害を検出した後、子デバイスのファンクション ドライバーによって送信される可能性があります。 (フレームワークは、REENUMERATE_SELF_INTERFACE_STANDARD インターフェイスを実装することでこのタイプのリクエストをサポートします。このインターフェイスはwdm.hで定義されている標準的なdriver-defined interfaceです。)

動的な列挙をサポートするフレームワーク ベースのバス ドライバーは、EvtChildListDeviceReenumeratedコールバック関数を提供できます。このコールバック関数は、フレームワークが子デバイスのドライバーから再列挙リクエストを受け取ったときに呼び出すものです。 このコールバック関数がTRUEを返すか、存在しない場合、フレームワークは子デバイスを存在しないものとしてマークし、バス ドライバーの子リストが変更されたことを PnP マネージャーに通知します。 その結果、PnP マネージャーは再列挙を要求し、フレームワークは子デバイスの新しい PDO を作成するドライバーのEvtChildListCreateDeviceコールバック関数を呼び出します。