2

いくつかのカーネル レベル モジュールを使用する必要があるアプリケーションを作成しています。そのために、アプリを 2 つに分割しました。1 つのユーザー レベル プログラムと 1 つのカーネル レベル プログラムです。

デバイス ドライバーについて読み、いくつかのチュートリアルを実行した後、私は少し混乱しました。

特定のデバイスが関連付けられていないデバイス ドライバーが存在する可能性はありますか? カーネル モードで動作するデバイス ドライバ (カーネル コードなど) 以外に何かありますか?

ウイルス対策プログラムやその他の同様のアプリケーションは、カーネル モードでどのように動作しますか? デバイスドライバーは正しい方法ですか、それとも何か不足していますか?

4

3 に答える 3

5

はい、デバイス ドライバーは、実際のハードウェア (つまりデバイス) がマシンに接続されていなくても機能します。ISO イメージをマウントするために、接続された SCSI ドライブ (CD-ROM など) をエミュレートするさまざまなプログラムについて考えてみてください。または、コンテナを使用して (リムーバブル) ドライブをエミュレートする TrueCrypt について考えてみてください。これはハード ドライブ上の暗号化されたファイルにすぎません。

ただし、警告の言葉: ドライバーの開発には、より多くの考慮が必要であり、より慎重に行う必要があります。近道はなく、適切なテストを行い、一般的に、Windows ドライバー モデルについてかなりの知識を持っている必要があります。欠陥のあるドライバーや貧弱なドライバーは、システム全体の安定性を危険にさらすことを忘れないでください。

正直なところ、ここではチュートリアルを読むだけでは不十分だと思います。少なくとも、そのテーマに関するまともな本に投資したいと思うかもしれません. しかし、私の2セントだけです。

于 2010-09-20T09:56:28.653 に答える
3

申し訳ありませんが、Windows Internalsの本は、好奇心旺盛な方のための一般的な読み物です。ドライバーの開発に従事したい場合、またはせいぜいアーキテクチャーを理解するための前提条件としてお勧めすることはできません。他にもたくさんの本がありますが、それらのほとんどは少し古いものです。

目標によっては、より単純なドライバーモデルの1つでうまくいく場合があります。これは、ドライバーの開発が簡単であるということではありません-実際、私は上記の警告のすべての側面を2番目にし、さらに進んでいきます-しかし、レガシーファイルシステムフィルターを作成する代わりに、より面倒な作業の一部を節約できることを意味しますフィルタマネージャに基づいて作成します。ただし、SP2より前のWindows XPにはデフォルトでインストールされておらず、正しく覚えていれば、Windows2000にはSP4+SRP+パッチが必要です。WDF(Windows Driver Foundation)を使用すると、ドライバーの作成がさらに簡単になりますが、すべてのニーズに適しているわけではありません。

ここでは、デバイスという用語はやや不適切です。デバイスはドライバーでも意味があり、必ずしもハードウェアデバイスを指すとは限りません(指摘されているように)。大まかに言って、PDO(物理デバイスオブジェクト)とCDO(制御デバイスオブジェクト)には違いがあります。後者は通常、ユーザーモードで表示されるものであり、CreateFile、ReadFile、WriteFile、DeviceIoControlなどを使用してアクセスできます。CDOは通常、シンボリックリンクによってWin32レルムに表示されます(同じ名前のファイルシステムエンティティと混同しないでください)。C:のようなドライブ文字の割り当ては、実際には基盤となるデバイスへのシンボリックリンクです。それがCDOであるかPDOであるかは、ドライバーによって異なります。区別は、クラスでそのように教えられる概念的なものです。

そして、それは私が実際にお勧めするものです。Windowsドライバー開発についてのクラスを受講してください。私自身、OSRから2回のセミナーに参加したので、とてもお勧めできます。それらの人々は彼らが話していることを知っています。ああ、OSRオンラインで彼らのメーリングリストにサインアップしてください。

SysinternalsのWinObjを使用して、デバイスとドライバーのオブジェクトおよびシンボリックリンクの詳細を確認してください。


AVに関する質問については、はい、ファイルシステムフィルタードライバーを使用しています(簡単に説明します)。本格的なレガシーFSFDの唯一の代替手段は、ミニフィルターです。

カーネルモードで特殊な種類のDLLをロードすることも可能です。しかし、一般的に、ドライバーはカーネルモードへの道であり、そのように十分に文書化されています。

検討したい本(ISBNによる):最も重要なのは、「Windows Driver Modelのプログラミング」(0735618038)、「Windows NTデバイスドライバの開発」(1578700582)、「Windows NTファイルシステムの内部」(0976717514(OSRの新版))です。 、「ドキュメント化されていないWindows NT」(0764545698)および「ドキュメント化されていないWindows 2000シークレット」(0201721872)-そしてもちろん「WindowsNT / 2000ネイティブAPIリファレンス」(9781578701995)(クラシック)。最後の3つは多かれ少なかれあなたに良い洞察を与え、ドライバー開発者のための読書として厳密に必要とされるわけではありませんが。

于 2011-02-12T16:58:28.777 に答える
1

ウイルス対策(およびシステム回復)ソフトウェアは、通常、ファイルシステムフィルタードライバーを使用します。デバイスには、スタックのように配置された複数のフィルタードライバーを含めることができ、このデバイスでのイベント/操作は、スタックされたすべてのドライバーを通過する必要があります。たとえば、アンチウイルスはディスクデバイス用のフィルタドライバをインストールして、すべてのファイルシステム(読み取り/書き込み)操作を傍受してスキャンできるようにします。

上記の投稿で述べたように、良い本を読むことは始めるのに良い方法でしょう。また、DDK / WDKをインストールし、バンドルされている例を参照してください。

于 2010-11-04T11:00:13.210 に答える