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


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

Подпрограмма HwStorInitialize инициализирует драйвер мини-порта после перезагрузки системы или сбоя питания. Он вызывается StorPort после успешного возврата HwStorFindAdapter . HwStorInitialize инициализирует адаптер HBA и находит все устройства, представляющие интерес для драйвера мини-порта.

Синтаксис

HW_INITIALIZE HwInitialize;

BOOLEAN HwInitialize(
  PVOID DeviceExtension
)
{...}

Параметры

DeviceExtension

Указатель на место хранения драйвера мини-порта на хранилище HBA.

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

Если инициализация выполнена успешно, HwStorInitialize возвращает значение TRUE.

Комментарии

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

typedef
BOOLEAN
HW_INITIALIZE (
  _In_ PVOID  DeviceExtension
  );

Так как HwStorInitialize вызывается в DIRQL, hwStorPassiveInitializeRoutine должен выполнять как можно больше процессов инициализации. В этом случае необходимо включить процедуру пассивной инициализации с помощью StorPortEnablePassiveInitialization.

Если прерывания создаются при инициализации оборудования, вызывается подпрограмма HwStorInterrupt . В этом случае подпрограмма HwStorInitialize должна настроить все данные, ожидаемые HwStorInterrupt (включая HwStorDpcRoutine, если она используется), прежде чем начать инициализацию оборудования.

HwStorInitialize и HwStorPassiveInitializeRoutine разделяют следующие обязанности:

  • Инициализация оборудования для регистров и буферов HBA.

  • Инициализируйте и выделите все поля DeviceExtension .

  • Настройте и инициализируйте все события и DPC, используемые драйвером мини-порта.

Примеры

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

Например, чтобы определить подпрограмму обратного вызова HwStorInitialize с именем MyHwInitialize, используйте тип HW_INITIALIZE , как показано в этом примере кода:

HW_INITIALIZE MyHwInitialize;

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

_Use_decl_annotations_
BOOLEAN 
  MyHwInitialize( _In_ PVOID DeviceExtension )
  {
      ...
  }

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

Требования

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

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

HwStorDpcRoutine

HwStorFindAdapter

HwStorInterrupt

HwStorPassiveInitializeRoutine

StorPortEnablePassiveInitialization