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構造体へのポインター。 ポート ドライバーは、ミニポート ドライバーの DriverEntry が VIRTUAL_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の詳細については、「関数の動作に注釈を付ける」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | storport.h (Storport.h を含む) |