структура STORAGE_REQUEST_BLOCK (srb.h)

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;
  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;

Члены

Length

Задает размер заголовка SRB для совместимости со структурой SCSI_REQUEST_BLOCK . Это равно смещению элемента Signature данной структуры.

Function

Задайте значение SRB_FUNCTION_STORAGE_REQUEST_BLOCK , чтобы указать, что это расширенный SRB. В отличие от SCSI_REQUEST_BLOCK, идентификатор функции SRB находится в элементе SrbFunction .

SrbStatus

Возвращает состояние завершенного запроса. Этот член должен быть задан драйвером мини-порта, прежде чем он уведомляет драйвер операционной системы о выполнении запроса путем вызова ScsiPortNotification с RequestComplete. Значение этого элемента может иметь одно из следующих значений:

Значение Значение
SRB_STATUS_PENDING (0x00) Указывает, что запрос выполняется. Драйвер порта операционной системы инициализирует SrbStatus этим значением.
SRB_STATUS_SUCCESS (0x01) Указывает, что запрос был успешно выполнен.
SRB_STATUS_ABORTED (0x02) Указывает, что запрос был прерван в соответствии с указаниями драйвера порта. Драйвер мини-порта устанавливает это состояние в элементе NextSrb для успешного SRB_FUNCTION_ABORT_COMMAND запроса.
SRB_STATUS_ABORT_FAILED (0x03) Указывает, что попытка прервать запрос завершилась сбоем. Возвращает это состояние для запроса SRB_FUNCTION_ABORT_COMMAND, если не удается найти указанный запрос.
SRB_STATUS_ERROR (0x04) Указывает, что запрос был выполнен с ошибкой в состоянии шины SCSI.
SRB_STATUS_BUSY (0x05) Указывает, что драйверу мини-порта или целевому устройству не удалось принять запрос в настоящее время. Драйвер порта операционной системы повторно отправляет запрос позже.
SRB_STATUS_INVALID_REQUEST (0x06) Указывает, что драйвер мини-порта не поддерживает данный запрос.
SRB_STATUS_INVALID_PATH_ID (0x07) Указывает, что pathId , указанный в SRB, не существует.
SRB_STATUS_NO_DEVICE (0x08) Указывает, что устройство не ответило.
SRB_STATUS_TIMEOUT (0x09) Указывает, что истекло время ожидания запроса.
SRB_STATUS_SELECTION_TIMEOUT (0x0A) Указывает, что истекло время ожидания выбора устройства SCSI.
SRB_STATUS_COMMAND_TIMEOUT (0x0B) Указывает, что целевой объект не выполнил команду в течение ограниченного времени.
SRB_STATUS_MESSAGE_REJECTED (0x0D) Указывает, что целевой объект отклонил сообщение. Обычно возвращается только для таких запросов типа сообщений, как SRB_FUNCTION_TERMINATE_IO.
SRB_STATUS_BUS_RESET (0x0E) Указывает, что во время выполнения этого запроса произошел сброс шины.
SRB_STATUS_PARITY_ERROR (0x0F) Указывает, что в шине SCSI произошла ошибка четности и что повторная попытка завершилась сбоем.
SRB_STATUS_REQUEST_SENSE_FAILED (0x10) Указывает, что команда с чувством запроса завершилась сбоем. Возвращается только в том случае, если адаптер шины узла (HBA) выполняет функцию автоматического запроса, а драйвер мини-порта присвоил параметру AutoRequestSense значение TRUE в PORT_CONFIGURATION_INFORMATION для этого адаптера HBA.
SRB_STATUS_NO_HBA (0x11) Указывает, что HBA не отвечает.
SRB_STATUS_DATA_OVERRUN (0x12) Указывает, что произошла ошибка переполнения или недостаточного выполнения данных. Драйвер мини-порта также должен обновить элемент DataTransferLength SRB, чтобы указать, сколько данных фактически было передано в случае недостаточного выполнения.
SRB_STATUS_UNEXPECTED_BUS_FREE (0x13) Указывает, что целевой объект неожиданно отключен.
SRB_STATUS_PHASE_SEQUENCE_FAILURE (0x14) Указывает, что адаптер HBA обнаружил недопустимую ошибку сбоя последовательности фазы.
SRB_STATUS_BAD_SRB_BLOCK_LENGTH (0x15) Указывает, что запрос завершился сбоем из-за недопустимой длины SRB.
SRB_STATUS_REQUEST_FLUSHED (0x16) Указывает, что запрос состояния был остановлен.
SRB_STATUS_INVALID_LUN (0x20) Указывает, что значение lun в SRB является недопустимым.
SRB_STATUS_INVALID_TARGET_ID (0x21) Указывает, что значение TargetID в SRB является недопустимым.
SRB_STATUS_BAD_FUNCTION (0x22) Указывает, что код функции SRB не поддерживается.
SRB_STATUS_ERROR_RECOVERY (0x23) Указывает, что запрос был выполнен с ошибкой в состоянии шины SCSI и что было получено сообщение SCSI INITIAT RECOVERY.
SRB_STATUS_NOT_POWERED (0x24) Указывает, что запрос завершился сбоем, так как целевой объект не работает. Для запросов с SRB_FLAGS_NO_KEEP_AWAKE, заданными в SrbFlags, запросы, отправленные в LUN, которые отключены, завершаются ошибкой с таким состоянием.
SRB_STATUS_LINK_DOWN (0x25) Указывает, что запрос завершился сбоем, так как ссылка не работает.
SRB_STATUS_INTERNAL_ERROR (0x30) Указывает, что драйверу Storport не удалось доставить запрос драйверу мини-порта или целевому устройству. В таких случаях состояние записывается в InternalStatus.
SRB_STATUS_QUEUE_FROZEN (0x40) Драйвер мини-порта никогда не должен присваивать члену SrbStatus это значение. Драйвер порта Windows может задать это значение, чтобы сообщить драйверу класса хранения о том, что его очередь запросов для определенного периферийного устройства была заблокирована.
SRB_STATUS_AUTOSENSE_VALID (0x80) Указывает, что данные, возвращаемые в SenseInfoBuffer , являются допустимыми.

