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


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

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

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

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

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

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

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

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

Маршрут Description
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE Обрабатывает сигнальное прерывание сообщения (MSI).
HW_ADAPTER_CONTROL Выполняет синхронные операции для управления состоянием или поведением адаптера, например остановкой или перезапуском HBA для управления питанием.
HW_BUILDIO Обрабатывает SRB с несинхронизированным доступом к общим системным структурам данных перед передачей в HwStorStartIo.
HW_DPC_ROUTINE Подпрограмма, отложенная для выполнения в ДИСПЕТЧЕРЕ 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 со значением RequestTimerCall NotificationType .
HW_TRACING_ENABLED Позволяет Storport уведомлять мини-порт о включении трассировки событий.
HW_UNIT_CONTROL Вызывается для выполнения синхронных операций для управления состоянием устройства единицы хранения. Минипорт-драйвер уведомляется о запуске единицы или обработке перехода состояния питания для устройства единицы.
HW_WORKITEM Функция обратного вызова с минипортом для обработки запроса рабочего элемента Storport.
STORPORT_TELEMETRY_EVENT Описывает полезные данные телеметрии мини-порта.
StorPortLogTelemetry Регистрирует событие телеметрии мини-порта для диагностики или сбора полезных сведений. Минипорт может регистрировать восемь пар имени общего назначения и буфер с максимальной длиной 4 КБ, а также несколько связанных событий полей, определенных в структуре STORPORT_TELEMETRY_EVENT.