SCSI_POWER_REQUEST_BLOCK 構造体 (srb.h)
SCSI_POWER_REQUEST_BLOCK構造は、電源管理要求に使用される特別なバージョンのSCSI_REQUEST_BLOCKです。
構文
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のみです。これは、電源管理要求がアダプター用であることを示します。 このフラグが設定されている場合、ミニポート ドライバーは PathId、TargetId、および Lun の値 を無視 する必要があります。
PathId
要求の SCSI ポートまたはバス識別子。 この値は 0 から始まります。
TargetId
バス上のターゲット コントローラーまたはデバイス識別子。
Lun
デバイスの論理ユニット番号 (LUN)。
DevicePowerState
デバイスの要求された電源状態 を 指定するSTOR_DEVICE_POWER_STATE型の列挙子値。
SrbFlags
ミニポート ドライバーは、このメンバーを無視する必要があります。
DataTransferLength
ミニポート ドライバーは、このメンバーを無視する必要があります。
TimeOutValue
Storport ドライバーが要求がタイムアウトしたと判断するまでに要求を実行できる間隔 (秒単位)。
DataBuffer
ミニポート ドライバーは、このメンバーを無視する必要があります。
SenseInfoBuffer
ミニポート ドライバーは、このメンバーを無視する必要があります。
NextSrb
ミニポート ドライバーは、このメンバーを無視する必要があります。
OriginalRequest
ミニポート ドライバーは、このメンバーを無視する必要があります。
SrbExtension
SRB 拡張機能へのポインター。 ミニポート ドライバーは、HW_INITIALIZATION_DATA構造体で SrbExtensionSize を 0 に設定する場合、このメンバーを使用する必要があります。 Storport ドライバーは、このメンバーが指すメモリを初期化しません。 HBA は、ミニポート ドライバーが SRB 拡張機能に書き込むデータに直接アクセスできます。 ミニポート ドライバーは、 StorPortGetPhysicalAddress ルーチンを呼び出すことによって、SRB 拡張機能の物理アドレスを取得できます。
PowerAction
発生しようとしているシステム シャットダウンの種類を指定する STOR_POWER_ACTION 型の列挙子値。 この値は、 DevicePowerState メンバーによって示されているように、デバイスが D1、D2、または D3 電源状態に移行している場合にのみ意味があります。
Reserved
システムで使用するために予約されています。
Reserved5[16]
システムで使用するために予約されています。
注釈
Storport ドライバーは HwStorBuildIo を呼び出して、ミニポート ドライバーに SRB を渡します。 HwStorBuildIo は、SRB の Function メンバーをチェックして、SRB の型を決定する必要があります。 Function メンバーが SRB_FUNCTION_POWER に設定されている場合、SRB は SCSI_POWER_REQUEST_BLOCK 型の構造体です。
Storport ドライバーは、アダプターに接続 されている 記憶域デバイスに影響を与える Windows 電源イベントのミニポート ドライバーに通知するミニポート ドライバーにSCSI_POWER_REQUEST_BLOCK要求を送信します。 電源投入イベントの場合、この要求はミニポート ドライバーに自身を初期化する機会を与えます。 休止状態またはシャットダウン イベントの場合、この要求は、ミニポート ドライバーに I/O 要求を完了し、電源を切る準備をする機会を与えます。 ミニポート ドライバーは、SCSI_POWER_REQUEST_BLOCKの PowerAction メンバーの値を使用して、必要なアクションを決定できます。 ミニポート ドライバーがSCSI_POWER_REQUEST_BLOCK要求を完了すると、Storport ドライバーは、アダプターの電源を切るために ScsiStopAdapter のコントロール要求を使用して HwScsiAdapterControl を呼び出します。 ミニポート ドライバーは、SRB_FUNCTION_POWER要求の処理中に再初期化するか、Storport ドライバーが HwStorAdapterControl を 呼び出して ScsiRestartAdapter コントロール要求を実行するときに待機して再初期化できます。
D0 電源状態から下位電源状態 (D1、D2、または D3) に移行すると、Storport ドライバーは、基になるバス ドライバーがアダプターの電源を切る前に、ミニポート ドライバーに SCSI_POWER_REQUEST_BLOCK 要求を送信します。
Storport ドライバーがミニポート ドライバーに SCSI_POWER_REQUEST_BLOCK 要求を送信する前に、次の条件が存在する必要があります。
- アダプターは停止しません。
- アダプターの I/O キューが一時停止しています。
- アダプター ハードウェアの電源が入る。
- ミニポートは、アダプターのハードウェア リソースにアクセスできます。
要件
要件 | 値 |
---|---|
Header | srb.h (Storport.h、Minitape.h、Srb.h を含む) |