自動化のWin32ドライバーをテスト
-
21-09-2019 - |
質問
のんの誰も知っての通り?の
私は、ドライバ開発に新しいですし、より高いレベルの言語でのテスト駆動アプローチの、私は簡単に私が行くようにテストが私のためにステップアップされていることができない環境の種類に移動するようにするために使用しています。私は<あなたが本当にしていることを確認しますが、むしろ、これらのシステムのドライバのいずれかをインストールしません。の」の束を通じてクリックし、デバイスを選択し、私のテスト環境用の仮想PCを使用しており、現在、それをリセットする必要があり、オープンデバイスマネージャAM /テスト環境が起動中です同じようにホストマシンでのWinDbgを再起動中にem>の」タイプのダイアログが、最終的になんてこった...テスト環境をリセットします。
は、このプロセスの多くを繰り返した後、多くの時間がすでに、確かにこれを行う良い方法が存在しなければなりませんか?どのようなツール/メソッド/トリックは、商用ドライバ開発者は、テスト環境でそのドライバを実行するために使用しますか?
注、これはユニットテストドライバーではないですが、私はその段階になったまだまたはそれも可能であるかどうかを知りませんでした。これはただのWinDbgを使用してテスト環境をセットアップ発射について、私が行っているかもしれないいくつかの小さな変更は、私が期待して何をしていることを確認するために添付されます。
解決
これは、仮想化ソフトウェア+「モックオブジェクトの」(レイヤリング)のアプローチように私には思えます(アーロンDigullaによって示唆されるように)(セルギウスによって示唆されるように)+スクリプトは、デバイスドライバの開発を簡素化することができます。
しかし、あなたはユーザレベルのアプリケーションを開発するためのVisual Studioを使用している場合、あなたはあまりにも VisualDDKとカーネルデバイスドライバの開発のためにそれを使用することができますの(+ VirtualKD の速い仮想COMポート経由よりも、名前付きパイプ、オーバーデバッグまで) 、そのアドレスあなたが言及し、特に厄介。そのホームページから:
...このプロジェクトは、シンプルさをもたらし、 Windowsアプリケーションの利便性 ドライバ開発への展開 世界。より多くの手動作成はありません ビルドスクリプト、ドライバのコピー ファイル、INFファイルからドライバをインストールし、 WinDbgをとの切り替え 秒間ソースエディタまたは待機 各ステップの後に起因する超スローへ 仮想COMポート。ただ、ドライバを作成します 便利なドライバを使用してプロジェクト ウィザードでは、仮想マシンを選択し、 直接あなたのドライバのデバッグを楽しみます Visual Studioから。 テストaにしたいです 変化する?ただ、通常、Shiftキーを押しながら、F5、 あなたのドライバーを変更、それを再構築し、 を再び起動します。 VisualDDKはアンロードされます 古いドライバは、新しいものをインストールします そして、自動的にかつ迅速にそれをロードします。 WinDbgのローディングシンボルファイルに飽き 分とのシンボルを検索 秒?ただ、VisualDDKの最適化をしましょう この独自のDIAベースを使用してあなたのために シンボルエンジン。使用してC ++ /版STLPortで あなたのドライバ? VisualDDK意志ネイティブ すべてのSTLコンテナを視覚化し、 Visual Studioの場合と同様に良いように、文字列、 ユーザーモードアプリケーションのために。 ...
他のヒント
あなたが展開タスク(無開口装置マネージャ、ボタンをクリックするなど)を自動化する(SC.EXEとdevcon.exeを使用して)いくつかのシェルスクリプトを書くことができます。そして、(必要性、システムの起動を待たない)デバッグにシステムのスナップショットを準備します。
DOはDriverVerifierを使用してドライバをチェックすることを忘れないで!
私自身のスクリプトの例:)
sc create FsFilter type= filesys binPath= c:\FSFilterDrv.sys
sc start FsFilter
pause
sc stop FsFilter
sc delete FsFilter
私はをここにを与えたアドバイスに従ってください。基本的には、実際のシステムで可能な限り少ないとしてテストます。
あなたのケースでは、私は別のチップを持っている:Virtual PCは(おそらくあなたの本当のハードディスク上のファイルです)の仮想ハードディスクを使用している
。あなたはあなたのドライバをインストールする必要はありません、あなたは、単に仮想ハードディスクに新しいファイルを置き換えることができます。この(Windowsはその中のファイルをロックしていないので)実行しているシステムでは、多くの場合は不可能であるが、仮想システムでは、仮想ディスクファイルを開き、それを変更することができます。
私は、Virtual PCについてはよく分からないが、他のエミュレータは、仮想ディスクイメージを持つ仕事にツールが付属しています。 VPCはそれを行うことができない場合は、 VirtualBoxのに。
をチェックしてくださいこれは、すべてあなたが書いているドライバの種類に少し依存しています。しかし、多くの場合、ハンドルドライバのインストールは、スタート/ストップすることを適切なメイクファイル(または類似した何かを)書いて、テストハーネスの立ち上げは、すでに十分に良いことができます。
私はまた、自動的にログオン(AutoAdminLogonの)に私のテストマシンのすべてを設定するネットドライブをマップし、起動後、プロンプトに適切なコマンドを起動します。特定のテストを実行すると、その後、単一のコマンドでタイピングの問題です。
のVirtualPCについて一言:のVirtualPCは、カーネルモードの開発に非常に便利ですが、それが唯一のユニプロセッサ・マシンをエミュレートすることを忘れてはいけない - ので、必ず定期的にだけでなく、マルチプロセッサマシン上でコードをテストすることも。これは、VHDのトリックは便利なように見えるかもしれないが、言ってやや絆あなたの仮想PCへ - 。私には、実際のマシン上などのVirtualPC上の均等作業は、したがって、より良いアプローチと思われる適切なスクリプトを書く
最後に、恥知らずなプラグ検討していますが、Windowsのカーネルモードコードのためのフレームワークをテストユニットを探しているなら、私は1つを書いた:<のhref =「http://www.cfix-testing.org/」 rel = "nofollowをnoreferrer"> CFIX を。
私は思うDevConのユーティリティ(に説明した本OSRオンライン記事の)が手伝う。あなたはワンクリックで仕事をセットアップバッチファイルのことができるようにする必要があります。
これはosronline.comにサインアップして自由だし、あなたはおそらく、その記事に到達するためにサインアップする必要があります。あなたがドライバーを書いている場合は、あなたがサインアップしたいと思います。これらの人は、長い時間のためにこれをやっていると、そのウェブサイト上で本当に良い情報がたくさんあります。