Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
STORAGE_REQUEST_BLOCK — это расширенная структура блока запросов SCSI (SRB). Структура обеспечивает добавление расширенных данных, связанных с функцией SRB.
Замечание
В будущем драйвер портов SCSI и модели драйверов мини-порта SCSI могут быть изменены или недоступны. Вместо этого рекомендуется использовать модели драйверов Storport и минипорта Storport .
Синтаксис
typedef struct _STORAGE_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
ULONG ReservedUlong1;
ULONG Signature;
ULONG Version;
ULONG SrbLength;
ULONG SrbFunction;
ULONG SrbFlags;
ULONG ReservedUlong2;
ULONG RequestTag;
USHORT RequestPriority;
USHORT RequestAttribute;
ULONG TimeOutValue;
union {
ULONG SystemStatus;
ULONG RequestTagHigh4Bytes;
} DUMMYUNIONNAME;
ULONG SystemStatus;
ULONG ZeroGuard1;
ULONG AddressOffset;
ULONG NumSrbExData;
ULONG DataTransferLength;
PVOID POINTER_ALIGN DataBuffer;
PVOID POINTER_ALIGN ZeroGuard2;
PVOID POINTER_ALIGN OriginalRequest;
PVOID POINTER_ALIGN ClassContext;
PVOID POINTER_ALIGN PortContext;
PVOID POINTER_ALIGN MiniportContext;
_STORAGE_REQUEST_BLOCK POINTER_ALIGN *NextSrb;
struct _STORAGE_REQUEST_BLOCK;
ULONG SrbExDataOffset[ANYSIZE_ARRAY];
} STORAGE_REQUEST_BLOCK, *PSTORAGE_REQUEST_BLOCK;
Members
Length
Задает размер заголовка SRB для совместимости со структурой SCSI_REQUEST_BLOCK . Это равно смещение элемента сигнатуры этой структуры.
Function
Задайте значение SRB_FUNCTION_STORAGE_REQUEST_BLOCK , чтобы указать, что это расширенный SRB. В отличие от SCSI_REQUEST_BLOCK, идентификатор функции SRB находится в элементе SrbFunction .
SrbStatus
Возвращает состояние завершенного запроса. Этот элемент должен быть задан мини-драйвером, прежде чем он уведомляет драйвер для конкретной операционной системы о том, что запрос выполнен путем вызова StorPortNotification с RequestComplete. Значение этого элемента может быть одним из следующих:
| Ценность | Meaning |
|---|---|
| SRB_STATUS_PENDING | Указывает, что запрос выполняется. Драйвер порта для конкретной операционной системы инициализирует SrbStatus в это значение. |
| SRB_STATUS_SUCCESS | Указывает, что запрос выполнен успешно. |
| SRB_STATUS_ABORTED | Указывает, что запрос был прерван, как показано драйвером порта. Минипорт-драйвер задает это состояние в члене NextSrb для успешного запроса SRB_FUNCTION_ABORT_COMMAND. |
| SRB_STATUS_ABORT_FAILED | Указывает попытку прерывания запроса. Возвращает это состояние для запроса SRB_FUNCTION_ABORT_COMMAND, если указанный запрос не может находиться. |
| SRB_STATUS_ERROR | Указывает, что запрос был завершен с ошибкой в состоянии SCSI шины. |
| SRB_STATUS_BUSY | Указывает, что минипорт-драйвер или целевое устройство не удалось принять запрос в настоящее время. Драйвер порта для конкретной операционной системы повторит запрос позже. |
| SRB_STATUS_INTERNAL_ERROR | Указывает, что драйвер Storport не смог доставить запрос в драйвер мини-порта или целевое устройство. В таких случаях состояние записывается в InternalStatus. |
| SRB_STATUS_INVALID_REQUEST | Указывает, что драйвер минипорта не поддерживает заданный запрос. |
| SRB_STATUS_NO_DEVICE | Указывает, что устройство не ответило. |
| SRB_STATUS_TIMEOUT | Указывает время ожидания запроса. |
| SRB_STATUS_SELECTION_TIMEOUT | Указывает время ожидания выбора устройства SCSI. |
| SRB_STATUS_COMMAND_TIMEOUT | Указывает, что целевой объект не выполнил команду в течение периода времени. |
| SRB_STATUS_MESSAGE_REJECTED | Указывает, что целевой объект отклонил сообщение. Обычно это возвращается только для таких запросов типа сообщения, как SRB_FUNCTION_TERMINATE_IO. |
| SRB_STATUS_BUS_RESET | Указывает, что при выполнении этого запроса произошел сброс шины. |
| SRB_STATUS_PARITY_ERROR | Указывает, что на шине SCSI произошла ошибка четности и произошел сбой повторных попыток. |
| SRB_STATUS_REQUEST_SENSE_FAILED | Указывает, что команда request-sense завершилась ошибкой. Это возвращается только в том случае, если адаптер шины узла (HBA) выполняет функцию автоматического запроса, а драйвер мини-порта для параметра AutoRequestSense имеет значение TRUE в PORT_CONFIGURATION_INFORMATION для этого HBA. |
| SRB_STATUS_NO_HBA | Указывает, что HBA не отвечает. |
| SRB_STATUS_DATA_OVERRUN | Указывает, что произошла ошибка переполнения или перерасхода данных. Драйвер минипорта также должен обновить член DataTransferLength SRB, чтобы указать, сколько данных фактически было передано, если выполняется подзапуск. |
| SRB_STATUS_UNEXPECTED_BUS_FREE | Указывает, что целевой объект отключен неожиданно. |
| SRB_STATUS_PHASE_SEQUENCE_FAILURE | Указывает, что HBA обнаружила ошибку незаконной последовательности этапов. |
| SRB_STATUS_REQUEST_FLUSHED | Указывает, что запрос на состояние был остановлен. |
| SRB_STATUS_BAD_FUNCTION | Указывает, что код функции SRB не поддерживается. |
| SRB_STATUS_INVALID_PATH_ID | Указывает, что PathId , указанный в SRB, не существует. |
| SRB_STATUS_INVALID_TARGET_ID | Указывает, что значение TargetID в SRB недопустимо. |
| SRB_STATUS_INVALID_LUN | Указывает, что значение Lun в SRB недопустимо. |
| SRB_STATUS_ERROR_RECOVERY | Указывает, что запрос был завершен с ошибкой в состоянии SCSI шины и получено сообщение SCSI INITIAT RECOVERY. |
| SRB_STATUS_AUTOSENSE_VALID | Указывает, что данные, возвращаемые в SenseInfoBuffer , допустимы. |
| SRB_STATUS_QUEUE_FROZEN | Минипорт-драйвер никогда не должен задавать для этого значения член SrbStatus . Драйвер порта Windows может задать это значение, чтобы сообщить драйверу класса хранилища, что его очередь запросов для конкретного периферийного устройства была заморожена. |
| SRB_STATUS_NOT_POWERED | Указывает, что запрос завершился сбоем, так как целевой объект не работает. Для запросов с SRB_FLAGS_NO_KEEP_AWAKE, заданных в SrbFlags, запросы, отправленные в LUN, которые отключены, завершаются сбоем с этим состоянием. |
| SRB_STATUS_LINK_DOWN | Указывает, что запрос завершился сбоем, так как ссылка отключена. |
| SRB_STATUS_BAD_SRB_BLOCK_LENGTH | Указывает, что запрос завершился ошибкой, так как длина SRB была недопустимой. |
ReservedUlong1
Зарезервировано. Установите значение 0.
Signature
Подпись расширенного формата SRB. Для этого задано значение SRB_SIGNATURE.
Version
Используемая версия структуры. Текущая версия STORAGE_REQUEST_BLOCK_VERSION_1.
SrbLength
Длина этого расширенного SRB в байтах, включая эту структуру, адрес и любые расширенные данные SRB.
SrbFunction
Указывает выполняемую операцию, которая может быть одним из следующих значений:
| Ценность | Meaning |
|---|---|
| SRB_FUNCTION_EXECUTE_SCSI (0x00) | Запрос ввода-вывода устройства SCSI должен выполняться в целевом логическом модуле. Если NumSrbExData> 0, одна или несколько из следующих расширенных структур блоков запросов находятся на смещениях, указанных в SrbExDataOffset: SRBEX_DATA_SCSI_CDB16, SRBEX_DATA_SCSI_CDB32, SRBEX_DATA_SCSI_CDB_VAR, SRBEX_DATA_BIDIRECTIONAL, SRBEX_DATA_IO_INFO |
| SRB_FUNCTION_IO_CONTROL (0x02) | Запрос — это запрос элемента управления ввода-вывода, который создается в пользовательском приложении с выделенным HBA. Объект SRB DataBuffer указывает на заголовок SRB_IO_CONTROL , за которым следует область данных. Значение в DataBuffer может использоваться драйвером независимо от значения MapBuffers. Допустимы только функции SRB, SrbFlags, TimeOutValue, DataBuffer и DataTransferLength, а также член SrbExtension, если драйвер мини-порта запрашивал расширения SRB при инициализации. Если драйвер минипорта управляет выделенным приложением HBA таким образом, чтобы он поддерживал этот запрос, минипорт-драйвер должен выполнить запрос и уведомить драйвер порта для конкретной операционной системы после завершения SRB, используя обычный механизм вызовов StorPortNotification с RequestComplete и NextRequest. |
| SRB_FUNCTION_RECEIVE_EVENT (0x03) | HBA должен быть подготовлен для получения асинхронного уведомления о событиях из целевого объекта. Элемент SRB DataBuffer указывает, где должны размещаться данные. ПРИМЕЧАНИЕ. Эта функция не отправляется в минипорт Storport. |
| SRB_FUNCTION_SHUTDOWN (0x07) | Система завершает работу. Минипорт-драйвер может получать несколько этих уведомлений до того, как все системные действия на самом деле остановлены. Однако после последнего запуска ввода-вывода будет происходить последнее уведомление о завершении работы. Расширенные данные SRB не требуются для этой функции. |
| SRB_FUNCTION_FLUSH (0x08) | Минипорт-драйвер должен очистить все кэшированные данные для целевого устройства. Этот запрос отправляется минипорту только в том случае, если параметр CachesData имеет значение TRUE в PORT_CONFIGURATION_INFORMATION для HBA. Расширенные данные SRB не требуются для этой функции. |
| SRB_FUNCTION_ABORT_COMMAND (0x10) | Сообщение SCSIMESS_ABORT должно быть отправлено для отмены запроса, на который указывает член NextSrb . Если это запрос с тегами очереди, вместо этого следует использовать SCSIMESS_ABORT_WITH_TAG сообщение. Если указанный запрос был завершен, этот запрос должен быть выполнен нормально. Расширенные данные SRB не требуются для этой функции. ПРИМЕЧАНИЕ. Эта функция не отправляется в минипорт Storport. |
| SRB_FUNCTION_RELEASE_RECOVERY (0x11) | Сообщение SCSIMESS_RELEASE_RECOVERY должно быть отправлено целевому контроллеру. Расширенные данные SRB не требуются для этой функции. ПРИМЕЧАНИЕ. Эта функция не отправляется в минипорт Storport. |
| SRB_FUNCTION_RESET_BUS (0x12) | Шина SCSI должна быть сброшена с помощью сообщения SCSIMESS_BUS_DEVICE_RESET. Минипорт-драйвер получает этот запрос только в том случае, если заданный запрос истек и последующий запрос, чтобы прервать время ожидания запроса, также истекло время ожидания. Расширенные данные SRB не требуются для этой функции. |
| SRB_FUNCTION_TERMINATE_IO (0x14) | Сообщение SCSIMESS_TERMINATE_IO_PROCESS должно быть отправлено для отмены запроса, на который указывает член NextSrb . Если указанный запрос уже завершен, этот запрос должен быть выполнен нормально. Расширенные данные SRB не требуются для этой функции. ПРИМЕЧАНИЕ. Эта функция не отправляется в минипорт Storport. |
| SRB_FUNCTION_RESET_DEVICE (0x16) | Целевой контроллер SCSI должен быть сброшен с помощью сообщения SCSIMESS_BUS_DEVICE_RESET. Минипорт-драйвер должен завершить все активные запросы целевого контроллера. Расширенные данные SRB не требуются для этой функции. |
| SRB_FUNCTION_WMI (0x17) | Запрос — это расширенный запрос, отформатированный как структура SRBEX_DATA_WMI . Смещение для данных расширенного запроса находится в SrbExDataOffset[0]. |
| SRB_FUNCTION_LOCK_QUEUE (0x18) | Содержит запросы, которые помещаются в очередь драйвером портов для определенной логической единицы, как правило, при обработке запроса питания. Допустимы только элементы SRB Length, Function, SrbFlags и OriginalRequest . При блокировке очереди будут обрабатываться только запросы с ORed SrbFlags с SRB_FLAGS_BYPASS_LOCKED_QUEUE . Мини-порты SCSI не обрабатывают запросы SRB_FUNCTION_LOCK_QUEUE . |
| SRB_FUNCTION_UNLOCK_QUEUE (0x19) | Освобождает очередь драйвера порта для логической единицы, которая ранее была заблокирована с помощью SRB_FUNCTION_LOCK_QUEUE. SrbFlags запроса разблокировки должен быть ORed с SRB_FLAGS_BYPASS_LOCKED_QUEUE. Допустимы только элементы SRB Length, Function, SrbFlags и OriginalRequest . Драйверы мини-порта SCSI не обрабатывают запросы SRB_FUNCTION_UNLOCK_QUEUE . |
| SRB_FUNCTION_QUIESCE_DEVICE (0x1A) | Запрос выполняется только между классом хранилища и драйвером порта хранения и не отправляется в мини-порт. Эта функция служит в качестве ожидания драйвером класса для драйвера портов для завершения всех невыполненных операций ввода-вывода. |
| SRB_FUNCTION_RESET_LOGICAL_UNIT (0x20) | Если это возможно, логическая единица должна быть сброшена. Мини-порт HBA должен завершить все активные запросы для логического блока. Расширенные данные SRB не требуются для этой функции. Storport поддерживает этот тип сброса, но порт SCSI не поддерживает. |
| SRB_FUNCTION_POWER (0x24) | Запрос — это расширенный запрос, отформатированный как структура SRBEX_DATA_POWER . Смещение для данных расширенного запроса находится в SrbExDataOffset[0]. |
| SRB_FUNCTION_PNP (0x25) | Запрос — это расширенный запрос PnP, форматированный как структура SRBEX_DATA_PNP . Смещение для данных расширенного запроса находится в SrbExDataOffset[0]. |
| SRB_FUNCTION_DUMP_POINTERS (0x26) | Запрос с этой функцией отправляется в драйвер минипорта Storport, который используется для управления диском, в котором хранятся данные аварийного дампа. Запрос собирает сведения, необходимые драйверу минипорта для поддержки аварийного дампа и гибернации. См. структуру MINIPORT_DUMP_POINTERS . Физический минипорт-драйвер должен задать флаг STOR_FEATURE_DUMP_POINTERS в элементе FeatureSupport своего HW_INITIALIZATION_DATA , чтобы получить запрос с этой функцией. |
| SRB_FUNCTION_FREE_DUMP_POINTERS (0x27) | Запрос с этой функцией отправляется драйверу минипорта Storport, чтобы освободить все ресурсы, выделенные во время предыдущего запроса на SRB_FUNCTION_DUMP_POINTERS. |
SrbFlags
Указывает различные параметры и параметры запроса. SrbFlags доступен только для чтения, за исключением случаев, когда SRB_FLAGS_UNSPECIFIED_DIRECTION установлен, а для обновления SRB_FLAGS_DATA_IN или SRB_FLAGS_DATA_OUT требуются мини-драйверы подчиненных адаптеров DMA. Этот элемент может иметь один или несколько этих флагов.
| Flag | Meaning |
|---|---|
| SRB_FLAGS_QUEUE_ACTION_ENABLE | Указывает, что действия с тегами очереди должны быть включены. |
| SRB_FLAGS_DISABLE_AUTOSENSE | Указывает, что не следует возвращать сведения о смысле запроса. |
| SRB_FLAGS_DATA_IN | Указывает, что данные будут передаваться с устройства в систему. |
| SRB_FLAGS_DATA_OUT | Указывает, что данные будут передаваться из системы на устройство. |
| SRB_FLAGS_UNSPECIFIED_DIRECTION | Определяется для обратной совместимости с интерфейсами ASPI/CAM SCSI, этот флаг указывает, что направление передачи может быть одно из предыдущих, так как оба предыдущих флага заданы. Если этот флаг задан, мини-драйвер должен определить направление передачи, проверив этап данных для целевого объекта на шине SCSI. |
| SRB_FLAGS_NO_DATA_TRANSFER | Указывает, что передача данных с этим запросом отсутствует. Если это задано, флаги SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN и SRB_FLAGS_UNSPECIFIED_DIRECTION понятны. |
| SRB_FLAGS_DISABLE_SYNCH_TRANSFER | Указывает, что HBA, если это возможно, должен выполнять асинхронный ввод-вывод для этого запроса на передачу. Если синхронный ввод-вывод был согласован ранее, перед выполнением передачи HBA необходимо перенаказать асинхронный ввод-вывод. |
| SRB_FLAGS_DISABLE_DISCONNECT | Указывает, что HBA не должен позволить целевому объекту отключиться от шины SCSI во время обработки этого запроса. |
| SRB_FLAGS_BYPASS_FROZEN_QUEUE | Этот флаг не имеет значения для минипорт-драйверов. |
| SRB_FLAGS_NO_QUEUE_FREEZE | Этот флаг не имеет значения для минипорт-драйверов. |
| SRB_FLAGS_IS_ACTIVE | Этот флаг не имеет значения для минипорт-драйверов. |
| SRB_FLAGS_ALLOCATED_FROM_ZONE | Этот флаг не имеет значения для минипорт-драйверов и устарел для новых драйверов классов Windows. В устаревшем драйвере класса Windows это указывает, выделен ли SRB из буфера зоны. Если этот флаг задан, драйвер класса должен вызвать ExInterlockedFreeToZone , чтобы освободить SRB; в противном случае он должен вызывать ExFreePool. Новые драйверы классов должны использовать списки lookaside, а не буферы зоны. |
| SRB_FLAGS_SGLIST_FROM_POOL | Этот флаг не имеет значения для минипорт-драйверов. В драйвере класса это означает, что память для списка точечной или сборной была выделена из непагрегированного пула. Если этот флаг задан, драйвер класса должен вызвать ExFreePool , чтобы освободить память после завершения SRB. |
| SRB_FLAGS_BYPASS_LOCKED_QUEUE | Этот флаг не имеет значения для минипорт-драйверов. Для драйвера порта этот флаг указывает, должен ли запрос обрабатываться, заблокирована ли очередь логического блока. Драйвер более высокого уровня должен задать этот флаг для отправки запроса SRB_FUNCTION_UNLOCK_QUEUE . |
| SRB_FLAGS_NO_KEEP_AWAKE | Этот флаг не имеет значения для минипорт-драйверов. Драйвер класса Windows использует этот флаг, чтобы указать драйверу порта, чтобы завершить запрос, а не включить устройство для обработки этого запроса. |
| SRB_FLAGS_FREE_SENSE_BUFFER | Указывает, что порт или драйвер мини-порта выделил буфер для данных смысле. Это сообщает драйверу класса, что он должен освободить буфер данных смысле после извлечения данных. |
| SRB_FLAGS_D3_PROCESSING | Указывает, что запрос является частью обработки D3. Минипорты, поддерживающие управление питанием среды выполнения, не должны вызывать StorPortPoFxActivateComponent или StorPortPoFxIdleComponent с этими запросами. |
| SRB_FLAGS_ADAPTER_CACHE_ENABLE | Указывает, что адаптер может кэшировать данные. |
ReservedUlong2
Зарезервировано. Установите значение 0.
RequestTag
Содержит значение тега очереди, назначенное драйвером порта для конкретной операционной системы. Если этот элемент используется для очереди с тегами, HBA поддерживает внутреннюю очередь запросов к логическим единицам (LUs) и мини-драйверу taggedQueueing значение TRUE в PORT_CONFIGURATION_INFORMATION для этого HBA.
RequestPriority
Назначение приоритета для SRB. Может быть одним из следующих значений.
| Ценность | Meaning |
|---|---|
| StorIoPriorityVeryLow (0) | Очень низкий приоритет. |
| StorIoPriorityLow (1) | Низкий приоритет. |
| StorIoPriorityNormal (2) | Нормальный приоритет. |
| StorIoPriorityHigh (3) | Высокий приоритет. |
| StorIoPriorityCritical (4) | Критически важный приоритет. |
RequestAttribute
Указывает сообщение с тегами, которое будет использоваться при установке флага SRB_FLAGS_QUEUE_ACTION_ENABLE . Значение может быть одним из следующих значений: SRB_SIMPLE_TAG_REQUEST, SRB_HEAD_OF_QUEUE_TAG_REQUEST или SRB_ORDERED_QUEUE_TAG_REQUEST.
TimeOutValue
Указывает интервал в секундах, что запрос может выполняться до истечения времени ожидания драйвера порта для конкретной операционной системы. Драйверы минипорта не требуются во время запросов, так как драйвер порта уже выполняет.
DUMMYUNIONNAME
Внедренный союз.
DUMMYUNIONNAME.SystemStatus
Используется для хранения сведений о состоянии сбоя системы в условиях сбоя SrbStatus (например, SRB_STATUS_INTERNAL_ERROR).
DUMMYUNIONNAME.RequestTagHigh4Bytes
Используется для хранения больших четырех байтов уникального тега, если включена функция уникального тега.
SystemStatus
Используется драйвером Storport, а не SrbStatus, чтобы сообщить о состоянии завершенного запроса всякий раз, когда запрос не может быть доставлен в минипорт-драйвер. В таких случаях SrbStatus имеет значение SRB_STATUS_INTERNAL_ERROR. Этот элемент используется исключительно для обмена данными между Storport и драйвером класса и не должен использоваться драйверами минипорта.
ZeroGuard1
Область защиты от драйверов, которые интерпретируют эту структуру как SCSI_REQUEST_BLOCK. Установите значение 0.
AddressOffset
Смещение адреса запроса на хранение с начала этой структуры. Это смещение находит STOR_ADDRESS структуру, содержащую адрес запроса.
NumSrbExData
Количество расширенных блоков данных SRB для этого запроса.
DataTransferLength
Указывает размер буфера данных в байтах. При возникновении недозапуска драйвер минипорта должен обновить этот элемент до количества байтов, которые фактически были переданы.
DataBuffer
Указывает на буфер данных. Драйверы минипорта не должны использовать это значение в качестве указателя данных, если драйвер мини-порта не устанавливает MapBuffersзначение TRUE в PORT_CONFIGURATION_INFORMATION для HBA. Однако в случае SRB_FUNCTION_IO_CONTROL запросов минипорт-драйверы могут использовать это значение в качестве указателя данных независимо от значения MapBuffers.
ZeroGuard2
Область защиты от драйверов, которые интерпретируют эту структуру как SCSI_REQUEST_BLOCK. Установите значение 0.
OriginalRequest
Указывает на IRP для этого запроса. Этот член не имеет значения для минипорт-драйверов.
ClassContext
Указывает на данные контекста драйвера класса для этого запроса. Этот член не имеет значения для минипорт-драйверов.
PortContext
Указывает на данные контекста драйвера портов для этого запроса. Этот член не имеет значения для минипорт-драйверов.
MiniportContext
Указывает на расширение Srb. Минипорт-драйвер не должен использовать этот элемент, если он устанавливает SrbExtensionSize равным нулю в HW_INITIALIZATION_DATA. Память в MiniportContext не инициализирована драйвером портов для конкретной операционной системы, а данные, определяемые драйвером минипорта, могут быть доступны непосредственно HBA. Соответствующий физический адрес можно получить путем вызова StorPortGetPhysicalAddress с указателем MiniportContext .
NextSrb
Указывает STORAGE_REQUEST_BLOCK , к которым применяется этот запрос. Только небольшое подмножество запросов использует второй SRB, например SRB_FUNCTION_ABORT_COMMAND.
_STORAGE_REQUEST_BLOCK
SrbExDataOffset[ANYSIZE_ARRAY]
Массив смещения, указывающий расположение расширенных блоков данных для SRB. Этот массив пуст, если NumSrbExData = 0.
Замечания
Начиная с Windows 8 расширенный тип SRB поддерживается с использованием структуры STORAGE_REQUEST_BLOCK . STORAGE_REQUEST_BLOCK расширяет функции SRB, что позволяет добавлять в запрос расширенные блоки данных для функции SRB. Поддержка запросов SRB с помощью структуры SCSI_REQUEST_BLOCK продолжится.
Если NumSrbExData> 0, смещения для расширенных блоков данных SRB находятся в массиве SrbExDataOffset . Каждое смещение относительно начала этой структуры и указывает на SRBEX_DATA структуру, содержащую расширенный блок данных.
Адрес целевого устройства для SRB находится в STOR_ADDRESS структуре , указанной Адресом AddressOffset.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Доступно в Windows 8 и более поздних версиях Windows. |
| Header | storport.h (include Storport.h, Srb.h, Minitape.h) |