次の方法で共有


HW_ADAPTER_CONTROL コールバック関数 (storport.h)

ミニポート ドライバーの HwStorAdapterControl ルーチンは、電源管理のためにホスト バス アダプター (HBA) を停止または再起動するなど、アダプターの状態または動作を制御する同期操作を実行するために呼び出されます。

構文

HW_ADAPTER_CONTROL HwAdapterControl;

SCSI_ADAPTER_CONTROL_STATUS HwAdapterControl(
  [in] PVOID DeviceExtension,
  [in] SCSI_ADAPTER_CONTROL_TYPE ControlType,
  [in] PVOID Parameters
)
{...}

パラメーター

[in] DeviceExtension

ミニポート ドライバーの HBA ごとの記憶域へのポインター。

[in] ControlType

アダプターコントロール操作を指定する SCSI_ADAPTER_CONTROL_TYPE 値。各コントロールの種類がミニポート ドライバーによってアクションを開始します。 詳細については、SCSI_ADAPTER_CONTROL_TYPE を参照してください。

[in] Parameters

ControlTypeに関連する情報を含む構造体または値へのポインター。コントロール型が構造体を使用しない場合は NULL。 すべての構造体は呼び出し元によって割り当てられます。 詳細については、SCSI_ADAPTER_CONTROL_TYPE を参照してください。

戻り値

コントロールの種類に応じて、HwStorAdapterControl は、次のいずれかのSCSI_ADAPTER_CONTROL_STATUS値を返します。

リターン コード 形容
ScsiAdapterControlSuccess ミニポート ドライバーは、要求された操作が正常に完了しました。 現在、HwStorAdapterControl は、すべてのコントロール型に対してこの値を返す必要があります。
ScsiAdapterControlUnsuccessful アダプター制御操作が成功しなかった。

備考

HwStorAdapterControl は必須の関数です。

Storport は、HBA が初期化された後、最初の I/O より前に、ScsiQuerySupportedControlTypes コントロール型を使用してミニポートの HwStorAdapterControl を呼び出します。 ミニポート ドライバーは、サポートされている操作を パラメーターで SCSI_SUPPORTED_CONTROL_TYPE_LIST 構造体を埋めます。 HwStorAdapterControl がこの呼び出しから返 後、Storport ドライバーはミニポート ドライバーの HwStorAdapterControl コールバックをミニポートでサポートされている操作に対してのみ呼び出します。

Storport ドライバーで動作するミニポート ドライバーはプラグ アンド プレイ (PnP) をサポートする必要があるため、ミニポートは、ScsiStopAdapter をサポートし、ScsiRestartAdapter コントロールの種類を する必要があります。

次の表に、現在の IRQL と、コントロールの種類が発行されたときに取得されたスピンロックを示します。

コントロールの種類 IRQL スピン ロック
ScsiQuerySupportedControlTypes PASSIVE_LEVEL 何一つ
ScsiStopAdapter DIRQL InterruptLock
ScsiRestartAdapter DIRQL InterruptLock
ScsiSetBootConfig PASSIVE_LEVEL 何一つ
ScsiSetRunningConfig PASSIVE_LEVEL 何一つ
ScsiPowerSettingNotification PASSIVE_LEVEL 何一つ
ScsiAdapterPower <= DISPATCH_LEVEL 何一つ
ScsiAdapterPoFxPowerRequired <= DISPATCH_LEVEL 何一つ
ScsiAdapterPoFxPowerActive <= DISPATCH_LEVEL 何一つ
ScsiAdapterPoFxPowerSetFState <= DISPATCH_LEVEL 何一つ
ScsiAdapterPoFxPowerControl <= DISPATCH_LEVEL 何一つ
ScsiAdapterPrepareForBusReScan PASSIVE_LEVEL 何一つ
ScsiAdapterSystemPowerHints PASSIVE_LEVEL 何一つ
ScsiAdapterFilterResourceRequirements < DISPATCH_LEVEL 何一つ
ScsiAdapterPoFxMaxOperationalPower PASSIVE_LEVEL 何一つ
ScsiAdapterPoFxSetPerfState <= DISPATCH_LEVEL 何一つ
ScsiAdapterSurpriseRemoval < DISPATCH_LEVEL 何一つ
ScsiAdapterSerialNumber < DISPATCH_LEVEL 何一つ
ScsiAdapterCryptoOperation PASSIVE_LEVEL 何一つ
ScsiAdapterQueryFruId PASSIVE_LEVEL 何一つ
ScsiAdapterSetEventLogging PASSIVE_LEVEL 何一つ

HwStorAdapterControl 名前は単なるプレースホルダーです。 このルーチンの実際のプロトタイプは、storport.h で次のように定義されています。

typedef
SCSI_ADAPTER_CONTROL_STATUS
HW_ADAPTER_CONTROL (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_ADAPTER_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );

HwStorAdapterControl コールバック関数を定義するには、まず、定義するコールバック関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数の種類のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、ドライバー のコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールをすると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。

たとえば、MyHwAdapterControl という名前の HwStorAdapterControl コールバック ルーチン定義するには、次のコード例に示すように HW_ADAPTER_CONTROL 型を使用します。

HW_ADAPTER_CONTROL MyHwAdapterControl;

次に、次のようにコールバック ルーチンを実装します。

_Use_decl_annotations_
SCSI_ADAPTER_CONTROL_STATUS
MyHwAdapterControl (
  _In_ PVOID  DeviceExtension,
  _In_ SCSI_ADAPTER_CONTROL_TYPE  ControlType,
  _In_ PVOID  Parameters
  );
  {
      ...
  }

HW_ADAPTER_CONTROL 関数の種類は、Storport.h ヘッダー ファイルで定義されます。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈により、ヘッダー ファイル内の HW_ADAPTER_CONTROL 関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「Storport ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8
ターゲット プラットフォーム 万国
ヘッダー storport.h (Storport.h を含む)
IRQL 「解説」を参照してください。

関連項目

HwStorFindAdapter

HwStorInitialize

HwStorUnitControl

SCSI_ADAPTER_CONTROL_TYPE

SCSI_SUPPORTED_CONTROL_TYPE_LIST