次の方法で共有


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

[KMDF と UMDF に適用]

ドライバーの EvtDeviceSelfManagedIoSuspend イベント コールバック関数は、デバイスの自己管理 I/O 操作を中断します。

構文

EVT_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND EvtWdfDeviceSelfManagedIoSuspend;

NTSTATUS EvtWdfDeviceSelfManagedIoSuspend(
  [in] WDFDEVICE Device
)
{...}

パラメーター

[in] Device

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

戻り値

操作が成功した場合、EvtDeviceSelfManagedIoSuspend コールバック関数は、STATUS_SUCCESS、または NT_SUCCESS(status) が TRUE に等しい別の状態値を返す必要があります。 それ以外の場合は、NT_SUCCESS(status) が FALSE である状態値を返す必要があります。 NT_SUCCESS(status) が FALSE の場合、フレームワークはデバイスを停止し、そのデバイス オブジェクトを削除します。

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

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

注釈

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

ドライバーが EvtDeviceSelfManagedIoSuspend コールバック関数を登録している場合、フレームワークは次のいずれかの理由で呼び出します。

  • デバイスが低電力状態に入りようとしています。
  • デバイスが削除されているか、突然削除されました。
  • プラグ アンド プレイ マネージャーは、システムに接続されているデバイス間でシステムのハードウェア リソースを再配布しようとしている。
これらのイベントのうち、フレームワークがドライバーを呼び出す原因となるイベントがわからないため、デバイスが動作中 (D0) 状態に戻る可能性があると想定する必要があります。

デバイスが低電力状態に入りそうになっている場合、フレームワークはドライバーの EvtDeviceD0Exit コールバック関数を呼び出す前に、ドライバーの EvtDeviceSelfManagedIoSuspend コールバック関数を呼び出します。

コールバック関数が、NT_SUCCESS(status) が FALSE である状態値を返し、フレームワークがデバイスの電力を下げようとしている場合、フレームワークはデバイスを停止し、そのデバイス オブジェクトを削除します。

EvtDeviceSelfManagedIoSuspend コールバック関数は、デバイスの自己管理 I/O 操作を停止するために必要な操作を実行する必要があります。

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

このコールバック関数を提供するドライバーの詳細については、「 Self-Managed I/O の使用」を参照してください。

要件

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

こちらもご覧ください

EvtDeviceSelfManagedIoCleanup

EvtDeviceSelfManagedIoFlush

EvtDeviceSelfManagedIoInit

EvtDeviceSelfManagedIoRestart