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


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

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

Никакой

Замечания

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

Если устройство находится в состоянии D0, а состояние Fx или состояние 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 (include Wudfwdm.h)
IRQL Вызывается в IRQL <= DISPATCH_LEVEL.

См. также

DevicePowerRequiredCallback

IRP_MN_SET_POWER

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice