SCSI_POWER_REQUEST_BLOCK struttura (storport.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 reinitialize 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 | storport.h (include Storport.h, Minitape.h, Srb.h) |