Share via


SCSI_POWER_REQUEST_BLOCK Struktur (minitape.h)

Die SCSI_POWER_REQUEST_BLOCK-Struktur ist eine spezielle Version eines SCSI_REQUEST_BLOCK , die für Energieverwaltungsanforderungen verwendet wird.

Hinweis Der SCSI-Porttreiber und die SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht mehr verfügbar sein. 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 dieses Element immer auf SRB_FUNCTION_POWER festgelegt.

SrbStatus

Die status der abgeschlossenen Anforderung. Dieser Member sollte vom Miniporttreiber festgelegt werden, bevor er dem Storport-Treiber benachrichtigt, dass die Anforderung abgeschlossen wurde. Ein Miniporttreiber benachrichtigt den Storport-Treiber über den Abschluss der Anforderung, indem er die StorPortNotification-Funktion mit dem Benachrichtigungstyp RequestComplete aufruft .

Eine Liste möglicher Werte für dieses Element 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 der Busbezeichner für die Anforderung. Dieser Wert ist nullbasiert.

TargetId

Der Zielcontroller oder der Gerätebezeichner auf dem Bus.

Lun

Die LUN (Logical Unit Number) 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 dieses Element 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 gerade eintritt. Dieser Wert ist nur dann sinnvoll, wenn das Gerät in den D1-, D2- oder D3-Leistungszustand wechselt, wie vom DevicePowerState-Element 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 Funktionsmember des SRB überprüfen, um den Typ des SRB zu bestimmen. Wenn der Funktionsmember 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 Fall eines Einschaltereignisses gibt diese Anforderung dem Miniporttreiber die Möglichkeit, sich selbst zu initialisieren. Im Falle eines Ruhezustands oder Herunterfahrens bietet diese Anforderung dem Miniporttreiber die Möglichkeit, E/A-Anforderungen abzuschließen und sich auf ein 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 wird beim Verarbeiten der SRB_FUNCTION_POWER-Anforderung neu initialisiert, 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-Stromzustand zu einem Zustand mit geringerer Leistung (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 wird nicht angehalten.
  • 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 (einschließlich Storport.h, Minitape.h, Srb.h)

Weitere Informationen

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification