структура SCSI_PNP_REQUEST_BLOCK (srb.h)
СтруктураSCSI_PNP_REQUEST_BLOCK — это специальная версия SCSI_REQUEST_BLOCK, которая используется для запросов plug and play (PNP).
Синтаксис
typedef struct _SCSI_PNP_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR PnPSubFunction;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
STOR_PNP_ACTION PnPAction;
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID SenseInfoBuffer;
struct _SCSI_REQUEST_BLOCK *NextSrb;
PVOID OriginalRequest;
PVOID SrbExtension;
ULONG SrbPnPFlags;
ULONG Reserved;
UCHAR Reserved4[16];
} SCSI_PNP_REQUEST_BLOCK, *PSCSI_PNP_REQUEST_BLOCK;
Члены
Length
Размер структуры SCSI_PNP_REQUEST_BLOCK в байтах.
Function
Выполняемая операция. Для структуры SCSI_PNP_REQUEST_BLOCK этот элемент всегда имеет значение SRB_FUNCTION_PNP.
SrbStatus
Состояние завершенного запроса. Минипорт-драйвер должен задать это значение перед уведомлением драйвера Storport о завершении запроса. Минипорт-драйвер уведомляет драйвер Storport о том, что запрос выполнен путем вызова подпрограммы StorPortNotification с типом уведомления RequestComplete. Список возможных значений состояния см. в SCSI_REQUEST_BLOCK.
PnPSubFunction
Этот элемент в настоящее время не используется. Мини-порты игнорируют этот элемент.
PathId
Идентификатор порта SCSI или шины для запроса. Это значение равно нулю.
TargetId
Целевой контроллер или идентификатор устройства на шине.
Lun
Логический номер единицы (LUN) устройства.
PnPAction
Действие подключаемого модуля и воспроизведения для выполнения. Этот элемент может иметь одно из следующих значений:
SrbFlags
Минипорт-драйвер должен игнорировать этот элемент.
DataTransferLength
Минипорт-драйвер должен игнорировать этот элемент.
TimeOutValue
Интервал в секундах, который запрос может выполняться до того, как драйвер Storport определяет время ожидания запроса.
DataBuffer
Минипорт-драйвер должен игнорировать этот элемент.
SenseInfoBuffer
Минипорт-драйвер должен игнорировать этот элемент.
NextSrb
Минипорт-драйвер должен игнорировать этот элемент.
OriginalRequest
Минипорт-драйвер должен игнорировать этот элемент.
SrbExtension
Указатель на расширение SRB. Минипорт-драйвер не должен использовать этот элемент, если он устанавливает SrbExtensionSize значение нулю в структуре HW_INITIALIZATION_DATA. Драйвер Storport не инициализирует память, на которую указывает этот член. HBA может напрямую получить доступ к данным, которые драйвер минипорта записывает в расширение SRB. Минипорт-драйвер может получить физический адрес расширения SRB, вызвав подпрограмму StorPortGetPhysicalAddress.
SrbPnPFlags
Флаги PNP. В настоящее время единственным допустимым флагом является SRB_PNP_FLAGS_ADAPTER_REQUEST, указывающее, что запрос PNP предназначен для адаптера, а не для одного из устройств на адаптере. Если этот флаг задан, драйвер минипорта должен игнорировать значения в PathId, TargetIdи Lun.
Reserved
Зарезервировано для использования системы.
Reserved4[16]
Зарезервировано для использования системы.
Замечания
Драйвер Storport отправляет SCSI_PNP_REQUEST_BLOCK запросы к драйверу минипорта, чтобы уведомить драйвер минипорта о событиях подключаемого модуля Windows и воспроизведения, влияющих на устройства хранения, подключенные к адаптеру.
Драйвер Storport вызывает HwStorBuildIo для передачи SROB-объектов в минипорт-драйвер. HwStorBuildIo проверяет функцию элемента SRB, чтобы определить тип SRB. Если для элемента функции задано значение SRB_FUNCTION_PNP, SRB — это структура типа SCSI_PNP_REQUEST_BLOCK.
Требования
Требование | Ценность |
---|---|
заголовка | srb.h (include Storport.h, Minitape.h, Srb.h) |