次の方法で共有


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のみです。これは、電源管理要求がアダプター用であることを示します。 このフラグが設定されている場合、ミニポート ドライバーは 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_BLOCKPowerAction メンバーの値を使用して、必要なアクションを決定できます。 ミニポート ドライバーが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 を含む)

こちらもご覧ください

HwStorBuildIo

SCSI_REQUEST_BLOCK

StorPortNotification