Skip navigation.
ホーム
BLOG-ROMMER 日高のブログ

Windows 10 ユニバーサルドライバー開発

まとまった文献が少ないので、Windows 10 ユニバーサルドライバー開発について、現在分かっているところを書き止める。

ユニバーサルドライバー

ユニバーサルドライバーとはWindows 10の導入に伴って、これまでカーネル部がほぼ同じにも関わらずバラバラだったデバイスドライバー(以降ドライバー)の開発環境、ツールとソースコード、バイナリーオブジェクトを全て一つに統一したものの名称である。

現在のところ、従来のWindows Phoneに相当する Windows 10 Mobile, タブレット用のWindows 10 Mobile Enterprise と Windows 10で新開発の Windows 10 IoT Core が新たに追加される対象ターゲットだが、近い将来はXboxやHoloLensなどもサポート対象に含まれる。現在決まっているWindows 10のエディションについては、ITmediaの記事がわかり易くまとまっている。参考までに掲載する。
http://www.itmedia.co.jp/pcuser/articles/1505/14/news067.html

「ユニバーサル」というとApple Macintoshが「Universal Binary」の名称で採用している、互換性がない複数のCPUアーキテクチャ用のバイナリコードを併せ持つファットバイナリ構造を連想するかもしれない。そのようなことはなく、Windows 10のユニバーサルドライバーはCPUアーキテクチャ毎に開発、管理する必要がある。特にWindows 10ユニバーサルドライバーでは従来のx86, x64, ARMに加えてARM64が追加されているのでCPUアーキテクチャ別に最大4種類のバイナリーを管理する必要がある。

開発環境

PC用Windowsのドライバー開発はWindows 10/WDK 10でどうなるかというと、実はほとんど変わらない。WDK 8.1との違いは別の機会に取り上げる。

WDK 10では、一つの環境でWindows 7, Windows 8.1, Windows 10の従来スタイルのPC用ドライバーと、前述のユニバーサルドライバーが開発できる。ドライバー開発はWindows 7以降のPC上に、次のものをインストールすることで可能だ。

  • Visual Studio 2015 (無償のCommunity Edition, Expressも可)
  • Windows SDK for Windows 10
  • Windows Driver Kit (WDK) 10
  • Windows ADK for Windows 10 (オプション)
  • Windows HLK (オプション)

インストール

Visual Studioを使用してこれらのドライバーを開発し、なおかつWindows 10 IoT でも動作するWindowsユニバーサル・アプリケーション、AndroidやiPhoneで動作するアプリケーション開発もサポートするからかも知れないが、インストールや削除に時間がかかることも含めて、RC版を使用した現時点でわかっている範囲では、開発環境の構築はなかなか厄介だ。

ユニバーサルドライバーだけではなく、前述の何でもできる環境を作るためのVisual Studio 2015 RC (Release Candidate) 版までのおおよそのインストール・シナリオは次の通りである。

  • Visual Studioをカスタム・インストールして、オプション項目のクロス開発ツールやSDKを選択しておく。現在Visual Studio 2015のリリース版ではこれらのオプション項目が無い。RC版までは存在していた。後で追加版キットが出ると思われる。
  • 最新かつ、後述のWDK10と動作確認が取れているバージョンのWindows SDKを入手してインストールする。
  • Mobile(従来のWindows Phone)の開発を行うのであれば、Emulator等の追加ソフトウエアをインストールする。
  • WDK10をインストールする。サブバージョンがいくつかあるので、必ず前述のWindows SDKと動作確認がとれているバージョンを入手してインストールする必定がある。
  • ここまでのインストールで問題なくWindowsドライバーのビルドが出来れば、先に進むことができる。

  • 必要であれば、Windows ADK for Windows 10をインストール
  • 必要であれば、Windows HLKをインストール
  • 必要であれば、Windows IoT Core Packagesをインストール
  • もし問題があれば、インストールしたのと逆の手順でアンインストールをして行く。RC版の時は、途中までのアンインストールとリカバリの再インストールでは動作が怪しかったので、一気にVisual Studioのアンインストールまで順番に行って、Visual Studio関連のディレクトリ削除まで行った方が良い。時間がかかるが確実である。

現在の状況

詳しいことはわからないが、前述の通り現在公開されているVisual Studio 2015リリース版にはSDKが含まれてなく、最新版のSDKも公開されていない様子だ。従来のSDKとWDKをVisual Studio 2015リリース版にインストールして試したが、正常に動作していないため今後の情報やリリースを待つしか無い。

そういえばVisual Studio 2015のリリースプレビュー版やSDK, WDKもBuild 2015のイベントが開催されたゴールデンウイークあたりから、急に品質が良くなっていったのを思い出した。現在入念な準備をしているのであろう。安定板のリリースに期待している。

詳細情報は以下のWindows Hardware デベロッパーセンサーで公開されるはずだ。
https://msdn.microsoft.com/ja-jp/windows/hardware/

1511の件

2015年11月末に、Windows 10 1511版(TH2, 10.0.10586)とVisual Studio 2015 Update1, WDK 10 1511版がリリースされた。これらは皆追加インストール可能だが過去にここで紹介している通り、同時に合わせて導入する必要がある。IoT Coreを使うなら、1511版が必要だ。そうすれば重要な機能を除いて、基本的には今まで通り使える。

使えなくなっている重要な機能とは、Visual StudioとWinDBGの統合やProvisioning関連機能である。症状は異なるが、日本語版でも英語版でもエラーが起きてProvisioningやWinDBG統合は現在使えない。つい最近になって(1月12日)これらの機能が使えないのはバグであり、現在対応中と発表された。

https://connect.microsoft.com/VisualStudio/feedback/details/2080376/fail...

ご推察の通り、WinDBGのVS統合やProvisioning機能を使ってリモートデバッグをするのであれば、少なくとも現在のところはVisual Studio 2015 Update1/WDK 10 1511版のセットをインストールしてはならない。

それでだ、運悪く私は、インターフェース紙のWindowsドライバ開発の記事を書いている時期にこの問題に遭遇してしまい、どれだけ苦労したことだろうか。突然この問題が何事も無かったかのように治る可能性があったので、一応記事は無難にまとめたが、それも含めて大変な目にあった。

http://www.kumikomi.net/interface/contents/201603.php

この辺の詳細説明とフォローは2月26日のInterface3月号オフ会「ARM×Windows 10 画像電子工作」で行う。

http://www.kumikomi.net/interface/contents/201603_off.php

補足すると、「無難にまとめた」とは、正常動作する様になった後で記事を読んでも違和感がない様に、一切これらに関しては触れないという事である。

新版IoT Coreがリリースされたが...

新版IoT Coreがリリースされた。RTMかどうかは不明。
http://ms-iot.github.io/content/en-US/Downloads.htm

このページには、Windows Driver Kit 2015の古いページへのリンクがある。

おそらくこれは、まだちゃんと動作するSDKが出来てないから、暫くはVsial Studio 2015 RC(+SDK10069)+SDK10075+WDK10075を組み合わせて使ってくれというメッセージと推測する。だったら私、以前に書いているのだが。

•Windows 10 IoT と WDK 10
http://www.devdrv.co.jp/hidaka/node/49