今回はWindows 10 October 2018 Update(開発コード名は「Redstone 5」、以下RS5)の内部的な改良点と入力関連の変更点を見ていく。
内部的な改良点としては、主に以下のようなものがある。
- NetAdapter Class Extension
- 時計精度とトレーサビリティの向上
- ワイヤレスプロジェクションの改良
- フォントインストール関連
これらのうち、最も大きな変更はNetAdapter Class Extension(NetAdapterCx)だろう。
ネットワークアダプターのドライバー開発が変わる
NetAdapterCxはネットワークアダプターのドライバーを開発しやすくするために用意された機構である。
現在、Windowsで使われるデバイスドライバーは「WDF(Windows Driver Frameworks)」と呼ぶ仕様に基づいた開発が主流だが、ネットワークアダプターのドライバーに関しては「NDIS(Network Driver Interface Specification)」という仕様にのっとっていた。NDISはMS-DOS以来使われてきたネットワークアダプター向けの仕様だ。
NDISが長く使われ続けてきた理由は、TCP/IPなどのプロトコルスタックがこの仕様で作られており、簡単に修正できなかったからだ。
ネットワークプロトコルを処理するソフトウエアは、基本的には標準仕様に従うとはいえ、仕様で未定義の部分をはじめ、解釈の違いが原因で実装が異なることが多い。最終的には「現物合わせ」のような面があり、普及製品の仕様を優先せざるを得ない事情もある。
同一のソフトウエアを長期にわたって使い続ければ動作効率などに関する知見を得られ、改良が進む。組み込みソフトウエアなどでLinuxが採用されるのは、実績のあるネットワークスタックを持っているからだ。ゼロから作るのは非常にコストが高く、同じ品質を実現するまで長期間の開発が必要になる。
NDIS上のネットワークスタックも同じ理由から「ご破算」できない状態だった。仮に作り直しとなると、長年の蓄積をリセットし、ゼロからのスタートを切らねばならない。このため、ネットワークアダプターのデバイスドライバーはNDIS形式がずっと使われてきたのである。
だが、次第にNDISの課題が顕在化してきた。WDFはあらかじめ定義されたクラスドライバーとの差分のみを記述する仕組みであるのに対し、NDISにはクラスドライバーの概念がなく、ドライバーのコード量がかなり多くなる。
NDIS形式のドライバーは電力制御やプラグ&プレーへの対応なども不十分で、いまだに設定変更でWindowsの再起動が必要な場合があるなど旧式な部分が残っている。
そこで、WDF形式のドライバーでありながら、NDIS上のプロトコルスタックと接続できる「NetAdapter Class」を用意した。NetAdapter ClassがNDISのプロトコルスタックと接続するための機構がNetAdapterCxというわけだ。
WDF形式のドライバーを開発するためのWDK(Windows Driver Kit)は、RS2(Creators Update、Windows 10 1703)でNetAdapterCxに対応済み。RS4ではNetAdapterCxに対応したドライバーを評価できるようになったが、Windows側の機構としてはプレビュー段階だった。RS5でようやくNetAdapterCxが正式版となり、一般に使用可能となった。
NetAdapterCx対応で最も恩恵を受けるのは、厳密な電力制御が求められる「Connected Modern Standby」のPCだ。Connected Modern Standbyでは、スリープ状態でもPCの電源を完全に切らず、最低限の部分のみを動作させる。このため、すべてのハードウエアの電力制御をWindowsが管理する必要がある。NDIS形式のドライバーはWDF外にあったため、電力制御が不十分な場合があった。
このため、多くのPCメーカーはModern Standbyの採用を避けてきた。唯一、使われてきたのは、Atomプロセッサを搭載したPCだけだった。AtomではCPUがSoC(System on Chip)として提供され、デバイスドライバーもセットとなっているため、ドライバーの品質を一定以上に保てたからだ。