次の方法で共有


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

Storport 仮想ミニポートは、VIRTUAL_HW_FIND_ADAPTER ルーチンに提供される構成情報を使用して、それ自体をさらに初期化します。

構文

VIRTUAL_HW_FIND_ADAPTER VirtualHwFindAdapter;

ULONG VirtualHwFindAdapter(
  PVOID DeviceExtension,
  PVOID HwContext,
  PVOID BusInformation,
  PVOID LowerDevice,
  PCHAR ArgumentString,
  PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  PBOOLEAN Again
)
{...}

パラメーター

DeviceExtension

ミニポート ドライバーのアダプターごとの非ページ記憶域へのポインター。 オペレーティング システム固有のポート ドライバーはメモリを割り当て、ミニポートの VIRTUAL_HW_FIND_ADAPTER ルーチンを呼び出す前に 0 でこの拡張機能を初期化します。

HwContext

デバイス スタック内の PDO へのポインター。 HBA 自体は FDO です。 ミニポート ドライバーが物理ハードウェアを制御する場合、PDO は Pci.sys ドライバーに属している可能性があります。 ただし、仮想ミニポート ドライバーの場合、PDO は PnP マネージャーに属しています。

BusInformation

ミニポートの機能デバイス オブジェクト (FDO) へのポインター。

LowerDevice

ミニポートの FDO によって制御されるデバイス オブジェクトへのポインター。

ArgumentString

null で終わる ASCII 文字列へのポインター。 指定された場合、この文字列には、基本パラメーターなどのレジストリからのデバイス情報が含まれます。

ConfigInfo

PORT_CONFIGURATION_INFORMATION 構造体へのポインター。 ポート ドライバーは、ミニポート ドライバーの DriverEntryVIRTUAL_HW_INITIALIZATION_DATAに設定されている値など、既知の構成情報を使用してこの構造体を初期化します。 VIRTUAL_HW_FIND_ADAPTER は、提供された情報を使用して、説明されている仮想 HBA がミニポート ドライバーでサポートされるかどうかを判断する必要があります。 その場合、VIRTUAL_HW_FIND_ADAPTER はその HBA を初期化して構成し、不足している構成情報を入力します。 可能であれば、ミニポート ドライバーは、オペレーティング システムに依存するポート ドライバーがミニポート ドライバーの DriverEntry ルーチンによって提供されなかった追加の構成情報を提供できない場合に、サポートする HBA の各種類の既定の構成値を持つ必要があります。

Again

使用されません。

戻り値

VIRTUAL_HW_FIND_ADAPTER は、次のいずれかの状態値を返す必要があります。

リターン コード 形容
SP_RETURN_FOUND サポートされている HBA が見つかり、HBA 関連の構成情報が正常に決定され、PORT_CONFIGURATION_INFORMATION 構造に設定されました。
SP_RETURN_ERROR HBA が見つかりましたが、構成情報を取得したときにエラーが発生しました。 可能であれば、このようなエラーは、ScsiPortLogErrorでログに記録する必要があります。
SP_RETURN_BAD_CONFIG 指定された構成情報がアダプターに対して無効でした。
SP_RETURN_NOT_FOUND 指定された構成情報に対してサポートされている HBA が見つかりませんでした。

備考

構成情報構造体の VirtualDevice フィールドを TRUE 設定する必要があります。 その他のフィールドは、必要に応じて設定できます。

ポート ドライバーは、PASSIVE_LEVELで Storport 仮想ミニポートの VIRTUAL_HW_FIND_ADAPTER を呼び出します。

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

typedef
ULONG
VIRTUAL_HW_FIND_ADAPTER (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_ PVOID  LowerDevice,
  _In_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _Out_ PBOOLEAN Again
  );

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

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

VIRTUAL_HW_FIND_ADAPTER MyVirtualHwFindAdapter;

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

_Use_decl_annotations_
ULONG
MyVirtualHwFindAdapter (
  _In_ PVOID  DeviceExtension,
  _In_ PVOID  HwContext,
  _In_ PVOID  BusInformation,
  _In_ PVOID  LowerDevice,
  _In_ PCHAR  ArgumentString,
  _Inout_ PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
  _Out_ PBOOLEAN Again
  );
  {
      ...
  }

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

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー storport.h (Storport.h を含む)

関連項目

HwStorFindAdapter

PORT_CONFIGURATION_INFORMATION

ScsiPortLogError

VIRTUAL_HW_INITIALIZATION_DATA