структура SCSI_WMI_REQUEST_BLOCK (srb.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 с дополнительным значением. Значение подфункционации соответствует дополнительному номеру 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. Драйвер минипорта не должен использовать этот элемент, если для него задано значение SrbExtensionSize равным нулю в HW_INITIALIZATION_DATA. Память в SrbExtension не инициализирована драйвером порта для конкретной ОС, и данные, определяемые драйвером мини-порта, могут обращаться непосредственно с помощью HBA. Соответствующий физический адрес можно получить, вызвав ScsiPortGetPhysicalAddress с указателем SrbExtension .

Reserved4

Зарезервировано для использования системой и недоступно для использования драйверами минипорта.

Reserved6

Зарезервировано для использования системой и недоступно для использования драйверами минипорта. Этот элемент допустим начиная с Windows Server 2003 с пакетом обновления 1 (SP1).

Reserved5[16]

Зарезервировано для использования системой и недоступно для использования драйверами минипорта.

Комментарии

Windows NT класс хранения и драйверы фильтров могут отправлять WMI SRB в драйвер системного порта. Драйвер системного порта будет обрабатывать определенные запросы WMI от имени драйверов мини-порта. Если драйвер порта не может обработать запрос WMI, он перенаправит запрос драйверу мини-порта.

Драйвер минипорта получает запросы WMI от драйвера портов только в том случае, если драйвер мини-порта устанавливает WmiDataProvider в структуре PORT_CONFIGURATION_INFORMATION. Если драйвер минипорта поддерживает запрос, он должен обработать его и завершить запрос, дважды вызвав ScsiPortNotification , сначала с RequestComplete , а затем с помощью NextRequest (или NextLuRequest).

Сведения о поддержке WMI в драйверах мини-порта см. в инструментарии управления Windows.

Требования

   
Заголовок srb.h (include Storport.h, Srb.h, Storport.h, Minitape.h)

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

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_REQUEST_BLOCK

ScsiPortNotification

ScsiPortWmiDispatchFunction