структура SCSI_WMI_REQUEST_BLOCK (storport.h)
Эта структура представляет собой специальную версию SCSI_REQUEST_BLOCK для использования с командами WMI.
Синтаксис
typedef struct _SCSI_WMI_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR WMISubFunction;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR Reserved1;
UCHAR WMIFlags;
UCHAR Reserved2[2];
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID DataPath;
PVOID Reserved3;
PVOID OriginalRequest;
PVOID SrbExtension;
ULONG Reserved4;
ULONG Reserved6;
UCHAR Reserved5[16];
} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
Члены
Length
Задает размер этой структуры в байтах.
Function
SRB_FUNCTION_WMI, указывающее, что запрос является запросом WMI. Если для этого элемента не задано значение SRB_FUNCTION_WMI, драйвер мини-порта не должен выполнить запрос.
SrbStatus
Возвращает состояние завершенного запроса. Этот элемент должен быть задан драйвером мини-порта, прежде чем уведомлять драйвер операционной системы о завершении запроса путем вызова ScsiPortNotification с помощью RequestComplete. Значение этого элемента может быть любым значением, указанным для SrbStatus в SCSI_REQUEST_BLOCK.
WMISubFunction
Указывает выполняемую операцию WMI. Драйвер мини-порта вызывает ScsiPortWmiDispatchFunction , для параметра MinorFunction задано это значение. Значение подфункции соответствует вспомогательному номеру IRP WMI, идентифицирующее операцию WMI.
PathId
Указывает порт или шину SCSI для запроса. Это значение отсчитывается от нуля. Если SRB_WMI_FLAGS_ADAPTER_REQUEST задано в WMIFlags, этот элемент зарезервирован.
TargetId
Указывает целевой контроллер или устройство в шине. Если SRB_WMI_FLAGS_ADAPTER_REQUEST задано в WMIFlags, этот элемент зарезервирован.
Lun
Указывает логический номер устройства. Если SRB_WMI_FLAGS_ADAPTER_REQUEST задано в WMIFlags, этот элемент зарезервирован.
Reserved1
Зарезервировано для системного использования и недоступно для использования драйверами мини-портов.
WMIFlags
Указывает, что запрос WMI предназначен для адаптера, если задано SRB_WMI_FLAGS_ADAPTER_REQUEST и зарезервированы PathId, TargetId и Lun . В противном случае WMIFlags будет иметь значение NULL, указывая, что запрос предназначен для устройства, указанного в параметрах PathId, TargetId и Lun.
Reserved2[2]
Зарезервировано для системного использования и недоступно для использования драйверами мини-портов.
SrbFlags
Указывает различные параметры и параметры запроса. SrbFlags доступен только для чтения. Для этого элемента будет задан один или несколько следующих флагов ORed вместе:
SRB_FLAGS_DATA_IN
Указывает, что данные будут передаваться с устройства в систему.
SRB_FLAGS_DATA_OUT
Указывает, что данные будут передаваться из системы на устройство.
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 во время обработки этого запроса.
DataTransferLength
Указывает размер буфера данных в байтах. Драйвер мини-порта вызывает ScsiPortWmiDispatchFunction с параметром BufferSize , равным этому значению. Если происходит недостаточное выполнение, драйвер мини-порта должен обновить этот элемент до количества фактически переданных байтов.
TimeOutValue
Указывает интервал в секундах, который может выполнить запрос до того, как драйвер порта операционной системы может считать, что истекло время ожидания. Драйверы мини-портов не требуются для запросов времени, так как драйвер порта уже это делает.
DataBuffer
Указывает на буфер данных. Драйвер мини-порта вызывает ScsiPortWmiDispatchFunctionс буфером, равным этому значению. Драйверы мини-портов могут использовать это значение в качестве указателя данных независимо от значения MapBuffers в PORT_CONFIGURATION_INFORMATION для HBA. Драйвер мини-порта не может передавать данные непосредственно в буфер с помощью DMA.
DataPath
Указывает путь к данным WMI для этого запроса. Драйвер мини-порта вызывает ScsiPortWmiDispatchFunction , а dataPath имеет это значение.
Reserved3
Зарезервировано для системного использования и недоступно для использования драйверами мини-портов.
OriginalRequest
Указывает на IRP для этого запроса. Этот член не имеет отношения к драйверам минипорта.
SrbExtension
Указывает на расширение Srb. Драйвер мини-порта не должен использовать этот член, если в HW_INITIALIZATION_DATA для SrbExtensionSize задано значение 0. Память в SrbExtension не инициализируется драйвером порта, зависящим от ОПЕРАЦИОННОй системы, и к данным, определяемым драйвером мини-порта, можно получить непосредственно с помощью адаптера HBA. Соответствующий физический адрес можно получить, вызвав ScsiPortGetPhysicalAddress с указателем SrbExtension .
Reserved4
Зарезервировано для системного использования и недоступно для использования драйверами мини-портов.
Reserved6
Зарезервировано для системного использования и недоступно для использования драйверами мини-портов. Этот член действителен, начиная с Windows Server 2003 с пакетом обновления 1 (SP1).
Reserved5[16]
Зарезервировано для системного использования и недоступно для использования драйверами мини-портов.
Комментарии
Windows NT класс хранения и драйверы фильтров могут отправлять SSP-файлы WMI в драйвер системного порта. Драйвер системного порта будет обрабатывать определенные запросы WMI от имени драйверов мини-портов. Если драйвер порта не может обработать запрос WMI, он перенаправит запрос драйверу мини-порта.
Драйвер мини-порта получает запросы WMI от драйвера порта, только если драйвер мини-порта задает WmiDataProvider в структуре PORT_CONFIGURATION_INFORMATION. Если драйвер мини-порта поддерживает запрос, он должен обработать его и завершить запрос, вызвав ScsiPortNotification дважды, сначала с requestComplete , а затем с помощью NextRequest (или NextLuRequest).
Сведения о поддержке WMI в драйверах мини-портов см. в статье Инструментарий управления Windows.
Требования
Требование | Значение |
---|---|
Заголовок | storport.h (включая Storport.h, Srb.h, Storport.h, Minitape.h) |