ReservedUlong1

Зарезервировано. Задайте значение 0.

Signature

Сигнатура расширенного формата SRB. Для этого параметра задано значение SRB_SIGNATURE.

Version

Версия используемой структуры. Текущая версия — STORAGE_REQUEST_BLOCK_VERSION_1.

SrbLength

Длина этого расширенного SRB в байтах, включая эту структуру, адрес и все расширенные данные SRB.

SrbFunction

Указывает выполняемую операцию, которая может иметь одно из следующих значений:

Значение Значение
SRB_FUNCTION_EXECUTE_SCSI (0x00) Запрос ввода-вывода устройства SCSI должен выполняться в целевой логической единице. При использовании NumSrbExData> 0 одна или несколько из следующих расширенных структур блоков запросов находятся со смещениями, указанными в SrbExDataOffset: SRBEX_DATA_SCSI_CDB16, SRBEX_DATA_SCSI_CDB32, SRBEX_DATA_SCSI_CDB_VAR, SRBEX_DATA_BIDIRECTIONALSRBEX_DATA_IO_INFO
SRB_FUNCTION_IO_CONTROL (0x02) Запрос — это запрос элемента управления вводом-выводом, который создается в приложении пользовательского режима с выделенным адаптером HBA. DataBuffer SRB указывает на заголовок SRB_IO_CONTROL, за которым следует область данных. Значение в DataBuffer может использоваться драйвером независимо от значения MapBuffers. Допустимы только члены функции SRB, SrbFlags, TimeOutValue, DataBuffer и DataTransferLength , а также член SrbExtension , если драйвер мини-порта запросил расширения SRB при инициализации. Если драйвер мини-порта управляет выделенным приложением HBA таким образом, чтобы он поддерживал этот запрос, драйвер мини-порта должен выполнить запрос и уведомить драйвер порта операционной системы о завершении SRB, используя обычный механизм вызовов ScsiPortNotification с RequestComplete и NextRequest.
SRB_FUNCTION_RECEIVE_EVENT (0x03) Адаптер безопасности должен быть подготовлен к получению асинхронного уведомления о событии от целевого объекта. Элемент SRB DataBuffer указывает место размещения данных. ПРИМЕЧАНИЕ. Эта функция не отправляется в мини-порт от Storport.
SRB_FUNCTION_SHUTDOWN (0x07) Система завершает работу. Драйвер мини-порта может получить несколько из этих уведомлений, прежде чем все действия системы фактически остановятся. Однако последнее уведомление о завершении работы будет появляться после последнего запуска ввода-вывода. Расширенные данные SRB не требуются для этой функции.
SRB_FUNCTION_FLUSH (0x08) Драйвер мини-порта должен очистить все кэшированные данные для целевого устройства. Этот запрос отправляется драйверу мини-порта только в том случае, если для параметра CachesData задано значение TRUE в PORT_CONFIGURATION_INFORMATION для адаптера шины. Расширенные данные 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) Запрос — это расширенный запрос power, отформатированный в виде SRBEX_DATA_WMI структуры. Смещение данных расширенного запроса находится в SrbExDataOffset[0].
SRB_FUNCTION_LOCK_QUEUE (0x18) Содержит запросы, которые помещаются в очередь драйвером порта для определенной логической единицы, обычно во время обработки запроса на питание. Допустимы только элементы SRB Length, Function, SrbFlags и OriginalRequest . Если очередь заблокирована, будут обрабатываться только запросы с SrbFlags ORed с SRB_FLAGS_BYPASS_LOCKED_QUEUE . Драйверы SCSI miniport не обрабатывают запросы SRB_FUNCTION_LOCK_QUEUE .
SRB_FUNCTION_UNLOCK_QUEUE (0x19) Освобождает очередь драйвера порта для логической единицы, которая ранее была заблокирована SRB_FUNCTION_LOCK_QUEUE. SrbFlags запроса на разблокировку должны быть помечены SRB_FLAGS_BYPASS_LOCKED_QUEUE. Допустимы только элементы SRB Length, Function, SrbFlags и OriginalRequest . Драйверы SCSI miniport не обрабатывают запросы SRB_FUNCTION_UNLOCK_QUEUE .
SRB_FUNCTION_QUIESCE_DEVICE (0x1A) Запрос выполняется только между классом хранения и драйвером порта хранения и не отправляется в мини-порт. Эта функция служит в качестве ожидания драйвера класса, чтобы драйвер порта завершил все незавершенные операции ввода-вывода.
SRB_FUNCTION_RESET_LOGICAL_UNIT (0x20) Логическая единица должна быть сброшена, если это возможно. Драйвер мини-порта HBA должен выполнять все активные запросы для логической единицы. Расширенные данные SRB не требуются для этой функции. Storport поддерживает этот тип сброса, но порт SCSI — нет.
SRB_FUNCTION_POWER (0x24) Запрос — это расширенный запрос power, отформатированный в виде 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 требуются драйверы miniport подчиненных адаптеров DMA. Этот элемент может иметь один или несколько из этих флагов.

