この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に
反映 させてください。反映後、このタグは除去してください。
(2016年1月 )
Windows Driver Model (WDM ) とは、Windows 98 とWindows 2000 で導入されたデバイスドライバー のフレームワークであり、それ以前のWindows で使われていたVxD などを代替するものとして登場した。導入当時はWin32 Driver Model と呼ばれていた。
概要
WDMドライバーは複雑に階層化されており、I/O要求パケット (英語版 ) [ 1] (I/O Request Packet, IRP) を使って相互に通信する。WDMは、各種要求を標準化し書くべきコード量を削減した統一的ドライバーモデルとして、Windows 98とWindows 2000向けに定義された。WDMドライバーは、それ以前のWindows(Windows 95 やWindows 3.1 、Windows NT 4.0 など)では動作しない。WDMに従ったドライバーは、Windows 98 / Windows 98 Second Edition / Windows Me / Windows 2000 / Windows XP / Windows Server 2003 / Windows Vista が動作するx86 ベースのコンピュータ でバイナリ互換 とソースコード互換 を実現する。WDMは前方互換 を保つよう設計されている。すなわち、ある版のWDMはそれ以前の版のWDMに従って書かれたドライバーと互換性を有する。そのようなWDMドライバーは新たなOS 機能を利用することはできないが、新たなOS上でも動作自体は可能である。逆方向の互換性はない。すなわち、新しい版に従ったドライバーを古いOSで使おうとすると失敗する。例えば、Windows XPのWDMはWindows 2000向けドライバーをロード可能だが、Windows XPの新規機能は使えない。逆にWindows 2000のWDMはWindows XP向けドライバーをロードできない。
WDM仕様に準拠するカーネルモードドライバーはWDMドライバー(英 : WDM driver )と呼ばれる[ 2] 。
WDMはWindows 2000のカーネルモード ドライバーの中間層として存在し、Windows向けドライバー作成に際しての機能を増やし、ドライバーを書きやすくすることを意図していた。WDMはWindows 98とWindows 2000の間でバイナリ互換性およびソースコード互換性を保つよう設計された。WDMドライバーは以下のように分類される。
ファンクションドライバー
ファンクションドライバー は、デバイス用の主要なドライバーである。ファンクションドライバーはデバイスベンダーが作成するのが普通である。1つのドライバーが複数のデバイスを制御することもできる。
クラスドライバー
他のクラスドライバーやミニポートドライバーをその上に構築できる、一種のフレームワークドライバー[ 3] 。WDMアーキテクチャの異なる階層間のインターフェイス を提供する。異なるクラス階層に属するドライバー間の共通機能はクラスドライバーとして書くことができ、それを他のクラスドライバーやミニポートドライバーから利用する。クラスドライバーの最下層側はミニポートドライバーとのインターフェイスを持ち、最上層側はOSとのインターフェイスを持つ。クラスドライバーは必要に応じて、動的にロード / アンロードできる。ハードウェア やバス 固有の機能というよりも、クラス固有の機能を持つことが多く、場合によっては単なる列挙 (enumeration) のような機能しか持たないこともある。
ミニポートドライバー
USB 、サウンドカード 、SCSI 、ネットワークカード などに対応したファンクションドライバー。これらはWindowsのバージョン間でバイナリおよびソースコード互換性があり、ハードウェア固有のものだが、ハードウェアへのアクセス制御を固有バスのクラスドライバー経由で行なう。
バスドライバー
バスドライバー は、バスコントローラー、バスアダプター、バスブリッジなどを扱う。マイクロソフト が提供しているバスドライバーとしては、PCI 、PnPISA 、SCSI、USB、IEEE 1394 などがある。各ベンダーは必要に応じて独自のバスドライバーを作成できる。バスドライバーは、同じタイプのバスが複数あれば、それらをまとめて制御できる。
フィルタードライバー
フィルタードライバー はオプション的なドライバーであり、機能を付加したりデバイスの動作を変更したりするドライバーや、デバイスとは関係ないドライバーが属する。フィルタードライバーは同時に複数のサービスを提供できる。上位層のフィルタードライバーは、デバイス用ファンクションドライバーの上位に位置し、下位層のフィルタードライバーはファンクションドライバーとバスドライバーの中間に位置する。
ドライバーサービス
カーネルレベルのフィルタードライバーであり、Windowsサービス として実装され、アプリケーションからデバイスを使えるようにする。
VxD、WDMとWindows 98
Windows 98系OS (98, 98SE, Me) は、WDMとVxD の両標準をサポートしている。これらは同じハードウェアに対して異なる機能を提供するが、Windows Me登場以降の世代のハードウェアではWDMの方が機能が豊富なものがあった。例えば、TVチューナー カードをVxDドライバーで使うと画像の解像度が384×288ピクセルだったものが、同じカードをWDMドライバーで使うと768×576ピクセルが可能となることがある。これは、WDMの一部であるBroadcast Driver Architecture (英語版 ) による改善[要出典 ] である。
しかし、改良された機能を使用するにはハードウェアベンダーの努力が不可欠である。
古いハードウェアではVxDドライバーでは持っていた機能の一部が、WDMドライバーには提供されずに開発が終了されたものも多い [要出典 ] 。また、Windows 9x系 のWDMはNtkern.vxd という一種のVxDドライバーがNTカーネルをエミュレートする形であったため、逆にパフォーマンスや安定性で不利になることもあった。
批判
Windows Driver Modelは、それ以前のVxD とWindows NTドライバーモデルを大幅に改良したが、以下のような点でドライバー開発者から批判されている[ 4] 。
WDMは習熟が困難である。
電源管理 (英語版 ) イベントとプラグアンドプレイ の連携が難しい。これは、ドライバーコードにおけるバグのせいでWindowsマシンが正しくスリープあるいは復帰できないといった様々な状況を引き起こす。
I/O の取り消しがほぼ不可能である。
全てのドライバーに似たような大量のサポートコードを書く必要がある。
純粋なユーザーモード ドライバーを書くためのサポートが存在しない。
また、マイクロソフトが提供する文書 やサンプルについてもいくつかの問題が指摘されている。
このような問題があるため、マイクロソフトはWDMの代替となる新たなフレームワークWindows Driver Foundation をリリースした。これには、Kernel-Mode Driver Framework (KMDF) とUser-Mode Driver Framework (UMDF) が含まれる。Windows Vista はWDMとWindows Driver Foundationの両方をサポートしている。KMDFはWindows XPとWindows 2000向けにダウンロード可能であり、UMDFはWindows XP向けにダウンロード可能となっている。
ドライバー署名
Windowsドライバーはセキュリティ上の配慮から、正式な作成者を確認することのできるデジタル署名 を行なってリリースすることが推奨されている。デジタル署名の手段としてはWHQL (英語版 ) (Windows Hardware Quality Labs) 署名もしくはAuthenticode (英語版 ) 署名(自己署名)が存在する。Windows Vista以降の32bit版OSでは署名のないドライバーをインストールしようとした際に警告が表示されるものの、インストールおよび動作は可能となる。一方、64bit版OSでは署名のないカーネルモード のドライバーを動作させることはできない[ 5] 。署名のないドライバーをインストールおよび動作できるテストモードも用意されているが、これは開発者向けの内部テスト目的であり、エンドユーザー環境では推奨されない[ 6] 。
Windows 8 では、64bit版においてカーネルモードだけでなくユーザーモード のドライバーも署名が必須となった[ 7] 。
Windows 10 では2016年1月1日のSHA-1 証明書廃止ポリシーを受けて、カーネルモードのドライバーは32bit/64bitにかかわらずマイクロソフト 社による署名が必須となることが予定されている。ユーザーモードのドライバーに関しては、Windows 8.1 同様にAuthenticode署名が利用可能である[ 8] 。
関連項目
脚注
参考文献
Finnel, Lynn (2000). MCSE Exam 70-215, Microsoft Windows 2000 Server . Microsoft Press. ISBN 1-57231-903-8 .
Oney, Walter (2003). Programming the Windows Driver Model , Microsoft Press, ISBN 0-7356-1803-8 .
外部リンク
マイクロソフトのAPIとフレームワーク
グラフィック オーディオ マルチメディア ウェブ データアクセス ネットワーク コミュニケーション 管理 コンポーネントモデル ライブラリ デバイスドライバ セキュリティ .NET ソフトウェアファクトリー IPC アクセシビリティ テキストと多言語 サポート