estrutura SCSI_POWER_REQUEST_BLOCK (minitape.h)
A estrutura SCSI_POWER_REQUEST_BLOCK é uma versão especial de um SCSI_REQUEST_BLOCK usado para solicitações de gerenciamento de energia.
Sintaxe
typedef struct _SCSI_POWER_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR SrbPowerFlags;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
STOR_DEVICE_POWER_STATE DevicePowerState;
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID SenseInfoBuffer;
struct _SCSI_REQUEST_BLOCK *NextSrb;
PVOID OriginalRequest;
PVOID SrbExtension;
STOR_POWER_ACTION PowerAction;
ULONG Reserved;
UCHAR Reserved5[16];
} SCSI_POWER_REQUEST_BLOCK, *PSCSI_POWER_REQUEST_BLOCK;
Membros
Length
O tamanho, em bytes, da estrutura SCSI_POWER_REQUEST_BLOCK.
Function
A operação a ser executada. Para a estrutura SCSI_POWER_REQUEST_BLOCK, esse membro sempre é definido como SRB_FUNCTION_POWER.
SrbStatus
O status da solicitação concluída. Esse membro deve ser definido pelo driver de miniporte antes de notificar o driver Storport que a solicitação foi concluída. Um driver de miniporto notifica o driver Storport que a solicitação foi concluída chamando a função StorPortNotification com o tipo de notificação RequestComplete.
Consulte SCSI_REQUEST_BLOCK na documentação do WDK para obter uma lista de valores possíveis para esse membro.
SrbPowerFlags
Os sinalizadores de gerenciamento de energia. Atualmente, o único sinalizador permitido é SRB_POWER_FLAGS_ADAPTER_REQUEST, o que indica que a solicitação de gerenciamento de energia é para o adaptador. Se esse sinalizador for definido, o driver de miniporto deverá ignorar os valores no PathId, TargetId e Lun.
PathId
O identificador de barramento ou porta SCSI para a solicitação. Esse valor é baseado em zero.
TargetId
O controlador de destino ou o identificador de dispositivo no barramento.
Lun
O LUN (número de unidade lógica) do dispositivo.
DevicePowerState
Um valor enumerador do tipo STOR_DEVICE_POWER_STATE que especifica o estado de energia solicitado do dispositivo.
SrbFlags
O driver de miniporto deve ignorar esse membro.
DataTransferLength
O driver de miniporto deve ignorar esse membro.
TimeOutValue
O intervalo, em segundos, que a solicitação pode ser executada antes que o driver Storport determine que a solicitação atingiu o tempo limite.
DataBuffer
O driver de miniporto deve ignorar esse membro.
SenseInfoBuffer
O driver de miniporto deve ignorar esse membro.
NextSrb
O driver de miniporto deve ignorar esse membro.
OriginalRequest
O driver de miniporto deve ignorar esse membro.
SrbExtension
Um ponteiro para a extensão SRB. Um driver de miniporto não deverá usar esse membro se ele definir SrbExtensionSize como zero na estrutura HW_INITIALIZATION_DATA. O driver Storport não inicializa a memória para a qual esse membro aponta. O HBA pode acessar diretamente os dados que o driver de miniporto grava na extensão SRB. Um driver de miniporto pode obter o endereço físico da extensão SRB chamando a rotina StorPortGetPhysicalAddress.
PowerAction
Um valor enumerador do tipo STOR_POWER_ACTION que especifica o tipo de desligamento do sistema que está prestes a ocorrer. Esse valor será significativo somente se o dispositivo estiver se movendo para o estado de energia D1, D2 ou D3, conforme indicado pelo membro DevicePowerState.
Reserved
Reservado para uso do sistema.
Reserved5[16]
Reservado para uso do sistema.
Observações
O driver storport chama HwStorBuildIo para passar SRBs para o driver de miniporto. HwStorBuildIo deve verificar o de função membro do SRB para determinar o tipo do SRB. Se o membro da Função estiver definido como SRB_FUNCTION_POWER, o SRB será uma estrutura do tipo SCSI_POWER_REQUEST_BLOCK.
O driver storport envia solicitações SCSI_POWER_REQUEST_BLOCK a um driver de miniporto para notificar o driver de miniporto de eventos de energia do Windows que afetam os dispositivos de armazenamento conectados ao adaptador. No caso de um evento de ativação, essa solicitação oferece ao driver de miniporto a oportunidade de se inicializar. No caso de um evento de hibernação ou desligamento, essa solicitação oferece ao driver de miniporto a oportunidade de concluir solicitações de E/S e se preparar para uma queda de energia. O driver de miniporto pode usar o valor no membro PowerAction do SCSI_POWER_REQUEST_BLOCK para determinar quais ações são necessárias. Depois que o driver de miniporto concluir a solicitação SCSI_POWER_REQUEST_BLOCK, o driver storport chamará HwScsiAdapterControl com uma solicitação de controle de ScsiStopAdapter para desligar o adaptador. O driver de miniporte reinicializa durante o processamento da solicitação de SRB_FUNCTION_POWER ou pode aguardar e reinicializar quando o driver storport chama HwStorAdapterControl para executar uma solicitação de controle ScsiRestartAdapter.
Ao fazer a transição do estado de energia D0 para um estado de menor potência (D1, D2 ou D3), o driver storport envia uma solicitação SCSI_POWER_REQUEST_BLOCK para o motorista do miniporto antes que o motorista do ônibus subjacente desligue o adaptador.
As seguintes condições devem existir antes que o driver storport envie uma solicitação SCSI_POWER_REQUEST_BLOCK para o driver de miniporto:
- O adaptador não foi interrompido.
- A fila de E/S do adaptador está pausada.
- O hardware do adaptador é habilitado.
- O miniporto pode acessar os recursos de hardware do adaptador.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | minitape.h (inclua Storport.h, Minitape.h, Srb.h) |