struttura SCSI_POWER_REQUEST_BLOCK (storport.h)
La struttura SCSI_POWER_REQUEST_BLOCK è una versione speciale di una SCSI_REQUEST_BLOCK usata per le richieste di risparmio energia.
Nota
I modelli di driver porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. È invece consigliabile usare driver Storport e modelli di driver 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;
Membri
Length
Dimensione, 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 funzioneStorPortNotificationcon il tipo di notifica RequestComplete.
Per un elenco dei possibili valori per questo membro, vedere SCSI_REQUEST_BLOCK nella documentazione di WDK.
SrbPowerFlags
Flag di risparmio 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 nel PathId, TargetIde Lun.
PathId
Porta SCSI o identificatore del bus per la richiesta. Questo valore è in base zero.
TargetId
Il controller di destinazione o l'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
Intervallo, in secondi, che la richiesta può essere eseguita prima che il driver Storport determini 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 utilizzare 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 routineStorPortGetPhysicalAddress.
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 passa allo stato di alimentazione D1, D2 o D3 come indicato dal membro DevicePowerState.
Reserved
Riservato per l'uso del sistema.
Reserved5[16]
Riservato per l'uso del sistema.
Osservazioni
Il driver Storport chiama HwStorBuildIo per passare srb al driver miniport. HwStorBuildIo deve controllare il membro funzione di SRB per determinare il tipo di SRB. Se il membro 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 alimentazione di Windows che influiscono sui dispositivi di archiviazione connessi alla scheda. Nel caso di un evento di accensione, questa richiesta offre al driver miniport l'opportunità di inizializzare se stesso. Nel caso di un evento di ibernazione o arresto, questa richiesta offre al driver miniport l'opportunità di completare le richieste di I/O e prepararsi per un risparmio di energia. Il driver miniport può usare il valore nel membro di PowerAction del SCSI_POWER_REQUEST_BLOCK per determinare quali azioni sono necessarie. Al termine della richiesta di SCSI_POWER_REQUEST_BLOCK, il driver Storport chiama HwScsiAdapterControl con una richiesta di controllo di ScsiStopAdapter per spegnere 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 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 accesa l'adattatore.
Prima che il driver Storport invii una richiesta di SCSI_POWER_REQUEST_BLOCK al driver miniport, devono esistere le condizioni seguenti:
- L'adattatore non viene arrestato.
- La coda di I/O per l'adattatore è sospesa.
- L'hardware dell'adattatore è alimentato.
- Il miniport può accedere alle risorse hardware dell'adattatore.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | storport.h (include Storport.h, Minitape.h, Srb.h) |