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


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

Драйвер Storport вызывает подпрограмму HwStorInterrupt после того, как HBA создает запрос прерывания.

Синтаксис

HW_INTERRUPT HwInterrupt;

BOOLEAN HwInterrupt(
  PVOID DeviceExtension
)
{...}

Параметры

DeviceExtension

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

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

Если драйвер мини-порта обнаружит, что его адаптер HBA не сгенерирует прерывание, HwStorInterrupt должен как можно скорее вернуть значение FALSE . Подпрограмма HwStorInterrupt должна возвращать значение в пределах 50 микросекунд.

Комментарии

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

typedef
BOOLEAN
HW_INTERRUPT (
  IN PVOID  DeviceExtension
  );

Подпрограмма HwStorInterrupt должна возвращаться в пределах 50 микросекунд, в идеале как можно меньше времени. Таким образом, все действия, которые не должны выполняться на высоком уровне IRQL, следует отложить на [HwStorDpcRoutine](nc-storport-hw_dpc_routine.md, определенный в драйвере miniport и выданный с помощью StorPortIssueDpc. Задержка DPC очень низкая, и она будет вызываться сразу после возврата из высокой IRQL.

Драйвер порта вызывает подпрограмму HwStorInterrupt в DIRQL.

Примеры

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

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

HW_INTERRUPT MyHwInterrupt;

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

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

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

Требования

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

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

[HwStorDpcRoutine] (nc-storport-hw_dpc_routine.md

StorPortIssueDpc