estrutura SCSI_WMI_REQUEST_BLOCK (srb.h)

Essa estrutura é uma versão especial de um SCSI_REQUEST_BLOCK para uso com comandos WMI.

Nota Os modelos de driver de porta SCSI e driver de miniporto SCSI podem ser alterados ou indisponíveis no futuro. Em vez disso, recomendamos usar os modelos de driver do Storport e do driver de miniporto storport .
 

Sintaxe

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;

Membros

Length

Especifica o tamanho em bytes dessa estrutura.

Function

SRB_FUNCTION_WMI, que especifica que a solicitação é uma solicitação WMI. Se esse membro não estiver definido como SRB_FUNCTION_WMI, o driver de miniporte deverá falhar na solicitação.

SrbStatus

Retorna o status da solicitação concluída. Esse membro deve ser definido pelo driver de miniporte antes de notificar o driver específico do sistema operacional de que a solicitação foi concluída chamando ScsiPortNotification com RequestComplete. O valor desse membro pode ser qualquer valor listado para SrbStatus em SCSI_REQUEST_BLOCK.

WMISubFunction

Indica a ação WMI a ser executada. Um driver de miniporto chama ScsiPortWmiDispatchFunction com MinorFunction definido como esse valor. O valor da subfunção corresponde ao número de IRP secundário do WMI que identifica a operação WMI.

PathId

Indica a porta ou o barramento SCSI para a solicitação. Esse valor é baseado em zero. Se SRB_WMI_FLAGS_ADAPTER_REQUEST estiver definido em WMIFlags, esse membro será reservado.

TargetId

Indica o controlador de destino ou o dispositivo no barramento. Se SRB_WMI_FLAGS_ADAPTER_REQUEST estiver definido em WMIFlags, esse membro será reservado.

Lun

Indica o número da unidade lógica do dispositivo. Se SRB_WMI_FLAGS_ADAPTER_REQUEST estiver definido em WMIFlags, esse membro será reservado.

Reserved1

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

WMIFlags

Indica que a solicitação WMI será para o adaptador se SRB_WMI_FLAGS_ADAPTER_REQUEST estiver definido e se PathId, TargetId e Lun estiverem reservados. Caso contrário, WMIFlags será NULL, indicando que a solicitação é para o dispositivo especificado por PathId, TargetId e Lun.

Reserved2[2]

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

SrbFlags

Indica vários parâmetros e opções sobre a solicitação. SrbFlags é somente leitura. Esse membro será definido como um ou mais dos seguintes sinalizadores ORed juntos:

SRB_FLAGS_DATA_IN

Indica que os dados serão transferidos do dispositivo para o sistema.

SRB_FLAGS_DATA_OUT

Indica que os dados serão transferidos do sistema para o dispositivo.

SRB_FLAGS_NO_DATA_TRANSFER

Indica nenhuma transferência de dados com essa solicitação. Se isso estiver definido, os sinalizadores SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN e SRB_FLAGS_UNSPECIFIED_DIRECTION estarão claros.

SRB_FLAGS_DISABLE_SYNCH_TRANSFER

Indica que o HBA, se possível, deve executar E/S assíncrona para essa solicitação de transferência. Se a E/S síncrona tiver sido negociada anteriormente, o HBA deverá renegociar por E/S assíncrona antes de executar a transferência.

SRB_FLAGS_DISABLE_DISCONNECT

Indica que o HBA não deve permitir que o destino se desconecte do barramento SCSI durante o processamento dessa solicitação.

DataTransferLength

Indica o tamanho em bytes do buffer de dados. Um driver de miniporto chama ScsiPortWmiDispatchFunction com BufferSize definido como esse valor. Se ocorrer uma subexecutação, o driver de miniporto deverá atualizar esse membro para o número de bytes realmente transferidos.

TimeOutValue

Indica o intervalo em segundos que a solicitação pode ser executada antes que o driver de porta específico do sistema operacional considere o tempo limite. Os drivers de miniporte não são necessários para solicitações de tempo porque o driver de porta já faz isso.

DataBuffer

Aponta para o buffer de dados. Um driver de miniporto chama ScsiPortWmiDispatchFunction com Buffer definido como esse valor. Os drivers de miniport podem usar esse valor como um ponteiro de dados, independentemente do valor de MapBuffers no PORT_CONFIGURATION_INFORMATION para o HBA. Um driver de miniporte não pode transferir dados diretamente para o buffer usando o DMA.

DataPath

Especifica o caminho de dados WMI para essa solicitação. Um driver de miniporto chama ScsiPortWmiDispatchFunction com DataPath definido como esse valor.

Reserved3

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

OriginalRequest

Aponta para o IRP para essa solicitação. Esse membro é irrelevante para miniportar drivers.

SrbExtension

Aponta para a extensão Srb. Um driver de miniporte não deverá usar esse membro se ele definir SrbExtensionSize como zero no HW_INITIALIZATION_DATA. A memória em SrbExtension não é inicializada pelo driver de porta específico do sistema operacional e os dados determinados pelo driver de miniport podem ser acessados diretamente pelo HBA. O endereço físico correspondente pode ser obtido chamando ScsiPortGetPhysicalAddress com o ponteiro SrbExtension .

Reserved4

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

Reserved6

Reservado para uso do sistema e não disponível para uso por drivers de miniport. Esse membro é válido a partir do Windows Server 2003 com o SP1.

Reserved5[16]

Reservado para uso do sistema e não disponível para uso por drivers de miniport.

Comentários

Windows NT drivers de classe de armazenamento e filtro podem enviar SRBs WMI para o driver de porta do sistema. O driver de porta do sistema lidará com determinadas solicitações WMI em nome de drivers de miniport. Se o driver de porta não puder lidar com uma solicitação WMI, ele encaminhará a solicitação para o driver de miniporto.

Um driver de miniporto receberá solicitações WMI do driver de porta somente se o driver de miniporto definir WmiDataProvider na estrutura PORT_CONFIGURATION_INFORMATION. Se o driver de miniporte der suporte a uma solicitação, ele deverá processá-la e concluir a solicitação chamando ScsiPortNotification duas vezes, primeiro com RequestComplete e, em seguida, com NextRequest (ou NextLuRequest).

Para obter informações sobre como dar suporte ao WMI em drivers de miniporto, consulte Instrumentação de Gerenciamento do Windows.

Requisitos

Requisito Valor
Cabeçalho srb.h (incluem Storport.h, Srb.h, Storport.h, Minitape.h)

Confira também

HW_INITIALIZATION_DATA (SCSI)

PORT_CONFIGURATION_INFORMATION (SCSI)

SCSI_REQUEST_BLOCK

ScsiPortNotification

ScsiPortWmiDispatchFunction