申し訳ありませんが、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つは多かれ少なかれあなたに良い洞察を与え、ドライバー開発者のための読書として厳密に必要とされるわけではありませんが。