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) |