Windowsのドライバ開発者は今後、近々オープンソース化される新しいMicrosoft Driver Module Framework(DMF)を使うことで、シンプルかつ構造化されたドライバの開発や、ドライバ間のコード共有が簡単になりそうだ。
Surfaceチームの開発から生まれたMicrosoft DMFは、あらゆるタイプのWDFドライバ開発を容易にすることを目的に、従来のWindows Driver Frameworkを拡張したものだ。
3年ほど前、[Surface]チームでは、さまざまなSurface製品用に記述されたドライバの、包括的な確認作業を行なうことを決定しました [...]。まず最初に行ったのは、ドライバの個々の機能をブレークダウンして、共有可能なコードベースにすることでした。この作業の繰り返しがDMFの開発につながりました。DMFはWDFを拡張したもので、DMFモジュールと呼ばれる新たなWDFオブジェクトのライブラリを提供します。モジュールは他のモジュールやWDF、ハードウェアに対する、構造化された方法でのアクセスを可能にします。
WDFでは一般に、単一のコンテキストとイベントコールバックを持つ単一のWDFオブジェクトとしてドライバを作成するが、DMFはそれを多数の分離したWDFオブジェクトに分解することで、動作とインタラクションをよりクリーンな、より理解しやすいものにする。DMFベースのドライバは複数のモジュールで構成される。それぞれのモジュールは、WDFコールバックを使用してイベントをディスパッチする簡易な調定レイヤを通じて、通常のWDFフレームワークとのインタラクションを行う。各モジュールは状態保持のために独自のコンテキストを所有し、一般的には同じくWDFコールバックを使用して、他のモジュールと通信する。モジュールが直接通信できるのは自身の子モジュールに限られている。すなわち、DMFがインスタンス生成したモジュールではなく、自身がインスタンスしたモジュールのみが対象となる。
さらにMicrosoftは、開発者が自身のドライバですぐに利用できるように、次のような再利用可能な共通モジュールを多数、オープンソースとして公開している。
- ACPI通知モジュール — ACPIへの要求送信、ACPIからの非同期通知の受信を可能にする。
- HiDターゲットモジュール — HIDデバイスへのアクセスを提供する。
- Thermal Cooling Interfaceモジュール — Thermal Cooling Interfaceを実装したもので、パッシブおよびアクティブな冷却コールバックを上位クライアントに提供する。
- スレッド — ドライバが別スレッドでの処理を簡単に行なえるようにする。
Microsoftによると、現在のWDFドライバはすべてDMFモジュールをベースとしている。
DMFの使用したドライバの開発方法を示すために、3つのサンプルドライバが提供されている。将来的には、さらに多くのサンプルが公開される予定だ。DMFにはMicrosoft自身がSurfaceドライバ用に開発したさまざまなモジュールのライブラリが含まれているが、Surfaceドライバ自体のコードは含まれていないので、その点には注意が必要だ。
この記事を評価
- 編集者評
- 編集長アクション