SCSI_POWER_REQUEST_BLOCK 構造体 (storport.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のみです。これは、電源管理要求がアダプター用であることを示します。 このフラグが設定されている場合、ミニポート ドライバーは 、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 ドライバーは、ミニポート ドライバーに SCSI_POWER_REQUEST_BLOCK 要求を送信して、アダプターに接続されている記憶域デバイスに影響を与える Windows 電源イベントをミニポート ドライバーに通知します。 電源投入イベントの場合、この要求はミニポート ドライバーに自身を初期化する機会を与えます。 休止状態またはシャットダウン イベントの場合、この要求は、ミニポート ドライバーに 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 | storport.h (Storport.h、Minitape.h、Srb.h を含む) |