新規記事投稿
フォロー記事投稿
記事のキャンセル
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. の扱い方を見ていく
ことにしまさぁい。