EVT_WDF_DEVICE_PREPARE_HARDWARE コールバック関数 (wdfdevice.h)

[KMDF と UMDF に適用]

ドライバーの EvtDevicePrepareHardware イベント コールバック関数は、デバイスをドライバーからアクセスできるようにするために必要な操作を実行します。

構文

EVT_WDF_DEVICE_PREPARE_HARDWARE EvtWdfDevicePrepareHardware;

NTSTATUS EvtWdfDevicePrepareHardware(
  [in] WDFDEVICE Device,
  [in] WDFCMRESLIST ResourcesRaw,
  [in] WDFCMRESLIST ResourcesTranslated
)
{...}

パラメーター

[in] Device

フレームワーク デバイス オブジェクトへのハンドル。

[in] ResourcesRaw

プラグ アンド プレイ マネージャーがデバイスに割り当てた未加工のハードウェア リソースを識別するフレームワーク リソースリスト オブジェクトへのハンドル。

[in] ResourcesTranslated

プラグ アンド プレイ マネージャーがデバイスに割り当てた、変換されたハードウェア リソースを識別するフレームワーク リソースリスト オブジェクトへのハンドル。

戻り値

EvtDevicePrepareHardware コールバック関数でエラーが発生しない場合は、STATUS_SUCCESSまたは NT_SUCCESS(status) が TRUE である別の状態値を返す必要があります。 それ以外の場合は、NT_SUCCESS(status) が FALSE である状態値を返す必要があります。 STATUS_NOT_SUPPORTEDを返さないでください。

NT_SUCCESS(status) が FALSE の場合、フレームワークはドライバーの EvtDeviceReleaseHardware コールバック関数を呼び出します。

このコールバック関数の戻り値の詳細については、「 デバイスエラーの報告」を参照してください。

注釈

EvtDevicePrepareHardware コールバック関数を登録するには、ドライバーで WdfDeviceInitSetPnpPowerEventCallbacks を呼び出す必要があります。

ドライバーがデバイスの EvtDevicePrepareHardware コールバック関数を登録している場合、フレームワークは、プラグ アンド プレイ マネージャーがデバイスにハードウェア リソースを割り当て、デバイスが初期化されていない D0 状態になった後に関数を呼び出します。 (プラグ アンド プレイ マネージャーは、そのデバイスの子デバイスを起動する前に、常に親デバイスを起動します。

フレームワークは、ドライバーの EvtDeviceD0Entry コールバック関数を呼び出す前に、ドライバーの EvtDevicePrepareHardware コールバック関数を呼び出します。

EvtDevicePrepareHardware コールバック関数は、受信した ResourcesRaw および ResourcesTranslated ハンドルを使用して、デバイスの生および変換されたハードウェア リソースにアクセスします。 コールバック関数は 、WdfCmResourceListGetCountWdfCmResourceListGetDescriptor を呼び出して、リソース リストを走査できます。 このコールバック関数は、リソース リストを変更できません。

リソース リストとリソースの表示順序の詳細については、「 生および翻訳されたハードウェア リソース」を参照してください。

通常、ドライバーの EvtDevicePrepareHardware コールバック関数は、必要に応じて次の処理を行います。

  • ドライバーがデバイスに割り当てられているメモリにアクセスできるように、物理メモリ アドレスを仮想アドレスにマップします
  • デバイスのリビジョン番号を決定します
  • USB デバイスを構成する
  • 他の ドライバーからドライバー定義インターフェイス を取得します
必要に応じて、ドライバーの EvtDevicePrepareHardware コールバック関数が作業項目をキューに登録して、他の時間のかかる構成タスクを完了する場合があります。 このような操作に作業項目を使用すると、デバイスの起動時間がシステムの起動時間を増加させないようにするのに役立ちます。 詳細については、「 フレームワーク作業項目の使用」を参照してください。

通常、ファームウェアの読み込みを含む他のすべてのハードウェア初期化操作は、デバイスが動作 (D0) 状態に入るたびに行われる必要があります。したがって、ドライバーの EvtDeviceD0Entry コールバック関数で実行する必要があります。

ResourcesRaw および ResourcesTranslated は、ドライバーの EvtDeviceReleaseHardware コールバック関数が返されるまで、EvtDevicePrepareHardware コールバック関数が受け取る処理を有効なままにします。

ハードウェア リソースの詳細については、「 Framework-Based ドライバーのハードウェア リソース」を参照してください。

フレームワークがこのコールバック関数を呼び出すタイミングの詳細については、「 PnP と Power Management のシナリオ」を参照してください。

このコールバック関数を提供するドライバーの詳細については、「Function Drivers での PnP と Power Management のサポート」を参照してください。

要件

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

こちらもご覧ください

EvtDeviceReleaseHardware