Поделиться через


функция обратного вызова EVT_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND (wdfdevice.h)

[Относится к KMDF и UMDF]

Функция обратного вызова события EvtDeviceSelfManagedIoSuspend драйвера приостанавливает самоуправляемые операции ввода-вывода устройства.

Синтаксис

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 , платформа вызывает ее по одной из следующих причин:

  • Устройство вот-вот перейдет в состояние низкого энергопотребления.
  • Устройство удаляется или неожиданно удаляется.
  • Менеджер Plug and Play будет распределять аппаратные ресурсы системы между подключенными к системе устройствами.
Так как вы не знаете, какое из этих событий вызывает драйвер платформой, необходимо предположить, что устройство может вернуться в рабочее (D0) состояние.

Если устройство перейдет в состояние с низким энергопотреблением, платформа вызывает функцию обратного вызова EvtDeviceSelfManagedIoSuspend драйвера, прежде чем вызывать функцию обратного вызова EvtDeviceD0Exit драйвера.

Если функция обратного вызова возвращает значение состояния, для которого NT_SUCCESS (status) равно FALSE, и если платформа пытается снизить мощность устройства, платформа останавливает устройство и удаляет его объекты устройства.

Функция обратного вызова EvtDeviceSelfManagedIoSuspend должна выполнять все необходимое для остановки самоуправляемых операций ввода-вывода устройства.

Дополнительные сведения о том, когда платформа вызывает эту функцию обратного вызова, см. в статье Сценарии PnP и управления питанием.

Дополнительные сведения о драйверах, предоставляющих эту функцию обратного вызова, см. в разделе Использование Self-Managed ввода-вывода.

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfdevice.h (включая Wdf.h)
IRQL PASSIVE_LEVEL

См. также раздел

EvtDeviceSelfManagedIoCleanup

EvtDeviceSelfManagedIoFlush

EvtDeviceSelfManagedIoInit

EvtDeviceSelfManagedIoRestart