はじめに
PCIデバイス制御方法
内部構造
DLL部分
NT用ドライバー
95/98用ドライバー

こんなDLL必要ありませんか?

PCIデバイスを設計したらやはり動作テストする環境が必要でしょう。

動作させるにはなんだかのソフトが必要になります。しかしWindowsをOSとしている場合、ハードウエアにアクセスするには、デバイスドライバーを作らなければなりません。

C言語でテストプログラムを作るくらいは出きるが、デバイスドライバーまで作るのはちょっと。という方も多いでしょう。

ここに紹介するデバック環境は、Windows用のDLLの形式をしています。win32環境から関数を呼び出すだけで、ハードウエアにアクセスできます。デバイスドライバーを作成する必要はありません。

基板動作中にちょっとメモリーの内容を確認してみたい。I/Oポートの値を読み出してみたい。こんなことをする開発段階でのソフト作成するのにも役立つことでしょう。これがデバイスドライバーを作ることなく実現できるのです。

ドライバー開発のツールとして

デバイスドライバーの開発でデバッカーを使う場合にはもう一台パソコンが必要だったり、一台で行うには、ソフトアイス等の市販ソフトが必要だったりして大変です。Visual C++のデバッカのように簡単にはいきません。

ここで紹介するDLLを使えばVisual C++Win32アプリとして開発できデバックもVisual C++でできます。本来デバイスドライバー内部で行う部分をWin32プログラムとして作成し、正しく動作することが確認できた後、それを元にデバイスドライバーを作成することができます。デバックの難しいカーネルモードのデバックにかかる時間を最小限にすることができます。(図1)

 wpe1.jpg (54885 バイト)

※図をクリックすると拡大されます

アプリケーション、ドライバーの一例として

アプリケーションからドライバーを制御する方法、95/98VxDNTのドライバーからコンフィグレーション空間やメモリーへのアクセス、割り込み使用方法など基本的な機能の実現方法を見ることができます。最も簡単なデバイスドライバーの例とも言えるでしょう。

95/98NTではデバイスドライバーの形式が全く異なります。ドライバーの制御方法もそれぞれ異なるのですが、できるだけDLL部分を共用化する方法を提案します。二つのプラットホームで動作するアプリケーションを作成する際の参考になるでしょう。

上へ 進む