estrutura SCSI_POWER_REQUEST_BLOCK (storport.h)
A estrutura SCSI_POWER_REQUEST_BLOCK é uma versão especial de um SCSI_REQUEST_BLOCK usado para solicitações de gerenciamento de energia.
Observação
O driver de porta SCSI e os modelos de driver de miniporta SCSI podem ser alterados ou indisponíveis no futuro. Em vez disso, recomendamos usar os modelos de driver storport e driver de miniporto Storport .
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 miniporta antes de notificar o driver storport de que a solicitação foi concluída. Um driver de miniporta notifica o driver storport de 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 em 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 de enumerador do tipo STOR_DEVICE_POWER_STATE que especifica o estado de energia solicitado do dispositivo.
SrbFlags
O driver de miniporta deve ignorar esse membro.
DataTransferLength
O driver de miniporta deve ignorar esse membro.
TimeOutValue
O intervalo, em segundos, que a solicitação pode executar antes que o driver do Storport determine que a solicitação atingiu o tempo limite.
DataBuffer
O driver de miniporta deve ignorar esse membro.
SenseInfoBuffer
O driver de miniporta deve ignorar esse membro.
NextSrb
O driver de miniporta deve ignorar esse membro.
OriginalRequest
O driver de miniporta deve ignorar esse membro.
SrbExtension
Um ponteiro para a extensão SRB. Um driver de miniporta não deverá usar esse membro se 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 de enumerador do tipo STOR_POWER_ACTION que especifica o tipo de desligamento do sistema que está prestes a ocorrer. Esse valor só será significativo 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.
Comentários
O driver do Storport chama HwStorBuildIo para passar SRBs para o driver de miniporto. HwStorBuildIo deve verificar o membro Function do SRB para determinar o tipo do SRB. Se o membro Function estiver definido como SRB_FUNCTION_POWER, o SRB será uma estrutura do tipo SCSI_POWER_REQUEST_BLOCK.
O driver storport envia SCSI_POWER_REQUEST_BLOCK solicitações a um driver de miniporto para notificar o driver de miniporte de eventos de energia do Windows que afetam os dispositivos de armazenamento conectados ao adaptador. No caso de um evento de energia, essa solicitação dá ao driver de miniporta a oportunidade de se inicializar. No caso de um evento de hibernação ou desligamento, essa solicitação dá ao driver de miniporta a oportunidade de concluir solicitações de E/S e se preparar para uma desligar. O driver de miniporta 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 de SCSI_POWER_REQUEST_BLOCK , o driver storport chamará HwScsiAdapterControl com uma solicitação de controle de ScsiStopAdapter para desligar o adaptador. O driver de miniporta 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 de SCSI_POWER_REQUEST_BLOCK para o driver de miniporto antes que o driver de barramento subjacente desligue o adaptador.
As seguintes condições devem existir antes que o driver do Storport envie uma solicitação de SCSI_POWER_REQUEST_BLOCK para o driver de miniporte:
- O adaptador não foi interrompido.
- A fila de E/S do adaptador está em pausa.
- O hardware do adaptador é habilitado.
- O miniporto pode acessar os recursos de hardware do adaptador.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | storport.h (inclua Storport.h, Minitape.h, Srb.h) |