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


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

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

Синтаксис

PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK PoFxComponentActiveConditionCallback;

void PoFxComponentActiveConditionCallback(
  [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

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

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

Драйвер получает обратный вызов ComponentActiveConditionCallback всякий раз, когда компонент завершает переход к активному условию, независимо от того, вызывается ли драйвер PoFxActivateComponent для инициации перехода. Например, ядро Windows может активировать компонент от имени драйвера перед отправкой драйверу Plug and Play IRP или системного IRP.

Примеры

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

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

PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK MyComponentActiveConditionCallback;

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

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

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

Требования

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

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

PO_FX_DEVICE

PoFxActivateComponent