функция обратного вызова 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 (см. раздел "Примечания")) |