структура SCSI_WMI_REQUEST_BLOCK (minitape.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 должен пересмотреть асинхронный ввод-вывод перед выполнением передачи.
SRB_FLAGS_DISABLE_DISCONNECT
Указывает, что адаптер HBA не должен разрешать целевому объекту отключаться от шины SCSI во время обработки этого запроса.
DataTransferLength
Указывает размер буфера данных в байтах. Драйвер мини-порта вызывает ScsiPortWmiDispatchFunction с параметром BufferSize , равным этому значению. Если происходит недостаточное выполнение, драйвер мини-порта должен обновить этот элемент до количества фактически переданных байтов.
TimeOutValue
Указывает интервал в секундах, с течением времени выполнения запроса до того, как драйвер порта операционной системы может считать, что истекло время ожидания. Драйверы мини-порта не требуются для запросов времени, так как драйвер порта уже это делает.
DataBuffer
Указывает на буфер данных. Драйвер мини-порта вызывает ScsiPortWmiDispatchFunction с параметром Buffer , равным этому значению. Драйверы минипорта могут использовать это значение в качестве указателя данных независимо от значения 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 в драйверах miniport см. в статье Инструментарий управления Windows.
Требования
Требование | Значение |
---|---|
Заголовок | minitape.h (включая Storport.h, Srb.h, Storport.h, Minitape.h) |