функция обратного вызова 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 , платформа вызывает функцию каждый раз, когда одно из устройств драйвера выходит из рабочего состояния (D0). Устройство выходит из состояния D0, когда происходит одно из следующих действий:

  • Система и все ее устройства вот-вот покинут свои рабочие состояния и войдут в состояние с низким энергопотреблением.
  • Устройство перейдет в состояние с низким энергопотреблением, так как оно бездействует, если устройство поддерживает маломощное бездействующее.
  • Диспетчер Plug and Play пытается перераспределить аппаратные ресурсы системы.
  • Как правило, с помощью пользовательского интерфейса приложения пользователь указал, что хочет удалить устройство.
Платформа также вызывает функцию обратного вызова EvtDeviceD0Exit после неожиданного удаления устройства (неожиданного удаления).

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

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

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

Если параметр TargetState имеет значение WdfPowerDevicePrepareForHibernation, драйвер не должен отключать устройство, так как система будет использовать устройство при сохранении файла гибернации.

Если targetState имеет значение WdfPowerDeviceD3Final, следует предположить, что система отключена, устройство будет удалено или выполняется перерасчет ресурсов . Если драйвер должен сохранить данные, он должен записать их на диск или на другой постоянный носитель. Однако неправильно проверка WdfPowerDeviceD3Final, а затем выполнить очистку для удаления устройства. Например, если устройство, которое перешло в состояние питания Dx из-за простоя, позднее неожиданно удаляется, его EvtDeviceD0Exit больше не будет вызываться. Правильное место для выполнения этой работы будет в EvtDeviceReleaseHardware .

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

Требования

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

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

EvtDeviceD0Entry