SCSI_POWER_REQUEST_BLOCK-Struktur (srb.h)
Die SCSI_POWER_REQUEST_BLOCK-Struktur ist eine spezielle Version einer SCSI_REQUEST_BLOCK , die für Energieverwaltungsanforderungen verwendet wird.
Syntax
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;
Member
Length
Die Größe der SCSI_POWER_REQUEST_BLOCK-Struktur in Bytes.
Function
Der auszuführende Vorgang. Für die SCSI_POWER_REQUEST_BLOCK-Struktur ist dieser Member immer auf SRB_FUNCTION_POWER festgelegt.
SrbStatus
Die status der abgeschlossenen Anforderung. Dieser Member sollte vom Miniporttreiber festgelegt werden, bevor er den Storport-Treiber benachrichtigt, dass die Anforderung abgeschlossen wurde. Ein Miniporttreiber benachrichtigt den Storport-Treiber, dass die Anforderung abgeschlossen wurde, indem er die StorPortNotification-Funktion mit dem Benachrichtigungstyp RequestComplete aufruft .
Eine Liste der möglichen Werte für diesen Member finden Sie unter SCSI_REQUEST_BLOCK in der WDK-Dokumentation.
SrbPowerFlags
Die Energieverwaltungsflags. Derzeit ist das einzige zulässige Flag SRB_POWER_FLAGS_ADAPTER_REQUEST, was angibt, dass die Energieverwaltungsanforderung für den Adapter gilt. Wenn dieses Flag festgelegt ist, sollte der Miniporttreiber die Werte in PathId, TargetId und Lun ignorieren.
PathId
Der SCSI-Port oder Busbezeichner für die Anforderung. Dieser Wert ist nullbasiert.
TargetId
Der Zielcontroller oder die Geräte-ID auf dem Bus.
Lun
Die logische Einheitennummer (Logical Unit Number, LUN) des Geräts.
DevicePowerState
Ein Enumeratorwert vom Typ STOR_DEVICE_POWER_STATE , der den angeforderten Energiezustand des Geräts angibt.
SrbFlags
Der Miniport-Treiber sollte diesen Member ignorieren.
DataTransferLength
Der Miniport-Treiber sollte diesen Member ignorieren.
TimeOutValue
Das Intervall in Sekunden, das die Anforderung ausführen kann, bevor der Storport-Treiber feststellt, dass für die Anforderung ein Timeout aufgetreten ist.
DataBuffer
Der Miniport-Treiber sollte diesen Member ignorieren.
SenseInfoBuffer
Der Miniport-Treiber sollte diesen Member ignorieren.
NextSrb
Der Miniport-Treiber sollte diesen Member ignorieren.
OriginalRequest
Der Miniport-Treiber sollte diesen Member ignorieren.
SrbExtension
Ein Zeiger auf die SRB-Erweiterung. Ein Miniporttreiber darf diesen Member nicht verwenden, wenn er SrbExtensionSize in der HW_INITIALIZATION_DATA-Struktur auf 0 festgelegt hat. Der Storport-Treiber initialisiert nicht den Arbeitsspeicher, auf den dieser Member verweist. Der HBA kann direkt auf die Daten zugreifen, die der Miniporttreiber in die SRB-Erweiterung schreibt. Ein Miniporttreiber kann die physische Adresse der SRB-Erweiterung abrufen, indem er die StorPortGetPhysicalAddress-Routine aufruft.
PowerAction
Ein Enumeratorwert vom Typ STOR_POWER_ACTION , der den Typ des Systemstillstands angibt, der im Begriff ist, dass das System heruntergefahren wird. Dieser Wert ist nur sinnvoll, wenn das Gerät in den D1-, D2- oder D3-Energiezustand wechselt, wie vom DevicePowerState-Member angegeben.
Reserved
Ist für das System reserviert.
Reserved5[16]
Ist für das System reserviert.
Hinweise
Der Storport-Treiber ruft HwStorBuildIo auf, um SRBs an den Miniporttreiber zu übergeben. HwStorBuildIo sollte den Function-Member des SRB überprüfen, um den Typ des SRB zu bestimmen. Wenn der Function-Member auf SRB_FUNCTION_POWER festgelegt ist, ist der SRB eine Struktur vom Typ SCSI_POWER_REQUEST_BLOCK.
Der Storport-Treiber sendet SCSI_POWER_REQUEST_BLOCK Anforderungen an einen Miniporttreiber, um den Miniporttreiber über Windows-Energieereignisse zu benachrichtigen, die sich auf Speichergeräte auswirken, die mit dem Adapter verbunden sind. Im Falle eines Einschaltereignisses gibt diese Anforderung dem Miniporttreiber die Möglichkeit, sich selbst zu initialisieren. Im Falle eines Ruhezustands oder Herunterfahrens gibt diese Anforderung dem Miniporttreiber die Möglichkeit, E/A-Anforderungen abzuschließen und sich auf einen Herunterfahren vorzubereiten. Der Miniporttreiber kann den Wert im PowerAction-Member des SCSI_POWER_REQUEST_BLOCK verwenden, um zu bestimmen, welche Aktionen erforderlich sind. Nachdem der Miniporttreiber die SCSI_POWER_REQUEST_BLOCK-Anforderung abgeschlossen hat, ruft der Storport-Treiber HwScsiAdapterControl mit einer Steuerungsanforderung von ScsiStopAdapter auf, um den Adapter herunterzuschalten. Der Miniporttreiber initialisiert während der Verarbeitung der SRB_FUNCTION_POWER-Anforderung neu, oder er kann warten und neu initialisieren, wenn der Storport-Treiber HwStorAdapterControl aufruft, um eine ScsiRestartAdapter-Steuerelementanforderung auszuführen.
Wenn der Storport-Treiber vom D0-Energiezustand in einen zustand mit niedrigerer Stromversorgung (D1, D2 oder D3) wechselt, sendet der Storport-Treiber eine SCSI_POWER_REQUEST_BLOCK-Anforderung an den Miniporttreiber, bevor der zugrunde liegende Bustreiber den Adapter ausschaltt.
Die folgenden Bedingungen müssen vorliegen, bevor der Storport-Treiber eine SCSI_POWER_REQUEST_BLOCK Anforderung an den Miniporttreiber sendet:
- Der Adapter ist nicht angehalten.
- Die E/A-Warteschlange für den Adapter wird angehalten.
- Die Adapterhardware ist eingeschaltet.
- Der Miniport kann auf die Hardwareressourcen des Adapters zugreifen.
Anforderungen
Anforderung | Wert |
---|---|
Header | srb.h (einschließlich Storport.h, Minitape.h, Srb.h) |