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


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

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

Синтаксис

PO_FX_DEVICE_POWER_REQUIRED_CALLBACK PoFxDevicePowerRequiredCallback;

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

Параметры

[in] Context

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

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

None

Remarks

После того как PoFx вызывает подпрограмму DevicePowerRequiredCallback драйвера, драйвер должен инициировать переход в состояние D0, отправив D0 IRP ( запрос IRP_MN_SET_POWER ) в стек устройства, если устройство еще не находится в состоянии D0. После того как драйвер завершит обработку этого запроса (и все более низкие драйверы), драйвер должен вызвать подпрограмму PoFxReportDevicePoweredOn . Вызов PoFxReportDevicePoweredOn уведомляет PoFx о том, что устройство завершило ответ на вызов DevicePowerRequiredCallback . Драйвер может вызывать PoFxReportDevicePoweredOn во время или после вызова DevicePowerRequiredCallback .

При каждом вызове подпрограммы DevicePowerRequiredCallback драйвер должен отвечать вызовом PoFxReportDevicePoweredOn. Вызов PoFxReportDevicePoweredOn может выполняться во время или после вызова DevicePowerRequiredCallback . Драйвер должен вызывать PoFxReportDevicePoweredOn независимо от того, не требуется ли D0 IRP, запрос D0 IRP завершается сбоем или диспетчером D0 IRP.

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

Вызов процедуры DevicePowerRequiredCallback может произойти в любое время после того, как драйвер вызовет PoFxCompleteDevicePowerNotRequired для завершения обратного вызова DevicePowerNotRequiredCallback . Вызов DevicePowerRequiredCallback не обязательно происходит в результате действия, предпринятого драйвером, например запроса на изменение активного условия компонента.

Примеры

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

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

PO_FX_DEVICE_POWER_REQUIRED_CALLBACK MyDevicePowerRequiredCallback;

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

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

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

Требования

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

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

DevicePowerNotRequiredCallback

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice

PoFxReportDevicePoweredOn