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状态)等于 true的另一个状态值。 否则,它必须返回一个状态值,NT_SUCCESS(状态)等于 FALSE。 如果NT_SUCCESS(状态)等于 FALSE,框架将停止设备并删除其设备对象。

如果 NT_SUCCESS(status) 等于 FALSE,则框架将调用驱动程序的 EvtDeviceSelfManagedIoFlushEvtDeviceSelfManagedIoCleanup 回调函数。

有关此回调函数的返回值的详细信息,请参阅 报告设备故障

言论

若要注册 EvtDeviceSelfManagedIoSuspend 回调函数,驱动程序必须调用 WdfDeviceInitSetPnpPowerEventCallbacks

如果驱动程序已注册 EvtDeviceSelfManagedIoSuspend 回调函数,框架会出于以下原因之一调用该函数:

  • 设备即将进入低功率状态。
  • 设备正在删除或意外删除。
  • 即插即用管理器即将在系统附加的设备之间重新分发系统的硬件资源。
由于你不知道其中哪一个事件会导致框架调用驱动程序,因此必须假定设备可能返回到其工作状态(D0) 状态。

如果设备即将进入低功率状态,框架会在调用驱动程序的 EvtDeviceD0Exit 回调函数之前调用驱动程序的 EvtDeviceSelfManagedIoSuspend 回调函数。

如果回调函数返回一个状态值,NT_SUCCESS(状态)等于 FALSE,并且如果框架尝试降低设备的电源,框架将停止设备并删除其设备对象。

EvtDeviceSelfManagedIoSuspend 回调函数必须执行任何作来停止设备的自管理 I/O作。

有关框架何时调用此回调函数的详细信息,请参阅 PnP 和电源管理方案

有关提供此回调函数的驱动程序的详细信息,请参阅 使用 Self-Managed I/O

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfdevice.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL

另请参阅

EvtDeviceSelfManagedIoCleanup

EvtDeviceSelfManagedIoFlush

EvtDeviceSelfManagedIoInit

EvtDeviceSelfManagedIoRestart