コンテンツにスキップ

「Windows Driver Model」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
m 外部リンクの修正 http:// -> https:// (ascii.jp) (Botによる編集)
 
(17人の利用者による、間の20版が非表示)
1行目: 1行目:
{{出典の明記|date=2016年1月}}
'''Windows Driver Model''''''WDM'''とは、[[Microsoft Windows 98]] [[Microsoft Windows 2000|Windows 2000]] で導入された[[デバイスドライバ]]のフレームワークであり、それ以前の [[Microsoft Windows|Windows]]で使われていた[[仮想デバイスドライバ|VxD]]などを代替するものとして登場した。導入当時は'''Win32 Driver Model''' と呼ばれていた。
{{更新|date=2016年1月}}
<!-- 英語版の「Windows Driver Model」を翻訳した2008年当時の情報で止まっている模様。また、出典がない。 -->
'''Windows Driver Model''' ('''WDM''') とは、[[Microsoft Windows 98|Windows 98]]と[[Microsoft Windows 2000|Windows 2000]]で導入された[[デバイスドライバ]]のフレームワークであり、それ以前の[[Microsoft Windows|Windows]]で使われていた[[仮想デバイスドライバ|VxD]]などを代替するものとして登場した。導入当時は'''Win32 Driver Model'''と呼ばれていた。


