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


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

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

Синтаксис

HW_RESET_BUS HwResetBus;

BOOLEAN HwResetBus(
  PVOID DeviceExtension,
  ULONG PathId
)
{...}

Параметры

DeviceExtension

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

PathId

Определяет шину SCSI для сброса.

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

Если шина успешно сброшена, HwStorResetBus возвращает значение TRUE.

Комментарии

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

typedef
BOOLEAN
HW_RESET_BUS (
  _In_ PVOID  DeviceExtension,
  _In ULONG  PathId
  );

Драйвер порта приостанавливает все очереди ввода-вывода устройства для адаптера, а затем вызывает подпрограмму HwStorResetBus в IRQL DISPATCH_LEVEL после получения блокировки спина StartIo. Драйвер мини-порта отвечает за выполнение SSPB,полученных HwStorStartIo для PathId во время этой процедуры, и за установку их состояния на SRB_STATUS_BUS_RESET, если это необходимо.

Если мини-порт запросил поддержку нескольких каналов через PERF_CONFIGURATION_DATA, то при возврате HwStorResetBus в дополнение к блокировке StartIo, которая затем освобождается после возврата обратного вызова, будут приняты и освобождены все маркеры канала. Это гарантирует, что на этапе сброса шины в HwStorStartIo не будут отправлены операции ввода-вывода.

Примеры

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

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

HW_RESET_BUS MyHwResetBus;

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

_Use_decl_annotations_
BOOLEAN
MyHwResetBus (
  _In_ PVOID  DeviceExtension,
  _In_ ULONG  PahtId
  );
  {
      ...
  }

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

Требования

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