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


Интерфейс Storport с драйверами Storport Miniport

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

Обзор и определение отдельных функций SRB, флагов SRB и значений состояния SRB см. в разделе SCSI_REQUEST_BLOCK.

Обсуждение того, как драйверы минипорта должны реагировать на каждую отдельную функцию SRB, см. в разделе HwStorStartIo.

Storport перенаправит SDB-файлы в драйверы минипорта Storport для асинхронной обработки. Как правило, драйверу мини-порта потребуется некоторое время для фактического выполнения запроса. Адаптеры шины узла (HBA), поддерживающие очередь с тегами, могут ставить запросы в очередь внутри системы и обрабатывать их в порядке, указанном тегами, которые Storport назначает каждому запросу. Структура SCSI_REQUEST_BLOCK (SRB) содержит два элемента, которые драйверы Storport и miniport используют для указания способа упорядочения SRB во внутренней очереди хост-адаптера:

  • QueueTag. Storport назначает значение count или "tag" члену QueuedTag каждой SRB. Этот тег указывает порядок, в котором адаптер должен обрабатывать пакеты. Значения тегов также позволяют Storport отслеживать, какие SSPB-файлы по-прежнему остаются невыполненными, какие успешно завершены, а какие истекло время ожидания.

  • QueueAction: указывает сообщение с тегами очереди, которое будет использоваться при установке флага SRB_FLAGS_QUEUE_ACTION_ENABLE в SRB. SrbFlags. Использование queueAction в мини-порте зависит от минипорта. Минипорты на основе SCSI могут соответствовать спецификации SCSI, если HBA поддерживает их. QueueAction может иметь одно из следующих значений:

Значение Значение
SRB_SIMPLE_TAG_REQUEST Поставить запрос в очередь и выполнить его в любом порядке после завершения всех предыдущих SRB_HEAD_OF_QUEUE_TAG_REQUEST и SRB_ORDERED_QUEUE_TAG_REQUEST запросов.
SRB_ORDERED_QUEUE_TAG_REQUEST Выполняйте запрос только после завершения всех старых SRB_HEAD_OF_QUEUE_TAG_REQUEST и всех старых запросов.
SRB_HEAD_OF_QUEUE_TAG_REQUEST Поместите запрос в начало очереди и выполните его раньше всех остальных запросов в очереди, включая все остальные запросы с тегами SRB_HEAD_OF_QUEUE_TAG_REQUEST.

Дополнительные сведения см. в спецификации SCSI.