>364氏 および 不特定多数の人へ
わたしは、以前、デバイスドライバ(のコード)の構成と言うものは、
分類の一方法として、
大きく分けて2つにわかれる、ということを学びました。

1)物理的デバイスに依存する(dependent)ドライバ
2)物理的デバイスに依存しない(independent)ドライバ

ビデオカードに対するデバイスドライバに関して言えば、
前者(Device dependent driver)は
NVIDIAとかATIといった会社が供給するカードないしはチップの、
デバイス単体に対して直接インターフェイスをもつドライバです。
端的に言えば、デバイスに対し、ネイティブなマシン語コード
レベルでアクセス可能です

後者(Device independent driver)は、一例をあげると、皆さん
ご存知のDirectXにおけるHALの部分です。
直接のインターフェイスは、通常、各デバイスの依存ドライバ
に対してもっています。複数のインターフェイスを持っている、と言う
ことになります。
DirectXのHAL(ハードウエアの機能を複数のビデオカードデバイスを
ヒト括りにするために抽象化した仮想物理デバイスというのが私の解釈)
は、Microsoftという会社が供給するものであって
したがって、すべての物理デバイス(ビデオカード/チップ)に必ずしも
対応する必要はなく、純粋に経済的な理由で、どこには対応し、どこは
DISCARD(?)する、と、決めてしまっています。
更に言えば、Windows系のOS上で動くプロセスから呼ばれることを
強制している HAL であり、その意味では、デバイス非依存ドライバ
あるいは、それを司るAPIセットとしての機能は、Microsoftと言う会社
の営利的判断に制約されたものなのだ、と私は考えます。