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


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

Процедура обратного вызова DevicePowerNotRequiredCallback уведомляет драйвер устройства о том, что устройство не должно оставаться в состоянии питания D0.

Синтаксис

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PoFxDevicePowerNotRequiredCallback;

void PoFxDevicePowerNotRequiredCallback(
  [in] PVOID Context
)
{...}

Параметры

[in] Context

Указатель на контекст устройства. Драйвер устройства использует этот контекст для хранения сведений о текущем состоянии питания устройства. Драйвер устройства указал этот указатель в элементе DeviceContextструктуры PO_FX_DEVICE , которую драйвер использовал для регистрации устройства с помощью платформы управления питанием (PoFx). Этот контекст непрозрачн для PoFx.

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

None

Remarks

Когда PoFx вызывает подпрограмму DevicePowerNotRequiredCallback драйвера, драйвер сначала должен решить, следует ли инициировать переход в состояние Dx с низким энергопотреблением (путем отправки запроса IRP_MN_SET_POWER в стек устройства) или остаться в состоянии D0. Затем, не дожидаясь завершения перехода Dx, драйвер должен вызвать подпрограмму PoFxCompleteDevicePowerNotRequired , чтобы уведомить PoFx о том, что драйвер завершил свой ответ на обратный вызов DevicePowerNotRequiredCallback . Драйвер может вызывать PoFxCompleteDevicePowerNotRequired до или после возврата подпрограммы DevicePowerNotRequiredCallback .

Если устройство находится в состоянии D0, а состояние Fx или состояние "активный/ неактивный" для компонента на устройстве изменяется, PoFx оценивает, может ли устройство перейти в состояние Dx с низким энергопотреблением или должно оставаться в состоянии D0. Если устройство может перейти в состояние Dx с низким энергопотреблением, PoFx вызывает подпрограмму DevicePowerNotRequiredCallback драйвера.

Если устройство переходит в состояние Dx с низким энергопотреблением в ответ на обратный вызов DevicePowerNotRequiredCallback , но PoFx позже определяет, что устройство должно войти в состояние D0, PoFx вызывает подпрограмму DevicePowerRequiredCallback драйвера. В ответ на этот вызов устройство должно перейти в состояние D0.

Примеры

Чтобы определить подпрограмму обратного вызова DevicePowerNotRequiredCallback , необходимо сначала предоставить объявление функции, определяющее тип определяемой процедуры обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить подпрограмму обратного вызова DevicePowerNotRequiredCallback с именем MyDevicePowerNotRequiredCallback, используйте тип PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK, как показано в следующем примере кода:

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK MyDevicePowerNotRequiredCallback;

Затем реализуйте процедуру обратного вызова следующим образом:

_Use_decl_annotations_
VOID
  MyDevicePowerNotRequiredCallback(
    PVOID Context
    )
  {
      // Function body
  }

Тип функции PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK определен в файле заголовка Wdm.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку _Use_decl_annotations_ в определение функции. Заметка _Use_decl_annotations_ гарантирует, что будут использоваться заметки, которые применяются к типу функции PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов WDM. Сведения о _Use_decl_annotations_см. в статье Поведение функции с заметками.

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows 8.
Целевая платформа Персональный компьютер
Верхняя часть wdm.h (включая Wudfwdm.h)
IRQL Вызывается по адресу IRQL <= DISPATCH_LEVEL.

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

DevicePowerRequiredCallback

IRP_MN_SET_POWER

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice