estrutura SCSI_WMI_REQUEST_BLOCK (srb.h)
Essa estrutura é uma versão especial de um SCSI_REQUEST_BLOCK para uso com comandos WMI.
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) |