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.

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_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 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 enumerador do tipo STOR_DEVICE_POWER_STATE que especifica o estado de energia solicitado do dispositivo.

SrbFlags

O driver de miniporte deve ignorar esse membro.

DataTransferLength

O driver de miniporte 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 miniporte deve ignorar esse membro.

SenseInfoBuffer

O driver de miniporte deve ignorar esse membro.

NextSrb

O driver de miniporte deve ignorar esse membro.

OriginalRequest

O driver de miniporte deve ignorar esse membro.

SrbExtension

Um ponteiro para a extensão SRB. Um driver de miniporte 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 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 storport chama HwStorBuildIo para passar SRBs para o driver de miniporto. HwStorBuildIo deve marcar 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 dispositivos de armazenamento conectados ao adaptador. No caso de um evento de energia, essa solicitação dá ao driver de miniporto a oportunidade de se inicializar. No caso de um evento de hibernação ou desligamento, essa solicitação dá ao driver de miniporto a oportunidade de concluir solicitações de E/S e se preparar para uma desligar. O driver de miniporte pode usar o valor no membro do 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 do 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 de SCSI_POWER_REQUEST_BLOCK para o driver de miniporte antes que o motorista do ônibus subjacente reduza 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 miniporte:

  • O adaptador não é 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)

Confira também

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification