次の方法で共有


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 の呼び出しの詳細については、「Framework デバイス オブジェクトの作成」を参照してください。

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

WdfDeviceInitSetReleaseHardwareOrderOnFailure(
                       DeviceInit,
                       WdfReleaseHardwareOrderOnFailureAfterDescendants
                       );

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.11
最小 UMDF バージョン 2.0
Header wdfdevice.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)

こちらもご覧ください

EvtDeviceReleaseHardware

WDFDEVICE_INIT

WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE