SCSI_POWER_REQUEST_BLOCK Struktur (minitape.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;
Angehörige
Length
Die Größe der SCSI_POWER_REQUEST_BLOCK Struktur in Byte.
Function
Der auszuführende Vorgang. Für die SCSI_POWER_REQUEST_BLOCK Struktur ist dieses Element immer auf SRB_FUNCTION_POWER festgelegt.
SrbStatus
Der Status der abgeschlossenen Anforderung. Dieses Element 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 die StorPortNotification-funktion mit dem RequestComplete- Benachrichtigungstyp aufgerufen wird.
Eine Liste der möglichen Werte für dieses Element finden Sie in der WDK-Dokumentation unter SCSI_REQUEST_BLOCK.
SrbPowerFlags
Die Energieverwaltungskennzeichnungen. 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 der PathId-, TargetId-und Lun-ignorieren.
PathId
Der SCSI-Port- oder Busbezeichner für die Anforderung. Dieser Wert basiert auf Null.
TargetId
Der Zielcontroller oder die Geräte-ID auf dem Bus.
Lun
Die logische Einheitsnummer (LUN) des Geräts.
DevicePowerState
Ein Enumerationswert vom Typ STOR_DEVICE_POWER_STATE, der den angeforderten Leistungszustand des Geräts angibt.
SrbFlags
Miniport-Treiber sollte dieses Element ignorieren.
DataTransferLength
Miniport-Treiber sollte dieses Element ignorieren.
TimeOutValue
Das Intervall in Sekunden, das die Anforderung ausführen kann, bevor der Storport-Treiber feststellt, dass die Anforderung ein Timeout aufweist.
DataBuffer
Miniport-Treiber sollte dieses Element ignorieren.
SenseInfoBuffer
Miniport-Treiber sollte dieses Element ignorieren.
NextSrb
Miniport-Treiber sollte dieses Element ignorieren.
OriginalRequest
Miniport-Treiber sollte dieses Element ignorieren.
SrbExtension
Ein Zeiger auf die SRB-Erweiterung. Ein Miniporttreiber darf dieses Element nicht verwenden, wenn er SrbExtensionSize- in der HW_INITIALIZATION_DATA Struktur auf Null festgelegt hat. Der Storport-Treiber initialisiert nicht den Speicher, auf den dieses Element verweist. Die 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 die StorPortGetPhysicalAddress Routine aufgerufen wird.
PowerAction
Ein Enumeratorwert vom Typ STOR_POWER_ACTION, der den Typ des System herunterfahrens angibt, das gerade eintritt. Dieser Wert ist nur dann sinnvoll, wenn das Gerät in den D1-, D2- oder D3-Energiezustand wechselt, wie durch das DevicePowerState Member angegeben.
Reserved
Reserviert für die Systemverwendung.
Reserved5[16]
Reserviert für die Systemverwendung.
Bemerkungen
Der Storport-Treiber ruft HwStorBuildIo- auf, um SRBs an den Miniporttreiber zu übergeben. HwStorBuildIo- sollte das Function Member des SRB überprüfen, um den Typ des SRB zu bestimmen. Wenn das element Function 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 Power up-Ereignisses bietet diese Anforderung dem Miniporttreiber die Möglichkeit, sich selbst zu initialisieren. Bei einem Ruhezustands- oder Herunterfahren-Ereignis bietet diese Anforderung dem Miniporttreiber die Möglichkeit, E/A-Anforderungen abzuschließen und sich auf einen Stromausfall vorzubereiten. Der Miniporttreiber kann den Wert im PowerAction Member der 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 Steuerelementanforderung von ScsiStopAdapter- auf, um den Adapter herunterzuschalten. Der Miniporttreiber wird beim Verarbeiten der SRB_FUNCTION_POWER-Anforderung erneut initialisiert, oder er kann warten und erneut initialisieren, wenn der Storport-Treiber HwStorAdapterControl aufruft, um eine ScsiRestartAdapter- Steuerelementanforderung auszuführen.
Beim Übergang vom D0-Energiezustand in einen niedrigeren Zustand (D1, D2 oder D3) sendet der Storport-Treiber eine SCSI_POWER_REQUEST_BLOCK Anforderung an den Miniporttreiber, bevor der zugrunde liegende Bustreiber den Adapter herunterschaltt.
Die folgenden Bedingungen müssen vorhanden sein, bevor der Storport-Treiber eine SCSI_POWER_REQUEST_BLOCK Anforderung an den Miniporttreiber sendet:
- Der Adapter wird nicht beendet.
- Die E/A-Warteschlange für den Adapter wird angehalten.
- Die Adapterhardware wird eingeschaltet.
- Der Miniport kann auf die Hardwareressourcen des Adapters zugreifen.
Anforderungen
Anforderung | Wert |
---|---|
Header- | minitape.h (include Storport.h, Minitape.h, Srb.h) |