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 の開発サイクルの最後で、対象のドライバには以下の要素が含まれます:
- 対象のユーザーモードのドライバ - WinDriver の関数を使用して記述した .EXE
- WinDriver のカーネル モジュール - windrvr6.sys/vxd/o または windrvr.sys/vxd/o (使用する OS や WinDriver のバージョンによって異なります)
- 対象の Kernel PlugIn ドライバ - MyDriver.sys/vxd/o - これが、カーネル レベルへ移植した機能を持つドライバです
|