SCSI_POWER_REQUEST_BLOCK 結構 (srb.h)

SCSI_POWER_REQUEST_BLOCK 結構是用於電源管理要求的特殊SCSI_REQUEST_BLOCK版本。

注意 未來可能會變更或無法使用 SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型。 相反地,我們建議使用 Storport 驅動程式Storport 迷你埠 驅動程式模型。
 

語法

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;

成員

Length

SCSI_POWER_REQUEST_BLOCK 結構的大小 ,以位元組為單位。

Function

要執行的作業。 針對 SCSI_POWER_REQUEST_BLOCK 結構,此成員一律會設定為 SRB_FUNCTION_POWER。

SrbStatus

已完成要求的狀態。 此成員應該先由迷你埠驅動程序設定,再通知 Storport 驅動程式要求已完成。 迷你埠驅動程式會使用 RequestComplete 通知類型呼叫 StorPortNotification 函式,通知 Storport 驅動程式已完成要求。

如需此成員的可能值清單,請參閱 WDK 檔中 的SCSI_REQUEST_BLOCK

SrbPowerFlags

電源管理旗標。 目前,唯一允許的旗標是SRB_POWER_FLAGS_ADAPTER_REQUEST,這表示電源管理要求適用於適配卡。 如果設定此旗標,迷你埠驅動程序應該忽略 PathIdTargetIdLun 中的值。

PathId

要求的 SCSI 埠或總線標識碼。 這個值是以零起始。

TargetId

總線上的目標控制器或裝置標識碼。

Lun

裝置的邏輯單元編號 (LUN) 。

DevicePowerState

STOR_DEVICE_POWER_STATE類型的列舉值,指定裝置的要求電源狀態。

SrbFlags

Miniport 驅動程序應該忽略此成員。

DataTransferLength

Miniport 驅動程序應該忽略此成員。

TimeOutValue

在 Storport 驅動程序判斷要求逾時之前,可以執行要求的間隔,以秒為單位。

DataBuffer

Miniport 驅動程序應該忽略此成員。

SenseInfoBuffer

Miniport 驅動程序應該忽略此成員。

NextSrb

Miniport 驅動程序應該忽略此成員。

OriginalRequest

Miniport 驅動程序應該忽略此成員。

SrbExtension

SRB 延伸模組的指標。 如果迷你埠驅動程式將 SrbExtensionSize 設定為 HW_INITIALIZATION_DATA 結構中的零 則不得使用此成員。 Storport 驅動程式不會初始化這個成員指向的記憶體。 HBA 可以直接存取迷你埠驅動程式寫入 SRB 擴充功能的數據。 迷你埠驅動程式可以藉由呼叫 StorPortGetPhysicalAddress 例程來取得 SRB 延伸模組的實體位址。

PowerAction

別的 列舉值STOR_POWER_ACTION,指定即將發生的系統關機類型。 只有在裝置移至 D1、D2 或 D3 電源狀態時,此值才有意義,如 DevicePowerState 成員所指出。

Reserved

保留供系統使用。

Reserved5[16]

保留供系統使用。

備註

Storport 驅動程式會呼叫 HwStorBuildIo ,將 SRB 傳遞至迷你埠驅動程式。 HwStorBuildIo 應該檢查 SRB 的 函式 成員,以判斷 SRB 的類型。 如果 式成員設定為 SRB_FUNCTION_POWER,SRB 是SCSI_POWER_REQUEST_BLOCK類型的結構。

Storport 驅動程式會將 SCSI_POWER_REQUEST_BLOCK 要求傳送至迷你埠驅動程式,以通知迷你埠驅動程式的 Windows 電源事件,這些事件會影響連線到適配卡的存儲設備。 在啟動事件的情況下,此要求可讓迷你埠驅動程序有機會初始化本身。 在休眠或關機事件的情況下,此要求可讓迷你埠驅動程序有機會完成 I/O 要求並準備關閉電源。 迷你埠驅動程式可以使用 SCSI_POWER_REQUEST_BLOCKPowerAction 成員中的值來判斷需要哪些動作。 迷你埠驅動程式完成 SCSI_POWER_REQUEST_BLOCK 要求之後,Storport 驅動程式會呼叫 HwScsiAdapterControl ,並具有 ScsiStopAdapter 的控制要求來關閉適配卡電源。 迷你埠驅動程式會在處理SRB_FUNCTION_POWER要求時重新初始化,或者當 Storport 驅動程式呼叫 HwStorAdapterControl 來執行 ScsiRestartAdapter 控件要求時,可以等候並重新初始化。

從 D0 電源狀態轉換為較低電源狀態時, (D1、D2 或 D3) Storport 驅動程式會在基礎總線驅動程式關閉適配卡之前,將 SCSI_POWER_REQUEST_BLOCK 要求傳送至迷你埠驅動程式。

在 Storport 驅動程式將 傳送SCSI_POWER_REQUEST_BLOCK 要求給迷你埠驅動程式之前,必須存在下列條件:

  • 配接器不會停止。
  • 適配卡的 I/O 佇列已暫停。
  • 配接器硬體已啟動。
  • 迷你埠可以存取適配卡的硬體資源。

規格需求

需求
標頭 srb.h (包括 Storport.h、Minitape.h、Srb.h)

另請參閱

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification