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


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

Подпрограмма обратного вызова ComponentIdleConditionCallback уведомляет драйвер о том, что указанный компонент завершил переход от активного условия к условию простоя.

Синтаксис

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK PoFxComponentIdleConditionCallback;

void PoFxComponentIdleConditionCallback(
  [in] PVOID Context,
  [in] ULONG Component
)
{...}

Параметры

[in] Context

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

[in] Component

Индекс, идентифицирующий компонент. Этот параметр представляет собой индекс массива Components в структуре PO_FX_DEVICE , используемой драйвером устройства для регистрации устройства в PoFx. Если массив Components содержит N элементов, индексы компонентов варьируются от 0 до N–1.

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

None

Remarks

Если драйверу больше не требуется доступ к компоненту, который находится в активном состоянии, драйвер должен вызвать подпрограмму PoFxIdleComponent , чтобы переключить компонент на условие простоя. В ответ на вызов PoFxIdleComponent PoFx инициирует переход к условию простоя, а затем вызывает подпрограмму ComponentIdleConditionCallback , чтобы уведомить драйвер о завершении этого перехода.

Драйвер должен вызывать PoFxCompleteIdleCondition в ответ на каждый обратный вызов ComponentIdleConditionCallback . Вызов PoFxCompleteIdleCondition может выполняться во время обратного вызова ComponentIdleConditionCallback или после возврата обратного вызова. Драйвер должен выполнить любую работу, требующую доступа к аппаратному компоненту перед вызовом PoFxCompleteIdleCondition. После этого вызова компонент может не оставаться в состоянии питания F0.

К компоненту можно получить безопасный доступ, только если компонент находится в активном состоянии. Не полагайтесь на состояние мощности Fx компонента, чтобы определить, можно ли получить доступ к компоненту. Если компонент находится в состоянии F0 и находится в состоянии простоя, компонент может перейти в другое состояние Fx.

Примеры

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

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

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK MyComponentIdleConditionCallback;

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

_Use_decl_annotations_
VOID
  MyComponentIdleConditionCallback(
    PVOID Context,
    ULONG Component
    )
  {
      // Function body
  }

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

Требования

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

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

PO_FX_DEVICE

PoFxCompleteIdleCondition