Freigeben über


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.

Hinweis Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle sind möglicherweise geändert oder in Zukunft nicht mehr verfügbar. Stattdessen wird empfohlen, die Modelle Storport-Treiber und Storport-Miniporttreiber zu verwenden.
 

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)

Weitere Informationen

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification