デバイスドライバーの完成度はOSの安定性に大きく影響をおよぼす。Windows 3.1やWindows 95はデバイスドライバーのフレームワークとして、VxD(仮想デバイスドライバー)を採用していたが、Windows 98およびWindows 2000以降はWDM(Windows Driver Model: 旧Win32 Driver Model)に切り替わった。

だが、WDMの構造は問題からコーディングしにくいという意見が多く、開発者を支援するツールセットとしてWDF(Windows Driver Foundation)のリリースに至っている。Microsoftは長年にわたりデバイスドライバーの改善にチャレンジしてきたが、同社は更なる改善を目指すという。

Microsoftが2018年8月15日(現地時間)に公開した公式ブログによれば、WDFドライバーの開発を容易にするDMF(Driver Module Framework)のモジュールやサンプルコードをGitHub上で公開した。同社はWindows 10におけるデバイスドライバー周りを、次のステップに押し上げる。

  • WDFの概要(公式ブログより抜粋)

従来のWDFは上図で示したように、デバイスコンテキストにアクセス可能な状態を用意し、WDFドライバー経由でモジュールにアクセスすることで、ハードウェアの機能を引き出している。だが、この状態では各モジュールへアクセスする際に排他処理制御が必要になり、WDFドライバーの開発に負担がかかる。

  • DMFの概要(公式ブログより抜粋)

この点を大きく改善したのがDMFである。WDFドライバーはDMF経由で各モジュールにアクセスするものの、各モジュールには独立性を保持するモジュールコンテキストと、DMF経由の呼び出しをインターセプトし、各モジュールへコールバック処理を行うWDFコールバックを備えるようになった。

また、矢印で示されているように、ACPI、ボタン、ストリームは独立している。GPIOやFIFOはボタン経由でしか通信できないため、データの流れがシンプルになった。

WDMはかつてVxDを代替したが、DMFはWDFを置き換える存在ではない。デバイスドライバー開発者はOSインターフェースを直接使用することもできる。ただ、 DMFを使うことで処理の分割が容易になるため、コーディングしやすいという大きな利点を得られる。

MicrosoftはDMFの開発に至る背景として、多様化したSurfaceシリーズのデバイスドライバーおよびファームウェア開発に伴うコードの構造化があったと説明する。

WDFはWindows 10時代に入った現在もバージョンを重ねているが、当時から掲げていた開発者が最小限の理解でコーディングを可能にする概念的スケーラビリティはDMFでさらに加速するだろう。

阿久津良和(Cactus)