WinDriver のドライバ開発アーキテクチャと Kernel PlugIn の仕組みについて
WinDriver を使用して、ユーザーモードで対象のデバイスのドライバを開発します (アプリケーションの一部、または個別の DLL として)。これによって、大幅に開発時間を短縮し、 ドライバのデバッグをシンプルにします。PCI / ISA のドライバ開発の場合、ドライバが完成後、 ドライバ コードのパフォーマンスに関する部分は、簡単に WinDriver の "Kernel PlugIn" に移植できます。 Kernel PlugIn は、ring 0 で最大のパフォーマンスでこの部分を実行します。
WinDriver の Kernel PlugIn は、PCI/PCI-Express 版で、Windows XP / Server 2003 / Server 2008 / Vista / 7 および Linux をサポートします。
WinDriver を使用して開発したデバイス ドライバ アプリケーション (YourApp.EXE) は、 WinDriver の標準的な関数を使用して、WinDriver のカーネル モジュールを通して、対象のハードウェアへアクセスします (windrvr6.sys/vxd/o or windrvr.sys/vxd/o - 使用する OS と WinDriver のバージョンによって異なります)。
PCI/ISA の場合、ドライバ コードのパフォーマンスに関する部分は (割り込み処理、I/O 処理など)、 Kernel PlugIn で処理でき (独自のドライバ モジュール - YourDriver.sys/vxd/o)、カーネル モードで実行できます。 それによって、ユーザーモードとカーネルモード間のコンテキスト スウィッチのオーバーヘッドがなくなります。
PCI/ISA の場合、このアーキテクチャで、WinDriver の関数を使用して、ユーザーモードでドライバ コードのすべてを開発およびデバックでき、 シンプルな Kernel PlugIn のメカニズムで、パフォーマンスに関する部分のみカーネルモードへ移植することができます (コードを変更することなく)。
Kernel PlugIn の開発サイクルの最後で、対象のドライバには以下の要素が含まれます: