Condividi tramite


SCSI_POWER_REQUEST_BLOCK struttura (minitape.h)

La struttura SCSI_POWER_REQUEST_BLOCK è una versione speciale di un SCSI_REQUEST_BLOCK usato per le richieste di risparmio energia.

Nota I modelli di driver di porta SCSI e miniport SCSI possono essere modificati o non disponibili in futuro. È invece consigliabile usare i modelli di driver Storport e Miniport Storport.
 

Sintassi

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;

Members

Length

Dimensioni, in byte, della struttura SCSI_POWER_REQUEST_BLOCK .

Function

Operazione da eseguire. Per la struttura SCSI_POWER_REQUEST_BLOCK , questo membro è sempre impostato su SRB_FUNCTION_POWER.

SrbStatus

Stato della richiesta completata. Questo membro deve essere impostato dal driver miniport prima di notificare al driver Storport che la richiesta è stata completata. Un driver miniport notifica al driver Storport che la richiesta è stata completata chiamando la funzione StorPortNotification con il tipo di notifica RequestComplete .

Per un elenco di valori possibili per questo membro, vedere SCSI_REQUEST_BLOCK nella documentazione di WDK.

SrbPowerFlags

Flag di gestione energia. Attualmente, l'unico flag consentito è SRB_POWER_FLAGS_ADAPTER_REQUEST, che indica che la richiesta di risparmio energia è per l'adattatore. Se questo flag è impostato, il driver miniport deve ignorare i valori in PathId, TargetId e Lun.

PathId

La porta SCSI o l'identificatore del bus per la richiesta. Questo valore è zero basato.

TargetId

Controller di destinazione o identificatore del dispositivo nel bus.

Lun

Numero di unità logica (LUN) del dispositivo.

DevicePowerState

Valore dell'enumeratore di tipo STOR_DEVICE_POWER_STATE che specifica lo stato di alimentazione richiesto del dispositivo.

SrbFlags

Il driver miniport deve ignorare questo membro.

DataTransferLength

Il driver miniport deve ignorare questo membro.

TimeOutValue

L'intervallo, in secondi, che la richiesta può essere eseguita prima del driver Storport determina il timeout della richiesta.

DataBuffer

Il driver miniport deve ignorare questo membro.

SenseInfoBuffer

Il driver miniport deve ignorare questo membro.

NextSrb

Il driver miniport deve ignorare questo membro.

OriginalRequest

Il driver miniport deve ignorare questo membro.

SrbExtension

Puntatore all'estensione SRB. Un driver miniport non deve usare questo membro se imposta SrbExtensionSize su zero nella struttura HW_INITIALIZATION_DATA . Il driver Storport non inizializza la memoria a cui punta questo membro. L'HBA può accedere direttamente ai dati scritti dal driver miniport nell'estensione SRB. Un driver miniport può ottenere l'indirizzo fisico dell'estensione SRB chiamando la routine StorPortGetPhysicalAddress .

PowerAction

Valore dell'enumeratore di tipo STOR_POWER_ACTION che specifica il tipo di arresto del sistema che sta per verificarsi. Questo valore è significativo solo se il dispositivo si sposta nello stato di alimentazione D1, D2 o D3, come indicato dal membro DevicePowerState .

Reserved

Riservato per l'utilizzo nel sistema.

Reserved5[16]

Riservato per l'utilizzo nel sistema.

Commenti

Il driver Storport chiama HwStorBuildIo per passare SRBs al driver miniport. HwStorBuildIo deve controllare il membro della funzione di SRB per determinare il tipo di SRB. Se il membro della funzione è impostato su SRB_FUNCTION_POWER, SRB è una struttura di tipo SCSI_POWER_REQUEST_BLOCK.

Il driver Storport invia SCSI_POWER_REQUEST_BLOCK richieste a un driver miniport per notificare al driver miniport eventi di Windows power che influiscono sui dispositivi di archiviazione connessi all'adattatore. Nel caso di un evento di alimentazione, questa richiesta consente al driver miniport di inizializzare se stesso. Nel caso di un evento di ibernazione o arresto, questa richiesta offre al driver miniport un'opportunità di completare le richieste di I/O e prepararsi per un risparmio di energia. Il driver miniport può usare il valore nel membro PowerAction del SCSI_POWER_REQUEST_BLOCK per determinare quali azioni sono necessarie. Dopo aver completato la richiesta di SCSI_POWER_REQUEST_BLOCK , il driver Storport chiama HwScsiAdapterControl con una richiesta di controllo SCSIStopAdapter per attivare l'adattatore. Il driver miniport reinizializzare durante l'elaborazione della richiesta di SRB_FUNCTION_POWER oppure può attendere e reinizializzare quando il driver Storport chiama HwStorAdapterControl per eseguire una richiesta di controllo SCSIRestartAdapter .

Quando si passa dallo stato di alimentazione D0 a uno stato con alimentazione inferiore (D1, D2 o D3) il driver Storport invia una richiesta di SCSI_POWER_REQUEST_BLOCK al driver miniport prima che il driver del bus sottostante sia inattivo.

Le condizioni seguenti devono esistere prima che il driver Storport invii una richiesta di SCSI_POWER_REQUEST_BLOCK al driver miniport:

  • L'adattatore non viene arrestato.
  • La coda di I/O per l'adattatore viene sospesa.
  • L'hardware dell'adattatore è alimentato.
  • Il miniport può accedere alle risorse hardware dell'adattatore.

Requisiti

Requisito Valore
Intestazione minitape.h (include Storport.h, Minitape.h, Srb.h)

Vedi anche

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification