次の方法で共有


WdfDeviceInitSetReleaseHardwareOrderOnFailure 関数 (wdfdevice.h)

[KMDF と UMDF に適用]

WdfDeviceInitSetReleaseHardwareOrderOnFailure メソッドは、デバイス障害の直後にドライバーの EvtDeviceReleaseHardware コールバック関数を呼び出すか、すべての子デバイスが削除されるまで待機するかを指定します。

構文

void WdfDeviceInitSetReleaseHardwareOrderOnFailure(
  [in] PWDFDEVICE_INIT                       DeviceInit,
  [in] WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
);

パラメーター

[in] DeviceInit

WDFDEVICE_INIT 構造体へのポインター。

[in] ReleaseHardwareOrderOnFailure

フレームワークがドライバーの EvtDeviceReleaseHardware コールバック関数を呼び出すタイミングを指定する WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE型指定された列挙子。

戻り値

何一つ

備考

通常、フレームワークは、ドライバーが列挙するすべての子デバイスに対して EvtDeviceReleaseHardware 関数を呼び出した後、ドライバーの EvtDeviceReleaseHardware コールバック関数を呼び出します。

ただし、デバイスの電源投入または電源ダウンが失敗した場合、フレームワークは、すべての子デバイスの EvtDeviceReleaseHardware 関数を呼び出す前に、ドライバーの EvtDeviceReleaseHardware を呼び出す可能性があります。

この既定の動作をオーバーライドするために、ドライバーは WdfDeviceInitSetReleaseHardwareOrderOnFailure 呼び出して、デバイス障害のシナリオでも、子デバイスの EvtDeviceReleaseHardware 関数を呼び出すまで、常にその EvtDeviceReleaseHardware 関数を呼び出すのを待機する必要があることを指定できます。

たとえば、子デバイスの代わりにハードウェア アクセスを実行するバス ドライバーは、この手法を使用して、フレームワークがバス ドライバーの EvtDeviceReleaseHardware コールバック関数を呼び出した後に、その子デバイスがハードウェアへのアクセスを要求しないようにすることができます。

ドライバーが WdfDeviceInitSetReleaseHardwareOrderOnFailure 呼び出す場合は、WdfDeviceCreate 呼び出す前に呼び出す必要があります。 WdfDeviceCreate 呼び出す方法の詳細については、「フレームワーク デバイス オブジェクトの作成」を参照してください。

次のコード例は、バス ドライバーが、すべての子デバイスが削除されるまで、その EvtDeviceReleaseHardware コールバック関数の呼び出しを待機するようにフレームワークに要求する方法を示しています。

WdfDeviceInitSetReleaseHardwareOrderOnFailure(
                       DeviceInit,
                       WdfReleaseHardwareOrderOnFailureAfterDescendants
                       );

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.11
UMDF の最小バージョン する 2.0
ヘッダー wdfdevice.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 する DriverCreate(kmdf)

関連項目

EvtDeviceReleaseHardware

WDFDEVICE_INIT

WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE