Storport 検証機能は、Storport ミニポート ドライバーとポート ドライバーの間の相互作用を監視します。 ミニポート ドライバーがルーチンを誤用する場合、ポート ドライバーからの要求に誤って応答する場合、または要求に応答するのに過剰な時間がかかる場合は、バグ チェックが発行されます。
注
Storport 検証機能は、Windows Vista 以降のバージョンの Windows でのみ使用できます。
Storport 検証によって検出された違反
Storport 検証機能は、Storport ルーチンのいくつかの誤用を検出できます。 これらのチェックの一部を個別に無効にすることもできます。
Storport 検証機能は、Storport ミニポート ドライバーが次のいずれかの違反をコミットした場合に、バグ チェック 0xF1またはバグ チェックの0xC4を発行します。
ミニポート ドライバーは、 StorPortInitialize ルーチンに無効な引数 (NULL ポインター) を渡します。
ミニポート ドライバーは StorPortStallExecution を呼び出し、0.1 秒より長い遅延を指定し、プロセッサが長時間停止します。
StorPortFreeDeviceBase は、ミニポート ドライバーの HwStorFindAdapter ルーチンからのみ呼び出すことができます。
StorPortGetUncachedExtension は、ミニポート ドライバーの HwStorFindAdapter ルーチンからのみ呼び出すことができます。また、バス マスター アダプターに対してのみ呼び出すことができます。 ミニポートは、StorPortGetUncachedExtension を呼び出す前に、HW_INITIALIZATION_DATA (Storport) 構造体の SrbExtensionSize を設定する必要があります。
StorPortGetDeviceBase ルーチンは、システム プラグ アンド プレイ (PnP) マネージャーによってドライバーに割り当てられたアドレスのみをサポートします。
ミニポート ドライバーは、StorPortRead xxx または StorPortWritexxx ルーチン (StorPortReadRegisterUchar や StorPortWritePortBufferUlong など) のいずれかに無効な仮想アドレスを渡します。 これは通常、指定されたアドレスが共通バッファー領域にマップされていないことを意味します。 指定した レジスタ または ポート は、 StorPortGetDeviceBase ルーチンによって返されるマップされたメモリ領域の範囲内にある必要があります。 このチェックは、x86 ベースのシステムでのみサポートされます。
Storport 検証で使用されるバグ チェック パラメーターの一覧については、「 バグ チェックの0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)」を参照してください。 バグ チェック 0xF1に加えて、Storport 検証では バグ チェック 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) も使用されます。
注
バグ チェック 0xF1 は、SCSI 検証と Storport 検証の両方に使用されます。
Storport 検証オプションのアクティブ化
Storport 検証オプションをアクティブ化する手順は、他のドライバー検証ツール オプションをアクティブ化する手順とは異なります。
ドライバー検証ツール マネージャーまたは Verifier.exe コマンド ラインを使用して、ミニポート ドライバーの検証を開始します。 Storport 検証はオプションとして使用できないため、少なくとも 1 つの 他 のドライバー検証ツール オプションを選択する必要があります。 詳細については、「 ドライバー検証ツールオプションの選択 」および「 検証するドライバーの選択」を参照してください。
regedit.exeを使用してレジストリを開きます。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorPort キーに、Verifier という名前のサブキーを追加します。 StorPort キーが存在しない場合は、作成する必要があります。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\STORPort\Verifier キー内に、VerifyLevel という名前のREG_DWORDエントリを追加します。 このエントリに割り当てられた値によって、アクティブになる Storport 検証テストが決まります。 0x1値は、最大検証を提供します。
コンピューターを再起動します。
VerifyLevel 値が存在しないか、0xFFFFFFFFと等しい場合、Storport の検証は無効になります。
再起動せずにアクティブ化する
一般に、Windows オペレーティング システムでコンピューターを再起動 (再起動) しないと、Storport の検証をアクティブ化または非アクティブ化することはできません。 StorPort.sys ドライバーは、読み込まれたときにのみ VerifyLevel レジストリ エントリを読み取ります。これは通常、起動時です。 ただし、レジストリ エントリを追加するときに StorPort.sys ドライバーが読み込まれていない場合、またはアンロードされて再読み込みされた場合は、コンピューターを再起動せずに Windows Vista 以降のバージョンの Windows で Storport 検証を有効にすることができます。