このページの本文へ

前へ 1 2 次へ

Windows Info 第265回

Windows 10のデバイスドライバーで見えた、今秋の大型アップデートの可能性

2021年03月07日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows 10のデバイスドライバーについて調べていたら、Windows 10Xではデバイスドライバーに条件が課せられ、「Windows Drivers」という新しいルールに沿ったものが必要になることがわかった。となると、Windows 10Xのベースとなる今年のWindows 10は、どこかで“大規模”なアップデートをする必要がある。

 なぜなら、デバイスドライバーのバージョンなどに変更がある場合には、Windowsを再インストールするフルアップデートが必要なためだ。しかし、今春のアップデートは、19H2(Windows 10 Ver.1909、November 2019 Update)や20H2(Windows 10 Ver.20H2、October 2020 Update)と同じく「サービステクノロジー」によるアップデートとなることが発表されている。

 つまり、今秋登場する21H2は、大規模なアップデートになるしかない。大規模なアップデートでは、カーネルが大きく変わり、ドライバーの機能向上などにより、比較的大きなものを含む新機能が導入されそうだ。

Windows 10 Ver.2004からWindows上のデバイスドライバーの分類が変わり、Windows DriversとWindows Desktop Driversとなるという

WDDMのバージョンから推測できる今秋の大型アップデート

 きっかけは、WDDMのバージョンだった。現在Dev ChannelでプレビューしているWindows 10では、WSL2のGPU利用が可能になっている。これは、昨年後半からDevChannelに登場したもので、Microsoftのブログによれば、WDDM 2.9以上のGPUドライバーが必要になるという。

●DirectX Developer Blog
 https://devblogs.microsoft.com/directx/directx-heart-linux/

 WDDM(Windows Display Driver Model)は、DirectXに関連して、ディスプレイドライバーの仕様を定めたものだ。DirectXのバージョンアップなどで新機能が提供されると、原則WDDMのバージョンも更新される。そもそも、DirectXは、GPUの新機能に対応したものだからだ。現行の20H1と20H2では、WDDM 2.7までの対応となっている。

 WDDMのバージョンは、DirectXの情報を表示するDxDiag.exeというWindowsの付属ツールでGPUドライバーに関連した情報として表示できる。20H2上で動作させるとWDDM 2.7と表示する。もちろんインストールしてあるドライバーのバージョンにも依存する。

20H2は、WDDM 2.7までしか対応していない

 Windows Insider ProgramのDev Channelの最新プレビュー版Build 21322では、WDDM 3.0が表示される。

Dev Channelで公開されているプレビュー版Build 21322では、WDDM 3.0に対応している

 もちろん、そのためにはIntelやNVIDIAのサイトからプレビュー版のドライバーを持ってくる必要がある。現在では、IntelやNVIDIAのGPUドライバーは、1つのパッケージで複数のデバイス、複数のWindowsバージョンに対応している。Build 21322でWDDM 3.0を表示したドライバーを20H2にインストールしてみると、WDDM 2.7と表示される。これにより、20H2はWDDM 2.7までしか対応していないことがわかる。

 Dev Channelのプレビュー版は、昨年から今年にかけてのものは、大きく3つの世代に対応する。それぞれ「MN_RELEASE」「FE_RELEASE」「CO_RELEASE」というリリース名がある。これは、Windowsの開発で世代を表していると考えられる。また、このリリースに応じて、ビルド番号も大きく増加する。

 WSL2のGPU対応にWDDM 2.9以上のドライバーが必要だとすると、少なくとも、今秋のアップデート(21H2)では、FE_RELEASEと同等のカーネルが採用されるはずだが、少なくとも21H1のカーネルに関しては、20H1や20H2と同程度のサイズしかなく、21H1がサービステクノロジーでのアップデートになることから、WDDM 2.7対応のままと想定される。しかし、WSL2のGPU対応はWDDM 2.7では不可能。となると、秋のアップデートでWDDM 2.9以上を採用するしかない。

さらにデバイスドライバーを調べた

 さらに調べると、20H1から大きな変更が加えられたことがわかった。Windows 10のデバイスドライバーは、これまで「ユニバーサルドライバー」(または「ユニバーサルWindowsドライバー」)と呼ばれていた。デバイスドライバーの基本モデルは、WDM(Windows Driver Model)のままで大きく変化していない。しかし、デバイスドライバー開発では、ドライバーの作り方やインストール方法などにルールが定められている。Windows 10のRTM(Windows 10 Ver.1507。最初のバージョン)から始まったルールがユニバーサルドライバーだ。

 WDMは、大きくカーネルモードドライバーとユーザーモードドライバーの2つに別れる。これは、カーネル空間で動作するか、一般アプリケーションと同じユーザー空間で動作するかの違いだが、基本的にはユーザーモードドライバーは、最終的にはカーネルモードドライバーを呼び出して処理を完了する。そもそも、ハードウェアをアクセスするか、カーネル内のデータを利用するような場合でなければ、デバイスドライバーを作る必要がない。

 この2つのモードでドライバーを作る仕組みがKMDF(Kernel-Mode Driver Framework)とUMDF(User-Mode Driver Framework)だ。これは、ドライバーのひな形となるもの(クラス)で、必要なメソッドやプロパティといった「差分」定義するだけでドライバーを開発できる。実は、このKMDF/UMDFにもバージョンがある。Windowsは、すべて特定のバージョンのKMDF/UMDFに対応していて、Windowsがバージョンアップされると、対応可能なKMDF/UMDFのバージョンが上がる。逆に、過去のWindowsでも動作させるには、特定のバージョンでドライバーを開発する必要がある。

 KMDF/UMDFなどを含め、ドライバー開発のための基本的なソフトウェアや組み込む定義や機能などをまとめたのがWindows Driver Kit(WDK)で、これも、Windowsのバージョンに応じてバージョンアップしていく。

ユニバーサルドライバーはRS1で新ルールが適用

 RS1(Windows 10 Ver.1603)でドライバー開発にDCHU(DCHユニバーサル)ドライバーというルールが加わった(DCHU原則ともいい、これに従うドライバーをDCHUドライバーと呼ぶ。DCHについては後述する)。RS1からは、Windows 10ファミリーのカーネル部分はOne Coreと呼ばれ、すべて共通になった。これは、

Windows 10 Mobile
Windows 10 Desktop
Windows 10 IoT
Windows 10 SurfaceHub
Windows 10 Holographic
Windows 10S

などで共通のカーネルや関連モジュールを利用する。これはすべてのWindows 10でデバイスドライバーを共用するためだ。

 というのも、Windows 10 IoTには、ディスプレイを持たず、Windowsのデスクトップが存在しないバージョンもある。となると、エクスプローラーからインストーラーを起動するといった従来の方法でデバイスドライバーを組み込むわけにはいかなくなる。そこで必要なルールがDCHUなのである。

 また、Windows 10Sでは、UWPアプリケーションのみが実行可能で、Win32アプリ(デスクトップアプリ)は動作できない。このため、ドライバーに関連するGUIプログラム(これをHardware Support Application:HSAと呼ぶ)はすべてUWPとして開発しなければならなくなった。そのほかにも、DCHUではインストール方法やそのためのINFファイルなどにも細かい制限が課せられた。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン