Windows Driver Kit (WDK) 8.1 がリリースされました

皆様、ご無沙汰しております。なおきお~です。

先日、Windows 8.1のリリースに伴い、Windows Driver Kit for Windows 8.1もリリースされました。

前バージョンであるWindows Driver Kit for Windows 8.0 は、Windows Kits 8.0 の一部として、Visual Studio 2012 にインテグレードしていました。

今回の Windows Driver Kit for Windows 8.1 も Visual Studio にインテグレードするという同じような方式で利用することなりますが、対象となる Visual Studio は、Visual Studio 2013 だけになります。Visual Studio 2012 には、Windows Driver Kit for Windows 8.1 をインテグレードすることができないことをお気を付けください。

さて、今回は、Windows Driver Kit for Windows 8.1 で新たに追加された項目から Windows Driver Frameworks (WDF) の機能の一つであるタイマー関連に着目して紹介したいと思います。

まず、WDF は、ユーザ モードで動作するフレームワークである User-Mode Driver Framework (UMDF) とカーネル モードで動作するフレームワークである Kernel-Mode Driver Framework (KMDF) があり、UMDF は、Version 2.0 になり、KMDF は、Version 1.13 になりました。今回紹介するタイマー関連の機能は、これらのバージョンのフレームワークが必要となります。

まず、No-Wake Timers というのは、 Timer によるシステムが low-power state からの復帰を軽減する機能となります。

システムが low-power state の時に Wake する必要がないタイマーがあっても、以前のバージョンでは、頻繁に Wake していました。しかし、No-Wake Timers は、システムが、low-power state から S0 になるまで呼び出されないタイマーオブジェクトを生成することができます。これによりシステムのバッテリー時間が改善されます。

具体的な方法は、WDF_TIMER_CONFIG 構造体の TolerableDelay に TolerableDelayUnlimited を設定いたします。

続きまして、KMDF だけの新機能となりますが、High Resolution Timers という高精度タイマーが追加されました。

従来のタイマーのインターバルでは、15.6 ミリ秒でしたので指定した Period の誤差がありましたが、この機能を利用することにより、このサイトの下部の例にあるとおり誤差を改善することができます。

具体的な方法は、WDF_TIMER_CONFIG 構造体の UseHighResolutionTimer に WdfTrue を指定します。ただし、TolerableDelay は、0 を指定しないとタイマーオブジェクトの生成に失敗してしまうので注意してください。

今回は、WDFのタイマー関連に着目しましたが、Windows Driver Kit for Windows 8.1 は、.1 とマイナーバージョンしかアップしていませんが、今回 紹介した機能以外も色々と追加・更新されており、Windows と同様 .1 の違いが、大きな違いになっていますので継続的に紹介したいと思っています。

それではまた。