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


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

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

Функция обратного вызова события EvtDeviceArmWakeFromS0 драйвера (т. е. включает) устройство, чтобы оно запустите сигнал пробуждения в состоянии устройства с низким энергопотреблением, если система остается в рабочем состоянии системы (S0).

Синтаксис

EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtWdfDeviceArmWakeFromS0;

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

Параметры

[in] Device

Дескриптор объекта устройства платформы.

Возвращаемое значение

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

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

Комментарии

Чтобы зарегистрировать функцию обратного вызова EvtDeviceArmWakeFromS0 , драйвер должен вызвать WdfDeviceInitSetPowerPolicyEventCallbacks. Кроме того, драйвер должен задать IdleCanWakeFromS0 в элементе IdleCapsструктуры WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .

Функция обратного вызова EvtDeviceArmWakeFromS0 обрабатывает операции, относящиеся к конкретному устройству, которые необходимы для обнаружения устройства внешнего события, которое активирует сигнал пробуждения в шине. Функция обратного вызова EvtDeviceEnableWakeAtBus водителя автобуса обрабатывает операции, связанные с шиной, такие как включение сигнала события управления питанием (PME) шины PCI.

Если драйвер зарегистрировал функцию обратного вызова EvtDeviceArmWakeFromS0 , платформа вызывает ее, пока устройство все еще находится в состоянии питания устройства D0, прежде чем драйвер шины понижает состояние питания устройства, но после того, как платформа отправила IRP ожидания или пробуждения от имени драйвера.

Процесс выполняется в следующей последовательности:

  1. Платформа определяет, что устройство бездействует в течение предустановленного периода времени.
  2. Платформа вызывает функцию обратного вызова EvtDeviceArmWakeFromS0 драйвера.
  3. Платформа запрашивает драйвер для шины устройства, чтобы снизить мощность устройства.
Непосредственно перед тем, как устройство перейдет в состояние низкого энергопотребления, платформа вызовет функцию обратного вызова EvtDeviceD0Exit вашего драйвера.

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

Вам не нужно предоставлять функцию обратного вызова EvtDeviceArmWakeFromS0 , если устройство:

  • Usb-устройство, поддерживающее "выборочную приостановку".
  • Не может быть выключен, пока система остается полностью питанием.
  • Не требуются специальные аппаратные операции, позволяющие устройству активировать сигнал пробуждения.
Если устройство поддерживает выборочную приостановку USB и если драйвер устанавливает IdleUsbSelectiveSuspend в элементе IdleCaps своей структуры WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , платформа отправляет запрос на выборочную приостановку драйверу USB-шины, когда устройство простаивает в течение заданного периода времени.

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

Требования

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

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

EvtDeviceArmWakeFromSx

EvtDeviceDisarmWakeFromS0