Flag Значение
SRB_FLAGS_NO_DATA_TRANSFER (0x00000000) Указывает на отсутствие передачи данных с этим запросом. Если этот параметр установлен, флаги SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN и SRB_FLAGS_UNSPECIFIED_DIRECTION будут ясными.
SRB_FLAGS_QUEUE_ACTION_ENABLE (0x00000002) Указывает, что действия с очередью с тегами должны быть включены.
SRB_FLAGS_DISABLE_DISCONNECT (0x00000004) Указывает, что адаптер HBA не должен разрешать целевому объекту отключаться от шины SCSI во время обработки этого запроса.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER (0x00000008) Указывает, что адаптер шины должен по возможности выполнять асинхронные операции ввода-вывода для этого запроса на передачу. Если синхронные операции ввода-вывода были согласованы ранее, HBA должен пересмотреть асинхронный ввод-вывод перед выполнением передачи.
SRB_FLAGS_BYPASS_FROZEN_QUEUE (0x00000010) Этот флаг не имеет отношения к водителям минипорта.
SRB_FLAGS_DISABLE_AUTOSENSE (0x00000020) Указывает, что не следует возвращать информацию о смысле запроса.
SRB_FLAGS_DATA_IN (0x00000040) Указывает, что данные будут передаваться с устройства в систему.
SRB_FLAGS_DATA_OUT (0x00000080) Указывает, что данные будут передаваться из системы на устройство.
SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) Этот флаг, определенный для обратной совместимости с интерфейсами ASPI/CAM SCSI, указывает, что направление передачи может быть любой из предыдущих, так как установлены оба предыдущих флага. Если этот флаг установлен, драйвер мини-порта должен определить направление передачи, проверив этап данных для целевого объекта в шине SCSI.
SRB_FLAGS_NO_QUEUE_FREEZE (0x00000100) Этот флаг не имеет отношения к водителям минипорта.
SRB_FLAGS_ADAPTER_CACHE_ENABLE (0x00000200) Указывает, что адаптер может кэшировать данные.
SRB_FLAGS_FREE_SENSE_BUFFER (0x00000400) Указывает, что порт или драйвер минипорта выделил буфер для данных контроля. Это информирует драйвер класса о том, что он должен освободить буфер данных осмысления после извлечения данных.
SRB_FLAGS_D3_PROCESSING (0x00000800) Указывает, что запрос является частью обработки D3. Минипорты, поддерживающие управление питанием среды выполнения, не должны вызывать StorPortPoFxActivateComponent или StorPortPoFxIdleComponent с этими запросами.
SRB_FLAGS_SEQUENTIAL_REQUIRED (0x00001000) Указывает, что диапазон LBA попадает в требуемую последовательную зону записи.
SRB_FLAGS_IS_ACTIVE (0x00010000) Этот флаг не имеет отношения к водителям минипорта.
SRB_FLAGS_ALLOCATED_FROM_ZONE (0x00020000) Этот флаг не имеет отношения к драйверам miniport и устарел для новых драйверов класса Windows. Для устаревшего драйвера класса Windows это указывает, был ли SRB выделен из буфера зоны. Если этот флаг установлен, драйвер класса должен вызвать ExInterlockedFreeToZone , чтобы освободить SRB; в противном случае он должен вызывать ExFreePool. Новые драйверы классов должны использовать списки lookaside, а не буферы зоны.
SRB_FLAGS_SGLIST_FROM_POOL (0x00040000) Этот флаг не имеет отношения к водителям минипорта. Для драйвера класса это означает, что память для точечных и сборных списков была выделена из непагрегированного пула. Если этот флаг установлен, драйвер класса должен вызвать ExFreePool , чтобы освободить память после завершения SRB.
SRB_FLAGS_BYPASS_LOCKED_QUEUE (0x00080000) Этот флаг не имеет отношения к водителям минипорта. Для драйвера порта этот флаг указывает, что запрос должен обрабатываться независимо от того, заблокирована ли очередь логических единиц. Драйвер более высокого уровня должен установить этот флаг для отправки запроса SRB_FUNCTION_UNLOCK_QUEUE .
SRB_FLAGS_NO_KEEP_AWAKE (0x00100000) Этот флаг не имеет отношения к водителям минипорта. Драйвер класса Windows использует этот флаг, чтобы указать драйверу порта на неудачу запроса, а не для включения устройства для обработки этого запроса.
SRB_FLAGS_PORT_DRIVER_ALLOCSENSE (0x00200000) Драйвер порта должен выделить буфер чувств для SRB.
SRB_FLAGS_PORT_DRIVER_SENSEHASPORT (0x00400000) Не рекомендуется; не использовать.
SRB_FLAGS_DONT_START_NEXT_PACKET (0x00800000) Не рекомендуется; не использовать.
SRB_FLAGS_PORT_DRIVER_RESERVED (0x0F000000) Зарезервировано для системного использования.
SRB_FLAGS_CLASS_DRIVER_RESERVED (0xF0000000) Зарезервировано для системного использования.

