Windows ドライバー開発環境
どの様な開発環境で、どのOS用のWindows デバイスドライバーを開発するか?という話である。非常に簡単なことだが、世の中にはそのための作業をしようとしているのにも関わらず、また目立つ然るべきところにちゃんと書いてあるにも関わらず、それを知らない人が多い様子なので改めて書いてみる。
答えを先に書くと、今も、そしてこれから先も当分の間は、Visual Studio 2019 と Windows 11 WDK だけを使うことで、あらゆる種類のドライバーが開発できる。またそれ以外は使うべきでは無い。
例えば先日あった次の間違いがある。teratail の次の質問だ。
Microsoft Visual Studio Community 2022 (64-bit) Version 17.0.5でDBKKernelをビルドしたところ、以下のエラーが発生してしまいます。
Visual Studio 2022 はWindowsドライバー開発には使えない
これは最新の開発をするのだから、あるいはWindows 11用の開発をするのだから、最新の Visual Stuido 2022 を使うはずという誤解だ。このケースは、ドライバー開発には必須のWDKを実際にインストールしたのかどうかはわからない。しかしこれは、Visual Stuido 2022 の 64bit化対応により、WDK非対応になったという落とし穴である。
ドライバー開発環境は 各OS別に用意されているという 誤解
別のお客様は、Windows 10用のドライバー開発をするために、Windows 11 WDK をインストールすることの妥当性を盛んに問い合わせして来た。
Windows ドライバー開発は常に適合する、最新の環境だけを使うべきという、MS-DOSやWindows 3.1の頃から変わらない普遍的な約束があるのだが、知られていない。
古い環境用のドライバーは古い環境で作るという 誤解
少し前のお客様は、Windows 7用ドライバー開発をするためには、Windows 7 WDK を使うべきだと信じて実践していた。
日本の製造会社的な発想で良くある、再現性にこだわった間違い。似た話でさらに以前、先輩が残した手順書通りに開発環境をインストールしようとしたがファイルがインストール中にオンラインでアップデートされ、動作しなくなっていたという件と通じる。
ドライバー開発はクロス開発である(と知らない)
アプリケーション開発者に多い間違いである。今でこそ Windowsも OSバージョン間での差異がなくなり、ほとんどが Windows 10 x64だけであると決めてかかっても問題無い時代になったが、開発ホストと実行ターゲットの区別がつかない?または付けようしない考え方がある。おそらく今後2~3年のうちには、主要開発ターゲット環境として、あるいは開発ホストとして arm64 が入る訳だが、そこでもひと悶着ありそうだ。
いずれも各個人の過去の知識、先入観や名前、見た目等にとらわれての誤認識である。この様な人達には「ツール、手法、常識」は常に変化するものだという事を理解して貰わなければならないのだが、はたしてそれが出来るだろうかと考えてしまう。
一応会社のページも、以前書いた Windows 10用の記事 も更新しておいた。何かの役に立つことが出来ればと思う。
- Atomu Hidakaさんのブログ
- ログインしてコメントを投稿
メモ:Microsoftコミュニティのデバイスマネージャー記事
ドライバーのインストールとは?
ドライバー インストール方法
ドライバー更新と削除
デバイスマネージャーと他のツール(上級編)
ドライバーパッケージを探すには
https://answers.microsoft.com/ja-jp/windows/forum/all/%E3%83%87%E3%83%90...