структура SCSI_WMI_REQUEST_BLOCK (minitape.h)

Эта структура представляет собой специальную версию SCSI_REQUEST_BLOCK для использования с командами WMI.

Примечание В будущем модели драйвера портов SCSI и драйвера для минипорта SCSI могут быть изменены или недоступны. Вместо этого рекомендуется использовать модели драйверов Storport и драйверов для мини-портов Storport .
 

Синтаксис

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)

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

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_REQUEST_BLOCK

ScsiPortNotification

ScsiPortWmiDispatchFunction