新規記事投稿 フォロー記事投稿 記事のキャンセル
From: Akitaka HOSOMI <hosomi@ga2.so-net.ne.jp>
Subject: Re: 仮想デバイスドライバ( Win32 レシピ篇 )
Date: 1998/11/02 02:25:59
Reference: junge/00194

デバイスドライバで扱うハードウェア資源としては、おおまかに、

    1. 物理メモリ
    2. I/O ポート
    3. 割込み
    4. DMA

といったものがある。




 DI/O ボード や A/D 変換ボードなどのちょっとした小物類であれば、2. と 3. が
扱えれば、まず、充分。

そのうえで、1. が扱えると、殆どの場合、事が足りる筈だ。

 4. は、DOS の頃でも、あまり自前で触ることは無かったぐらいだから、特には、
必要ないと思う。



で、1. 2. 3. について、特権レベル 0 ( リング 0 とも呼ばれる )で動作している
デバイスドライバから扱う方法を調べてみる。

 32-bit の王道を目指そう。そのために、わざわざ、正直なドライバを書くのだ。

# Win 3.1 ( Win16 )は、Out of 眼中。



 Win 98 からサポートされた WDM は、NT で使われている VDD を基盤としている。
そのため、そのフレームワークは、VDD のそれと、たいへん、よく似ている。

#  WDM のアーキテクチャを Win 98 上で提供してるのが、VxD だってところは、
# ビックリだ。


そういうわけで、WDM については、いまのところ、VDD として捉えていても構わな
いかも知れない。最終仕様になるまで、もう少し、拡張なども行なわれるだろうし。






さて、ドライバを書くのに、必要なもの

    Win 95(98)、NT 用  DDK ......  MSDN の CD-ROM
    アセンブラ ...................  DDK の中に含まれる

って、これぐらいかな? SDK が必要なら、それも CD-ROM の中に入ってるようだし。

# これらの CD-ROM は、レベル 2 ( プロフェッショナル・サブスクリプション )の
# 会員向けに配布されてるモノだね。



 C/C++ のインクルードファイルなども提供されてるそうだから、VC++ などでも、
ドライバの本体は、書けるようだ。ただし、その場合でも、スタートアップの部分
は、アセンブラで記述する必要があるかも知れない。


 C/C++ で書かにゃならんほどの込み入った処理は、まず、やる筈が無いので、現時
点では、アセンブラで記述したので、充分だろな。



ところで、MSDN には 1 月から入会すると、キリがいいんだけど、ちと、高いんだよ
ねぇ。

まぁ、Win 2000 が控えてるので、来年 MSDN で配布される CD-ROM は、かなり、お
得な感じもするけどなぁ。どうせ、ドライバを書くには、DDK が必要なんだし、入っ
ちまうかな?( うぅ〜〜む、来年 1 月までには、まだ、2 ヶ月もある )




まぁ、それはそれ。

とりあえず、VxD( Win32 ) に関して、最初に書いた 1. 2. 3. の扱い方を見ていく
ことにしまさぁい。