次の方法で共有


WdfFdoInitSetFilter 関数 (wdffdo.h)

[KMDF と UMDF に適用]

WdfFdoInitSetFilter メソッドは、指定されたデバイスの上位レベルまたは下位レベルのフィルター ドライバーとして呼び出し元のドライバーを識別します。

構文

void WdfFdoInitSetFilter(
  [in] PWDFDEVICE_INIT DeviceInit
);

パラメーター

[in] DeviceInit

ドライバーが EvtDriverDeviceAdd コールバック関数から取得したWDFDEVICE_INIT構造体へのポインター。

戻り値

なし

解説

フィルター ドライバーは通常、一部の I/O 要求を処理しますが、ドライバー スタック内の次のドライバーにほとんどの要求を渡すだけです。 フレームワークがドライバーのいずれかのデバイスの要求を受信し、ドライバーが要求の種類に一致する要求を受信する I/O キューを作成していない場合、フレームワークが要求を処理する方法は、ドライバーが WdfFdoInitSetFilter を呼び出したかどうかによって異なります。

  • ドライバーが WdfFdoInitSetFilter を呼び出した場合、ドライバー フレームワークは要求を次のドライバーに転送します。
  • ドライバーが WdfFdoInitSetFilter を呼び出さない場合、フレームワークは状態値が STATUS_INVALID_DEVICE_REQUEST で要求を完了します。
ドライバーが WdfFdoInitSetFilter を呼び出す場合、フレームワークはこれらの呼び出しによって提供される情報を無視するため、 WdfDeviceInitSetIoTypeWdfDeviceInitSetPowerInrush、または WdfDeviceInitSetPowerPageable を呼び出さないでください。 代わりに、フレームワークはドライバーの デバイス スタック内の次の下位デバイス オブジェクトからこの情報を取得します。

ドライバーは、WdfDeviceCreate を呼び出す前に WdfFdoInitSetFilter を呼び出す必要があります。 WdfDeviceCreate の呼び出しの詳細については、「フレームワーク デバイス オブジェクトの作成」を参照してください。 さらに、ドライバーは、EvtDriverDeviceAdd コールバック関数から戻る前に WdfFdoInitSetFilter を呼び出す必要があります。

WdfFdoInitSetFilter の詳細については、「フィルター ドライバーでのデバイス オブジェクトの作成」、「I/O キューの作成」、「I/O要求の転送」を参照してください。

次のコード例では、呼び出し元のドライバーを、指定したデバイスのフィルター ドライバーとして識別します。

WdfFdoInitSetFilter(DeviceInit);

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdffdo.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 DeviceInitAPI(kmdf)DriverCreate(kmdf)DrvAckIoStop(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WDFDEVICE_INIT