静的ドライバー検証ツールの概要

Windows ドライバー モデル (WDM) またはカーネル モード ドライバー フレームワーク (KMDF)、NDIS、または Storport に準拠する堅牢なドライバーを作成するには、専門知識を持ち、ドライバーが I/O マネージャーと対話する方法を理解する必要があります。 これらのドライバーのテストも同様に難しくなります。

固体ドライバーの開発は、次の理由で困難な場合があります。

  • ドライバーは、単一プロセッサ コンピューター上でも非同期です。

  • ドライバーは大規模に再入可能です。

  • ドライバーは、多くのあいまいなルールを使用します。

  • ドライバー モデルは、時間の経過に伴い進化し成熟します。

デバイス ドライバーのテストは、次の理由によって制限されます。

  • 観測。 ドライバーとオペレーティング システムの間の相互作用でエラーを観察することはできません。 ドライバーは暗黙的な使用規則に違反し、クラッシュや不適切な動作を引き起こす可能性がありますが、ドライバーの開発とテスト時にエラーの根本原因を検出することは困難です。

  • 制御。 通常の状況で正しく動作するドライバーには、スタック内のドライバーの下にあるドライバーが IRP に失敗した場合など、例外的な状況でのみ発生する微妙なエラーが発生する可能性があります。 このような状況は実行が困難であるため、従来のテストではドライバー コードを通じてエラー パスが適切に検出されません。

SDV は、ドライバーをテストするときに持っている観察と制御の両方を強化します。 WDM、KMDF、NDIS、および Storport 関数を適切に使用するための規則を定義し、それらの規則に対するドライバーのコンプライアンスを監視することで、SDV はエラーを観察する機能を向上させます。 たとえば、WDM 規則 LowerDriverReturn では、特定の状況では、ドライバーのディスパッチ ルーチンは常にスタック内の下位ドライバーによって返された値を返す必要があることを指定します。

SDV では、次の機能を提供することで制御も強化されます。

  • いくつかの最悪のシナリオ (オペレーティング システムの呼び出しが継続的に失敗するなど) が発生する可能性がある、ドライバーの環境の敵対的なモデル。

  • ドライバーで可能なすべての実行パスを体系的に調査する強力な静的分析 (モデル チェックと呼ばれます)。

SDV は、デバイス ドライバーに不可欠な単体テスト ツールです。 ドライバーを敵対的な環境に配置し、ドライバー モデルの使用規則の違反を探して、ドライバーを介してコード パスを体系的にテストします。