次の方法で共有


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のみです。これは、電源管理要求がアダプター用であることを示します。 このフラグが設定されている場合、ミニポート ドライバーは、PathIdTargetId、および Lunの値を無視する必要があります。

PathId

要求の SCSI ポートまたはバス識別子。 この値は 0 から始まります。

TargetId

バス上のターゲット コントローラーまたはデバイス識別子。

Lun

デバイスの論理ユニット番号 (LUN)。

DevicePowerState

デバイスの要求された電源状態を指定する STOR_DEVICE_POWER_STATE 型の列挙子値。

SrbFlags

ミニポート ドライバーは、このメンバーを無視する必要があります。

DataTransferLength

ミニポート ドライバーは、このメンバーを無視する必要があります。

TimeOutValue

Storport ドライバーが要求がタイムアウトしたと判断するまでに要求を実行できる間隔 (秒単位)。

DataBuffer

ミニポート ドライバーは、このメンバーを無視する必要があります。

SenseInfoBuffer

ミニポート ドライバーは、このメンバーを無視する必要があります。

NextSrb

ミニポート ドライバーは、このメンバーを無視する必要があります。

OriginalRequest

ミニポート ドライバーは、このメンバーを無視する必要があります。

SrbExtension

SRB 拡張機能へのポインター。 ミニポート ドライバーは、SrbExtensionSize HW_INITIALIZATION_DATA 構造体 0 に設定する場合は、このメンバーを使用できません。 Storport ドライバーは、このメンバーが指すメモリを初期化しません。 HBA は、ミニポート ドライバーが SRB 拡張機能に書き込むデータに直接アクセスできます。 ミニポート ドライバーは、StorPortGetPhysicalAddress ルーチンを呼び出すことによって、SRB 拡張機能の物理アドレスを取得できます。

PowerAction

発生しようとしているシステム シャットダウンの種類を指定する STOR_POWER_ACTION 型の列挙子値。 この値は、DevicePowerState メンバーで示されているように、デバイスが D1、D2、または D3 の電源状態に移行する場合にのみ意味があります。

Reserved

システム用に予約されています。

Reserved5[16]

システム用に予約されています。

備考

Storport ドライバーは、ミニポート ドライバー SRB を渡すために HwStorBuildIo を呼び出します。 HwStorBuildIo 、SRB のメンバー 関数を調べて、SRB の型を判断する必要があります。 Function メンバーが SRB_FUNCTION_POWER に設定されている場合、SRB は SCSI_POWER_REQUEST_BLOCK型の構造体です。

Storport ドライバーは、アダプターに接続されている記憶域デバイスに影響を与える Windows 電源イベントのミニポート ドライバーに通知するミニポート ドライバーに SCSI_POWER_REQUEST_BLOCK 要求を送信します。 電源投入イベントの場合、この要求はミニポート ドライバーに自身を初期化する機会を与えます。 休止状態またはシャットダウン イベントの場合、この要求は、ミニポート ドライバーに I/O 要求を完了し、電源停止の準備をする機会を与えます。 ミニポート ドライバーは、SCSI_POWER_REQUEST_BLOCKPowerAction メンバーの値を使用して、必要なアクションを決定できます。 ミニポート ドライバーが SCSI_POWER_REQUEST_BLOCK 要求を完了すると、Storport ドライバーは、アダプター 電源を切るために ScsiStopAdapter の制御要求 HwScsiAdapterControl を呼び出します。 ミニポート ドライバーは、SRB_FUNCTION_POWER要求の処理中に再初期化するか、Storport ドライバーが ScsiRestartAdapter 制御要求を実行するために HwStorAdapterControl 呼び出すときに待機して再初期化できます。

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