Подпрограммы драйвера Storport для мини-портов

Драйвер мини-порта, работающий с драйвером Storport, должен содержать реализации описаний подпрограмм, перечисленных в этом разделе, и предоставлять их через структуру HW_INITIALIZATION_DATA на этапе инициализации драйвера минипорта.

Подпрограммы драйверов для мини-портов Storport в большинстве случаев эквивалентны их аналогам портов SCSI (дополнительные сведения см. в разделе Подпрограммы драйверов SCSI Miniport ). Однако между структурой драйвера порта SCSI и драйвера Storport существуют важные различия, и эти процедуры должны соответствовать этим различиям.

Например, драйверы мини-портов, работающие с драйвером Storport, всегда должны быть готовы к получению еще одного запроса ввода-вывода после завершения подпрограммы HwStorStartIo . Для этого не требуется драйвер мини-порта, работающий с портом SCSI. Версия порта SCSI не получает новый запрос ввода-вывода, пока явно не уведомит драйвер порта с помощью функции StorPortNotification о том, что он подготовлен к обработке другого запроса.

Если версия storport драйвера мини-порта не может обработать запрос во время его отправки, она имеет набор функций управления очередями, недоступных для версии порта SCSI, которые позволяют ему справиться с перегрузкой. Как и версия порта SCSI, версия драйвера мини-порта Storport завершает запрос с SRB_STATUS_BUSY, но в отличие от версии порта SCSI, она также может пометить очередь устройств как занятую с помощью процедуры StorPortDeviceBusy . Аналогичные функции позволяют драйверу мини-порта приостанавливать и возобновлять обработку на уровне адаптера.

Дополнительные сведения о процедурах поддержки, предоставляемых драйвером Storport, см. в статье Процедуры поддержки драйверов Storport.

Дополнительные сведения о драйвере Storport см. в разделе Драйверы портов хранилища.

Ниже приведены подпрограммы драйвера мини-порта.

Подпрограмма Описание
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE Обрабатывает прерывание с сигналом сообщения (MSI).
HW_ADAPTER_CONTROL Выполняет синхронные операции для управления состоянием или поведением адаптера, такие как остановка или перезапуск адаптера для управления питанием.
HW_BUILDIO Обрабатывает SRB с несинхронизированным доступом к общим системным структурам данных перед передачей в HwStorStartIo.
HW_DPC_ROUTINE Подпрограмма, которая откладывается для выполнения в DISPATCH IRQL с помощью механизма отложенного вызова процедуры (DPC).
HW_FIND_ADAPTER Использует указанную конфигурацию, чтобы определить, поддерживается ли конкретный адаптер HBA, и, если это так, для возврата сведений о конфигурации этого адаптера.
HW_INITIALIZE Инициализирует драйвер мини-порта после перезагрузки системы или сбоя питания.
HW_INTERRUPT Драйвер Storport вызывает подпрограмму HwStorInterrupt после того, как HBA создает запрос на прерывание.
HW_PASSIVE_INITIALIZE_ROUTINE Вызывается после подпрограммы HwStorInitialize , если текущий IRQL находится на PASSIVE_LEVEL.
HW_RESET_BUS Вызывается драйвером порта для очистки условий ошибок.
HW_STARTIO Драйвер Storport вызывает подпрограмму HwStorStartIo один раз для каждого входящего запроса ввода-вывода.
HW_TIMER Вызывается после интервала, указанного, когда драйвер мини-порта вызывает StorPortNotification со значением RequestTimerCallNotificationType .
HW_TRACING_ENABLED Позволяет storport уведомлять мини-порт о включенной трассировке событий.
HW_UNIT_CONTROL Вызывается для выполнения синхронных операций для управления состоянием устройства запоминающего устройства. Драйвер мини-порта получает уведомление о том, что он запускает устройство или обрабатывает переход состояния питания для устройства.
HW_WORKITEM Функция обратного вызова, предоставляемая минипортом, для обработки запроса на рабочий элемент Storport.
STORPORT_TELEMETRY_EVENT Описывает полезные данные телеметрии минипорта.
StorPortLogTelemetry Регистрирует событие телеметрии минипорта для диагностики или сбора полезных сведений. Мини-порт может регистрировать восемь пар "имя-значение" общего назначения и буфер длиной не более 4 КБ, а также несколько полей, связанных с событиями, которые определены в STORPORT_TELEMETRY_EVENT структуры.