== 概要 ==
== 概要 ==
WDMドライバは複雑に階層化されており、[[I/O Request Packet]](IRP)を使って相互に通信する。WDMは、各種要求を標準化し書くべきコード量を削減した統一的ドライバモデルとして、Windows 98 Windows 2000 向けに定義された。WDMドライバは、それ以前の Windows (95 や 3.1 NT 4.0 など)では動作しない。WDM に従ったドライバは、Windows 98/Windows 98 Second Edition/[[Microsoft Windows Millennium Edition|Windows Me]]/Windows 2000/[[Microsoft Windows XP|Windows XP]]/[[Microsoft Windows Server 2003|Windows Server 2003]]/[[Microsoft Windows Vista|Windows Vista]]が動作する[[80x86|x86]]ベースのコンピュータで[[Application Binary Interface|バイナリ互換]]と[[ソース互換]]を実現する。WDM 従来互換を保つよう設計されている。すなわち、ある版のWDMはそれ以前の版のWDMに従って書かれたドライバと互換性を有する。そのようなWDMドライバは新たなOS機能を利用できないが、新たなOS上でも動作は可能である。逆方向の互換性はない。新しい版に従ったドライバを古いOSで使おうとすると失敗する。例えば、Windows XP WDM Windows 2000 向けドライバをロード可能だが、Windows XP の新規機能は使えない。逆に Windows 2000 WDM Windows XP 向けドライバロードできない。
WDMドライバは複雑に階層化されており、{{仮リンク|I/O要求パケット|en|I/O request packet}}<ref>[https://msdn.microsoft.com/ja-jp/library/windows/hardware/hh439638.aspx I/O 要求パケット (Windows Drivers)]</ref> (I/O Request Packet, IRP) を使って相互に通信する。WDMは、各種要求を標準化し書くべきコード量を削減した統一的ドライバモデルとして、Windows 98とWindows 2000向けに定義された。WDMドライバは、それ以前のWindows([[Microsoft Windows 95|Windows 95]][[Microsoft Windows 3.x|Windows 3.1]]、[[Microsoft Windows NT|Windows NT 4.0]]など)では動作しない。WDMに従ったドライバは、Windows 98 / Windows 98 Second Edition / [[Microsoft Windows Millennium Edition|Windows Me]] / Windows 2000 / [[Microsoft Windows XP|Windows XP]] / [[Microsoft Windows Server 2003|Windows Server 2003]] / [[Microsoft Windows Vista|Windows Vista]]が動作する[[x86]]ベースの[[コンピュータ]]で[[アプリケーションバイナリインタフェース|バイナリ互換]]と[[アプリケーションプログラミングインタフェース|ソースコード互換]]を実現する。WDMは[[前方互換]]を保つよう設計されている。すなわち、ある版のWDMはそれ以前の版のWDMに従って書かれたドライバと互換性を有する。そのようなWDMドライバは新たな[[オペレーティングシステム|OS]]機能を利用することはできないが、新たなOS上でも動作自体は可能である。逆方向の互換性はない。すなわち、新しい版に従ったドライバを古いOSで使おうとすると失敗する。例えば、Windows XPのWDMはWindows 2000向けドライバをロード可能だが、Windows XPの新規機能は使えない。逆にWindows 2000のWDMはWindows XP向けドライバーをロードできない。


WDM仕様に準拠するカーネルモードドライバーはWDMドライバー({{lang-en-short|WDM driver}})と呼ばれる<ref>"Kernel-mode drivers that follow WDM rules are called ''WDM drivers''." ''[https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/introduction-to-wdm Introduction to WDM]''. Windows Hardware Developer.</ref>。
WDM Windows 2000 の[[カーネルモード]]ドライバの中間層として存在し、Windows 向けドライバ作成に際しての機能を増やし、ドライバを書きやすくすることを意図していた。WDM Windows 98 Windows 2000 の間でバイナリおよびソース互換性を保つよう設計された。WDMドライバは以下のように分類される。


WDMはWindows 2000の[[カーネルモード]]ドライバの中間層として存在し、Windows向けドライバ作成に際しての機能を増やし、ドライバを書きやすくすることを意図していた。WDMはWindows 98とWindows 2000の間でバイナリ互換性およびソースコード互換性を保つよう設計された。WDMドライバは以下のように分類される。
=== ファンクションドライバ ===
'''ファンクションドライバ'''は、デバイス用の主要なドライバである。ファンクションドライバはデバイスベンダーが作成するのが普通である。1つのドライバが複数のデバイスを制御することもできる。
; クラスドライバ
: 他のクラスドライバやミニポートドライバをその上に構築できる、一種のフレームワークドライバ。WDMアーキテクチャの異なる階層間のインタフェースを提供する。異なるクラス階層に属するドライバ間の共通機能はクラスドライバとして書くことができ、それを他のクラスドライバやミニポートドライバから利用する。クラスドライバの最下層側はミニポートドライバとのインタフェスを持ち、最上層側はOSとのインタフェスを持つ。クラスドライバは必要に応じて、動的にロード/アンロードできる。ハードウェアや[[バス (コンピュータ)|バス]]固有の機能というよりも、クラス固有の機能を持つことが多く、場合によっては単なる[[数え上げ]]のような機能しか持たないこともある。
; ミニポートドライバ
: [[Universal Serial Bus|USB]]、[[サウンドカード]]、[[Small Computer System Interface|SCSI]]、[[ネットワークカード]]などに対応したファンクションドライバ。Windows のバージョン間でバイナリソース互換性があり、ハードウェア固有の制御をバスドライバ経由で行う。


=== バスドライバ ===
=== ファンクションドライバ ===
'''ファンクションドライバ'''は、デバイス用の主要なドライバである。ファンクションドライバはデバイスベンダーが作成するのが普通である。1つのドライバが複数のデバイスを制御することもできる。
'''バスドライバ'''は、バスコントローラ、バスアダプタ、バスブリッジなどを扱う。マイクロソフトが提供しているバスドライバとしては、[[Peripheral Component Interconnect|PCI]]、[[プラグアンドプレイ|PnPISA]]、[[Small Computer System Interface|SCSI]][[Universal Serial Bus|USB]]、[[IEEE 1394]] などがある。各ベンダーは必要に応じて独自のバスドライバを作成できる。バスドライバは、同じタイプのバスが複数あれば、それらをまとめて制御できる。
; クラスドライバ
: 他のクラスドライバやミニポートドライバをその上に構築できる、一種のフレームワークドライバー<ref>[https://ascii.jp/elem/000/000/633/633118/ ASCII.jp:Windowsを動かすデバイスドライバの仕組み 前編 (1/4)|基礎から覚える 最新OSのアーキテクチャー]</ref>。WDMアーキテクチャの異なる階層間の[[インタフェース (情報技術)|インターフェイス]]を提供する。異なるクラス階層に属するドライバ間の共通機能はクラスドライバとして書くことができ、それを他のクラスドライバやミニポートドライバから利用する。クラスドライバの最下層側はミニポートドライバとのインタフェスを持ち、最上層側はOSとのインタフェスを持つ。クラスドライバは必要に応じて、動的にロード / アンロードできる。[[ハードウェア]]や[[バス (コンピュータ)|バス]]固有の機能というよりも、クラス固有の機能を持つことが多く、場合によっては単なる列挙 (enumeration) のような機能しか持たないこともある。
; ミニポートドライバ
: [[ユニバーサル・シリアル・バス|USB]]、[[サウンドカード]]、[[Small Computer System Interface|SCSI]]、[[ネットワークカード]]などに対応したファンクションドライバこれらはWindowsのバージョン間でバイナリおよびソースコード互換性があり、ハードウェア固有のものだが、ハードウェアへのアクセス制御を固有スのクラスドライバ経由で行う。


=== フィルタドライバ ===
=== バスドライバ ===
'''バスドライバ'''は、バスコントローラ、バスアダプタ、バスブリッジなどを扱う。[[マイクロソフト]]が提供しているバスドライバとしては、[[Peripheral Component Interconnect|PCI]]、[[プラグアンドプレイ|PnPISA]]、SCSI、USB、[[IEEE 1394]]などがある。各ベンダーは必要に応じて独自のバスドライバを作成できる。バスドライバは、同じタイプのバスが複数あれば、それらをまとめて制御できる。
'''フィルタドライバ'''はオプション的なドライバであり、機能を付加したりデバイスの動作を変更したりするドライバや、デバイスとは関係ないドライバが属する。フィルタドライバは同時に複数のサービスを提供できる。上位層のフィルタドライバは、デバイス用ファンクションドライバの上位に位置し、下位層のフィルタドライバはファンクションドライバとバスドライバの中間に位置する。
; ドライバサービス
: カーネルレベルのフィルタドライバであり、[[Windowsサービス]]として実装され、アプリケーションからデバイスを使えるようにする。


=== フィルタードライバ ===
== VxD、WDM Windows 98 ==
'''フィルタドライバ'''はオプション的なドライバであり、機能を付加したりデバイスの動作を変更したりするドライバや、デバイスとは関係ないドライバが属する。フィルタドライバは同時に複数のサービスを提供できる。上位層のフィルタドライバは、デバイス用ファンクションドライバの上位に位置し、下位層のフィルタドライバはファンクションドライバとバスドライバの中間に位置する。
Windows 98 OS(98, 98SE, Me)は、WDM [[仮想デバイスドライバ|VxD]] の両標準をサポートしている。これらは同じハードウェアに対して異なる機能を提供するが、WindowsMe登場以降の世代のハードウェアでは WDM の方が機能が豊富なものがあった。例えば、[[TVチューナー]]カードを VxD ドライバで使うと画像の解像度が384×288ピクセルだったものが、同じカードをWDMドライバで使うと768×576ピクセルが可能となることがある。これは、WDMの一部である [[Broadcast Driver Architecture]] による改善である。{{要出典}}<!-- BDAはWindows XP以降専用なのだが・・・??? --!>
; ドライバサービス
: カーネルレベルのフィルタドライバであり、[[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|en|Broadcast Driver Architecture}}による改善{{要出典|date=2008年4月}}である。<!-- BDAはWindows XP以降専用なのだが・・・??? -->
古いハードウェアではVxDドライバでは持っていた機能の一部が、WDMドライバには提供されずに開発が終了されたものも多い。また、Windows9x系のWDMは Ntkern.vxd という一種のVxDドライバがNTカーネルをエミュレートする形であったため、逆にパフォーマンスや安定性で不利になることもあった。

しかし、改良された機能を使用するにはハードウェアベンダの努力が不可欠である。
古いハードウェアではVxDドライバでは持っていた機能の一部が、WDMドライバには提供されずに開発が終了されたものも{{要出典範囲|多い|date=2016年1月}}。また、[[Windows 9x]]のWDMは''Ntkern.vxd''という一種のVxDドライバがNTカーネルをエミュレートする形であったため、逆にパフォーマンスや安定性で不利になることもあった。


== 批判 ==
== 批判 ==
Windows Driver Model は、それ以前の[[仮想デバイスドライバ|VxD]]と Windows NT ドライバモデルを大幅に改良したが、以下のような点でドライバ開発者から批判されている[http://www.wd-3.com/archive/FrameworkIntro.htm]。
Windows Driver Modelは、それ以前の[[仮想デバイスドライバ|VxD]]とWindows NTドライバモデルを大幅に改良したが、以下のような点でドライバ開発者から批判されている<ref>[http://www.wd-3.com/archive/FrameworkIntro.htm Introducing Driver Frameworks for Windows May 6]</ref>


* WDM は習熟が困難である。
* WDMは習熟が困難である。
* [[パワーマネジメト]]イベントと[[プラグアンドプレイ]]の連携が難しい。このためドライバにバグきやすく、Windows マシンがスリープできなとか、正しく再起動できないといった問題が発生
* {{仮リク|電源管理|en|Power management}}イベントと[[プラグアンドプレイ]]の連携が難しい。これは、ドライバーコードおけるバグのせいでWindowsマシンが正しくスリープあるは復帰できないといった様々な状況を引き起こす。
* I/Oの取り消しがほぼ不可能である。
* [[入出力|I/O]]の取り消しがほぼ不可能である。
* 全てのドライバに似たような大量のサポートコードを書く必要がある。
* 全てのドライバに似たような大量のサポートコードを書く必要がある。
* 純粋な[[ユーザモード]]ドライバを書くためのサポートが存在しない。
* 純粋な[[ユーザモード]]ドライバを書くためのサポートが存在しない。


また、マイクロソフトが提供する[[ソフトウェアドキュメンテーション|文書]]やサンプルについてもいくつかの問題が指摘されている。
また、マイクロソフトが提供する[[ソフトウェアドキュメンテーション|文書]]やサンプルについてもいくつかの問題が指摘されている。


このような問題があるため、マイクロソフトは WDM の代替となる新たなフレームワーク [[Windows Driver Foundation]] をリリースした。これには、[[Kernel-Mode Driver Framework]](KMDF)と [[User-Mode Driver Framework]](UMDF)が含まれる。[[Microsoft Windows Vista|Windows Vista]] WDM Windows Driver Foundation の両方をサポートしている。KMDF Windows XP Windows 2000 向けにダウンロード可能であり、UMDF Windows XP 向けにダウンロード可能となっている。
このような問題があるため、マイクロソフトはWDMの代替となる新たなフレームワーク[[Windows Driver Foundation]]をリリースした。これには、[[Kernel-Mode Driver Framework]] (KMDF) と[[User-Mode Driver Framework]] (UMDF) が含まれる。[[Microsoft Windows Vista|Windows Vista]]はWDMとWindows Driver Foundationの両方をサポートしている。KMDFはWindows XPとWindows 2000向けにダウンロード可能であり、UMDFはWindows XP向けにダウンロード可能となっている。
<!-- HACK: 「Windows Driver Foundation」という名称は2016年現在廃止されていて、「Windows Driver Frameworks」に変更されているのでは? MSDNの前者のページは後者のページにリダイレクトされる。 -->

== ドライバー署名 ==
Windowsドライバーはセキュリティ上の配慮から、正式な作成者を確認することのできる[[デジタル署名]]を行なってリリースすることが推奨されている。デジタル署名の手段としては{{仮リンク|WHQL|en|WHQL Testing}} (Windows Hardware Quality Labs) 署名もしくは{{仮リンク|Authenticode|en|Authenticode}}署名(自己署名)が存在する。Windows Vista以降の32bit版OSでは署名のないドライバーをインストールしようとした際に警告が表示されるものの、インストールおよび動作は可能となる。一方、64bit版OSでは署名のない[[カーネルモード]]のドライバーを動作させることはできない<ref>[https://atmarkit.itmedia.co.jp/ait/articles/1009/09/news112.html 64bit Windows時代到来:第4回 64bit版デバイス・ドライバ (1/3) - @IT]</ref>。署名のないドライバーをインストールおよび動作できるテストモードも用意されているが、これは開発者向けの内部テスト目的であり、エンドユーザー環境では推奨されない<ref>[http://blogs.msdn.com/b/jpwdkblog/archive/2011/08/29/10201505.aspx ドライバーのデジタル署名の基礎 - Japan WDK Support Blog - Site Home - MSDN Blogs]</ref>。

[[Windows 8]]では、64bit版においてカーネルモードだけでなく[[ユーザーモード]]のドライバーも署名が必須となった<ref>[http://blogs.msdn.com/b/jpwdkblog/archive/2013/04/25/10413859.aspx ドライバーのデジタル署名の留意点 - Japan WDK Support Blog - Site Home - MSDN Blogs]</ref>。

[[Windows 10]]では2016年1月1日の[[SHA-1]]証明書廃止ポリシーを受けて、カーネルモードのドライバーは32bit/64bitにかかわらず[[マイクロソフト]]社による署名が必須となることが予定されている。ユーザーモードのドライバーに関しては、[[Windows 8.1]]同様にAuthenticode署名が利用可能である<ref>[http://blogs.msdn.com/b/jpwdkblog/archive/2015/09/18/windows-10-sha-1.aspx Windows 10 と SHA-1 廃止ポリシーによるドライバー署名への影響について - Japan WDK Support Blog - Site Home - MSDN Blogs]</ref>。


== 関連項目 ==
== 関連項目 ==
*[[Windows Driver Foundation]]
* [[Windows Driver Foundation]] (WDF)
* [[Windows Display Driver Model]] (WDDM)

== 脚注 ==
{{脚注ヘルプ}}
{{reflist}}


== 参考文献 ==
== 参考文献 ==
{{脚注の不足|section=1|date=2016年1月}}
* Finnel, Lynn (2000). ''MCSE Exam 70-215, Microsoft Windows 2000 Server''. Microsoft Press. ISBN 1-57231-903-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.
* Oney, Walter (2003). ''Programming the Windows Driver Model'', Microsoft Press, ISBN 0-7356-1803-8.


== 外部リンク ==
== 外部リンク ==
* [http://www.staudio.de/kb/english/drivers/ Windows driver API basics] - サウンドカード用ドライバの基本(WDM、[[ASIO]]、[[MME]]、DirectX など)
* [http://www.staudio.de/kb/english/drivers/ Windows driver API basics] - サウンドカード用ドライバの基本(WDM、[[ASIO]]、[[Windows Multimedia Extensions|MME]]、[[DirectX]]など)
* [http://channel9.msdn.com/Showpost.aspx?postid=156316 Channel 9 Video] - マイクロソフトの Device Management and Installation チームへのインタビュー。主に[[プラグアンドプレイ]]について
* [http://channel9.msdn.com/Showpost.aspx?postid=156316 Channel 9 Video] - マイクロソフトの Device Management and Installation チームへのインタビュー。主に[[プラグアンドプレイ]]について
* [http://msdn.net/library/ja/default.asp?url=/library/ja/jpdndxgen/htm/WhatsNewDX81.asp DirectX 8.1 の新機能] - [[Broadcast Driver Architecture]]について


{{Microsoft APIs}}
[[Category:オペレーティングシステムの仕組み]]
[[Category:マイクロソフトのAPI]]


{{DEFAULTSORT:かそうてはいすとらいは}}
[[da:WDM]]
[[Category:デバイスドライバ]]
[[en:Windows Driver Model]]
[[Category:マイクロソフトのAPI]]
[[es:Windows Driver Model]]
[[it:Windows Driver Model]]
[[ko:윈도 드라이버 모델]]
[[pt:Windows Driver Model]]
[[zh:Windows Driver Model]]

2024年7月18日 (木) 19:05時点における最新版

Windows Driver Model (WDM) とは、Windows 98Windows 2000で導入されたデバイスドライバーのフレームワークであり、それ以前のWindowsで使われていたVxDなどを代替するものとして登場した。導入当時はWin32 Driver Modelと呼ばれていた。

概要

[編集]

WDMドライバーは複雑に階層化されており、I/O要求パケット英語版[1] (I/O Request Packet, IRP) を使って相互に通信する。WDMは、各種要求を標準化し書くべきコード量を削減した統一的ドライバーモデルとして、Windows 98とWindows 2000向けに定義された。WDMドライバーは、それ以前のWindows(Windows 95Windows 3.1Windows 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のバージョン間でバイナリおよびソースコード互換性があり、ハードウェア固有のものだが、ハードウェアへのアクセス制御を固有バスのクラスドライバー経由で行なう。

バスドライバー

[編集]

バスドライバーは、バスコントローラー、バスアダプター、バスブリッジなどを扱う。マイクロソフトが提供しているバスドライバーとしては、PCIPnPISA、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.

外部リンク

[編集]