HW_FIND_ADAPTER コールバック関数 (storport.h)
HwStorFindAdapter ルーチンは、指定された構成を使用して、特定の HBA がサポートされているかどうかを判断し、サポートされている場合は、そのアダプターに関する構成情報を返します。
構文
HW_FIND_ADAPTER HwFindAdapter;
ULONG HwFindAdapter(
PVOID DeviceExtension,
[in] PVOID HwContext,
[in] PVOID BusInformation,
[in] PCHAR ArgumentString,
[in/out] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
[in] PBOOLEAN Reserved3
)
{...}
パラメーター
DeviceExtension
アダプターごとの記憶域を提供します。
[in] HwContext
NULL に設定します。
[in] BusInformation
NULL に設定します。
[in] ArgumentString
ドライバーに関するコンテキスト情報を含む NULL-terminated 文字列を提供します。
[in/out] ConfigInfo
初期化中にミニポート ドライバーが使用する初期化された PORT_CONFIGURATION_INFORMATION 構造体を提供します。
[in] Reserved3
システム用に予約されています。
戻り値
HwStorFindAdapter は、次のいずれかの状態値を返す必要があります。
リターン コード | 形容 |
---|---|
SP_RETURN_FOUND | サポートされている HBA が見つかり、HBA 関連の構成情報が正常に決定され、PORT_CONFIGURATION_INFORMATION 構造で設定されたことを示します。 |
SP_RETURN_ERROR | HBA が見つかったが、構成情報の取得中にエラーが発生したことを示します。 可能であれば、このようなエラーは StorPortLogErrorログに記録する必要があります。 |
SP_RETURN_BAD_CONFIG | 指定された構成情報がアダプターに対して無効であることを示します。 |
SP_RETURN_NOT_FOUND | 指定された構成情報でサポートされている HBA が見つからなかったことを示します。 |
備考
Storport ドライバーはプラグ アンド プレイ (PnP) デバイスのみをサポートしているため、HwStorFindAdapter を するための HwContext および BusInformation パラメーターは、非仮想ミニポート ドライバーには提供されません。
HwStorFindAdapter 、ConfigInfo 構造体の MaximumTransferLength フィールドと NumberOfPhysicalBreaks フィールドを設定する必要があります。 これらのフィールド以外の PORT_CONFIGURATION_INFORMATION 構造体では、アダプターの起動に必要なすべてのアダプター リソースが常に完全に指定されます。
HwStorFindAdapter 名前は単なるプレースホルダーです。 このルーチンの実際のプロトタイプは、Storport.h で次のように定義されています。
typedef
ULONG
HW_FIND_ADAPTER (
_In_ PVOID DeviceExtension,
_In_ PVOID HwContext,
_In_ PVOID BusInformation,
_In_z_ PCHAR ArgumentString,
_Inout_ PPORT_CONFIGURATION_INFORMATION ConfigInfo,
_In_ PBOOLEAN Reserved3
);
ほとんどの場合、StorPort は、スピン ロックを取得せずに IRQL == PASSIVE_LEVEL で HwStorFindAdapter ルーチンを呼び出します。 例外のケースは、ミニポートが ScsiRestartAdapter コントロール型で HwStorAdaptorControl の呼び出しをサポートしていない場合です。 このような状況では、StorPort は代わりに、HwStorFindAdapter と hwStorInitialize 呼び出すことによってアダプターを再初期化します。 この場合、HwStorFindAdapter は IRQL == DISPATCH_LEVELで呼び出されます。 また、ダンプ モードでは、HwStorFindAdapter が IRQL == HIGH_LEVELで呼び出されます。
例
HwStorFindAdapter コールバック関数を定義するには、まず、定義するコールバック関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数の種類のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、ドライバー のコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールをすると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。
たとえば、MyHwFindAdapter という名前の HwStorFindAdapter コールバック ルーチン定義するには、次のコード例に示すように HW_FIND_ADAPTER 型を使用します。
HW_FIND_ADAPTER MyHwFindAdapter;
次に、次のようにコールバック ルーチンを実装します。
_Use_decl_annotations_
ULONG
MyHwFindAdapter (
_In_ PVOID DeviceExtension,
_In_ PVOID HwContext,
_In_ PVOID BusInformation,
_In_z_ PCHAR ArgumentString,
_Inout_ PPORT_CONFIGURATION_INFORMATION ConfigInfo,
_In_ PBOOLEAN Reserved3
);
{
...
}
HW_FIND_ADAPTER 関数の種類は、Storport.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈を使用すると、ヘッダー ファイル内の HW_FIND_ADAPTER 関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「Storport ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | storport.h (Storport.h を含む) |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照)。 |
関連項目
HwStorInitializeの
PORT_CONFIGURATION_INFORMATION
StorPortInitializeの
StorPortLogErrorの