estrutura SCSI_WMI_REQUEST_BLOCK (minitape.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 miniporto 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 para esse valor. O valor da subfunção corresponde ao número de IRP menor 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 de 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 miniporto.
WMIFlags
Indica que a solicitação WMI é para o adaptador se SRB_WMI_FLAGS_ADAPTER_REQUEST estiver definido e que PathId, TargetIde lun estão 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 miniporto.
SrbFlags
Indica vários parâmetros e opções sobre a solicitação. SrbFlags é somente leitura. Este 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 que não há 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 foi negociada anteriormente, o HBA deve renegociar para 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 para esse valor. Se ocorrer uma subexecuçã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 miniporto não são necessários para cronometrar solicitações porque o driver de porta já faz.
DataBuffer
Aponta para o buffer de dados. Um driver de miniporto chama ScsiPortWmiDispatchFunction com Buffer definido para esse valor. Os drivers de miniporto podem usar esse valor como um ponteiro de dados, independentemente do valor de MapBuffers no PORT_CONFIGURATION_INFORMATION para o HBA. Um driver de miniporto não pode transferir dados diretamente para o buffer usando DMA.
DataPath
Especifica o caminho de dados WMI para essa solicitação. Um driver de miniporto chama ScsiPortWmiDispatchFunction com DataPath definido para esse valor.
Reserved3
Reservado para uso do sistema e não disponível para uso por drivers de miniporto.
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 miniporto 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 do 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 miniporto.
Reserved6
Reservado para uso do sistema e não disponível para uso por drivers de miniporto. Esse membro é válido a partir do Windows Server 2003 com SP1.
Reserved5[16]
Reservado para uso do sistema e não disponível para uso por drivers de miniporto.
Observações
Os drivers de classe de armazenamento e filtro do Windows NT 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 miniporto. Se o driver de porta não puder lidar com uma solicitação WMI, ele encaminha a solicitação para o driver de miniporto.
Um driver de miniporto recebe solicitações WMI do driver de porta somente se o driver de miniporto definido WmiDataProvider na estrutura PORT_CONFIGURATION_INFORMATION. Se o driver de miniporto 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 o de Instrumentação de Gerenciamento doWindows.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | minitape.h (inclua Storport.h, Srb.h, Storport.h, Minitape.h) |