共用方式為


SCSI_POWER_REQUEST_BLOCK結構 (minitape.h)

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

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

語法

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,這表示電源管理要求適用於適配卡。 如果設定此旗標,miniport 驅動程式應該忽略 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 延伸模組的指標。 如果迷你埠驅動程式在 HW_INITIALIZATION_DATA 結構中將 SrbExtensionSize 設定為零,則不得使用此成員。 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 要求,並準備關閉電源。 迷你埠驅動程式可以使用 PowerActionSCSI_POWER_REQUEST_BLOCK 成員中的值,以判斷需要哪些動作。 迷你埠驅動程式完成 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 佇列已暫停。
  • 適配卡硬體已啟動。
  • 迷你埠可以存取適配卡的硬體資源。

要求

要求 價值
標頭 minitape.h (包括 Storport.h、Minitape.h、Srb.h)

另請參閱

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification