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


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

Подпрограмма обратного вызова HwStorPassiveInitializeRoutine вызывается после подпрограммы HwStorInitialize , когда текущий IRQL находится на PASSIVE_LEVEL. Обратный вызов HwStorPassiveInitializeRoutine задается путем вызова процедуры StorPortEnablePassiveInitialization . Инициализация отложенных вызовов процедур (DPC) мини-порта выполняется в обратном вызове HwStorPassiveInitializeRoutine .

Синтаксис

HW_PASSIVE_INITIALIZE_ROUTINE HwPassiveInitializeRoutine;

BOOLEAN HwPassiveInitializeRoutine(
  PVOID DeviceExtension
)
{...}

Параметры

DeviceExtension

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

Подпрограмма HwStorPassiveInitializeRoutine возвращает значение TRUE , если мини-порт успешно инициализировал обработку DPC, или FALSE , если процесс инициализации завершился сбоем.

Комментарии

Подпрограмма HwStorPassiveInitializeRoutine должна инициализировать все DPC, которые будет использовать драйвер мини-порта. Драйвер порта вызывает HwStorPassiveInitializeRoutine в PASSIVE_LEVEL без удерживаемой блокировки спина. Прерывания включены при вызове этой подпрограммы.

Имя HwStorPassiveInitializeRoutine — это просто заполнитель. Фактический прототип этой процедуры обратного вызова определен в Storport.h следующим образом:

typedef
BOOLEAN
(*PHW_PASSIVE_INITIALIZE_ROUTINE) (
  _In_ PVOID DeviceExtension
  );

Драйвер порта вызывает подпрограмму HwStorPassiveInitializeRoutine в ПАССИВНОМ IRQL без получения спин-блокировок.

Примеры

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

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

HW_PASSIVE_INITIALIZE_ROUTINE MyHwPassiveInitialize;

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

_Use_decl_annotations_
BOOLEAN
MyHwPassiveInitialize (
  _In_ PVOID  DeviceExtension
  );
  {
      ...
  }

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

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть storport.h (включая Storport.h)
IRQL PASSIVE_LEVEL (см. раздел "Примечания"))

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

HwStorInitialize

StorPortEnablePassiveInitialization