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


функция обратного вызова 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.

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

Никакой

Замечания

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

Каждый раз, когда вызывается подпрограмма DevicePowerRequiredCall back, драйвер должен реагировать, вызывая PoFxReportDevicePoweredOn. Вызов PoFxReportDevicePoweredOn может происходить либо во время, либо после вызова DevicePowerRequiredCallback. Драйвер должен вызывать PoFxReportDevicePoweredOn независимо от того, требуется ли D0 IRP, запрос IRP D0 завершается сбоем, или отправленный 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 (include Wudfwdm.h)
IRQL Вызывается в IRQL <= DISPATCH_LEVEL.

См. также

DevicePowerNotRequiredCallback

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice

PoFxReportDevicePoweredOn