次の方法で共有


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

[KMDF と UMDF に適用]

ドライバーの EvtDeviceD0Exit イベント コールバック関数は、ドライバーのデバイスが D0 電源状態を離れたときに必要な操作を実行します。

構文

EVT_WDF_DEVICE_D0_EXIT EvtWdfDeviceD0Exit;

NTSTATUS EvtWdfDeviceD0Exit(
  [in] WDFDEVICE Device,
  [in] WDF_POWER_DEVICE_STATE TargetState
)
{...}

パラメーター

[in] Device

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

[in] TargetState

デバイスが入力しようとしているデバイスの電源状態を識別する、WDF_POWER_DEVICE_STATE型の列挙子。

戻り値

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

注釈

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

ドライバーが EvtDeviceD0Exit コールバック関数を登録している場合、フレームワークは、ドライバーのデバイスの 1 つが動作 (D0) 状態を離れるたびに関数を呼び出します。 次のいずれかが発生すると、デバイスは D0 状態を残します。

  • システムとそのすべてのデバイスは、動作状態を残し、低電力状態に入りようとしています。
  • デバイスが低電力アイドルをサポートしている場合、デバイスはアイドル状態であるため、低電力状態に入りそうになっています。
  • プラグ アンド プレイ マネージャーは、システムのハードウェア リソースを再配布しようとしています。
  • ユーザーは、通常、アプリケーションのユーザー インターフェイスを使用して、デバイスを削除することを示しています。
また、デバイスが予期せず (突然削除された) 後に 、フレームワークによって EvtDeviceD0Exit コールバック関数が呼び出されます。

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

デバイスが突然削除されていない限り、フレームワークは、デバイスの割り込みを無効にした直後に、デバイスの電源が D0 から減少する前に、このコールバック関数を呼び出します。 TargetState パラメーターは、デバイスが入力しようとしているデバイスの電源状態を識別します。

EvtDeviceD0Exit コールバック関数は、デバイスを D0 電源状態に復元するためにドライバーが後で必要とする情報を保存するなど、指定された低電力状態に入る前に必要な操作を実行する必要があります。

TargetState パラメーターが WdfPowerDevicePrepareForHibernation の場合、システムは休止状態ファイルを保存するときにデバイスを使用するため、ドライバーはデバイスをシャットダウンしないでください。

TargetStateWdfPowerDeviceD3Final の場合は、システムがオフになっているか、デバイスが削除されようとしているか、リソースの再調整が進行中であると想定する必要があります。 ドライバーが情報を保存する必要がある場合は、ディスクまたはその他の永続的な記憶域メディアに書き込む必要があります。 ただし、WdfPowerDeviceD3Final をチェックしてから、デバイスを削除するためのクリーンアップ作業を行うのは正しくありません。 たとえば、アイドル状態のため Dx 電源状態になったデバイスが後で突然削除された場合、 その EvtDeviceD0Exit は再び呼び出されません。 この作業を行う正しい場所は、代わりに EvtDeviceReleaseHardware にあります。

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

要件

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

こちらもご覧ください

EvtDeviceD0Entry