ReservedUlong2

Зарезервировано. Задайте значение 0.

RequestTag

Содержит значение тега очереди, назначенное драйвером порта для конкретной операционной системы. Если этот элемент используется для очередей с тегами, HBA поддерживает внутреннюю очередь запросов к логическим единицам , а драйвер miniport устанавливает для параметра TaggedQueueing значение TRUE в PORT_CONFIGURATION_INFORMATION для этого адаптера.

RequestPriority

Назначение приоритета для SRB. Это одно из следующих _STOR_IO_PRIORITY_HINT значений :

Значение Значение
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

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

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 для адаптера шины. Однако в случае SRB_FUNCTION_IO_CONTROL запросов драйверы минипорта могут использовать это значение в качестве указателя данных независимо от значения MapBuffers.

ZeroGuard2

Область защиты от водителей, которые интерпретируют эту структуру как SCSI_REQUEST_BLOCK. Задайте значение 0.

OriginalRequest

Указывает на IRP для этого запроса. Этот элемент не относится к драйверам минипорта.

ClassContext

Указывает на данные контекста драйвера класса для этого запроса. Этот элемент не относится к драйверам минипорта.

PortContext

Указывает на данные контекста драйвера порта для этого запроса. Этот элемент не относится к драйверам минипорта.

MiniportContext

Указывает на расширение Srb. Драйвер мини-порта не должен использовать этот элемент, если в HW_INITIALIZATION_DATA для SrbExtensionSize задано значение 0. Память в MiniportContext не инициализируется драйвером порта, зависящим от операционной системы, и к данным, определяемым драйвером мини-порта, может обращаться напрямую адаптер HBA. Соответствующий физический адрес можно получить, вызвав ScsiPortGetPhysicalAddress с указателем 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
Верхняя часть srb.h (включая Storport.h, Srb.h, Minitape.h)

См. также раздел

SCSI_REQUEST_BLOCK

STOR_ADDRESS