Windowsには、インボックス(inbox)ドライバーと呼ばれる標準的なドライバーが含まれており、多くの場合ではユーザーが別途用意することなく、デバイスのインストールが可能だ。今回は、このインボックスドライバーとドライバーインストールの仕組みについて解説する。
現状では、第12世代のCPUを搭載したマザーボードにWindows 10をインストールしようとすると、ドライバーをダウンロードしておく必要がある。しかし、Windows 11のインストーラーではこうした作業は不要だ。これは、インストーラーに含まれるインボックスドライバーが更新され、第12世代のマザーボードにある各種デバイス向けドライバーが含まれるようになったからだ。
そのほか、デバイスドライバーが必要になるのはWindows XP以前にリリースされたような古いUSBデバイスなどを接続する場合だ。デバイスは毎年のように増えているので、ある程度の線引きをして整理しないと、ドライバーがWindowsのインストール領域で大きくなりすぎてしまう。
基本はINFファイルだが、実際にはバイナリファイルで
デバイスの検索をしている
C:\Windows\INFには、拡張子がINFになった「セットアップ情報ファイル」がある。これがデバイスの登録方法を指示する。中身はテキストファイルで、必要なドライバーのファイル名や必要なレジストリ登録などが記述されている。ただし実際には、このファイルから作ったバイナリファイルPNFを使う。バイナリファイル化することでデバイスの検索を高速化する。基本的にINFファイルには同じファイル名を持つPNFファイルがある。
INFファイルでは、デバイスのハードウェアIDに対して、ドライバーファイルなどが指定してある。WindowsはハードウェアIDでデバイスを識別し、ドライバーを組み込む。ハードウェアIDは、デバイスごとに付けられており、バスドライバーのID(たとえばUSBデバイスはUSBバスが管理している)、ベンダーID(製造企業を示す)やデバイスの種類、バージョン、タイプなどを表す文字列と組み合わせて作られ、最大200文字以下とされている。
デバイスマネージャーで個々のデバイスのプロパティを開いたとき、「詳細」タブでドロップダウンリストから「ハードウェアID」を選べば、デバイスのハードウェアIDを見ることができる(記事冒頭画面)。
ただ、多くのデバイスでは、複数のハードウェアIDが表示される。これは、デバイスが複数の場所(BIOSやシステムバスなど)で扱われることや、内部が複数のデバイスで構成されている(コンポジットデバイス)などであるためだ。
INFのファイル名には、いくつかパターンがある。先頭が「mdm」で始まるのはモデム、「net」で始まるのはネットワークドライバー関連だ。
ファイル名が「oem+数字」なのは、Windowsのインストール後にインストールされたもの。ここでは仮にOEM INFファイルと呼ぶが、これらはサードパーティのデバイス用のINFファイルで、厳密にはインボックスドライバーではない。ただし、メーカー製のPCなどでは、プリインストールドライバーをWindowsのインストールイメージに入れておくことができる。
ハードウェアIDからINFファイルを探す
ハードウェアIDから対応するINFファイルを探すには、PowerShellのSelect-Stringコマンド(sls、前回の記事を参照)を使う。たとえば、筆者が利用しているマシンのディスプレイアダプター「Intel HD Graphics 4600」は、「PCI\VEN_8086&DEV_0412&……」というハードウェアIDを持つ。これを検索するなら、C:\Windows\INFで
sls -list 'VEN_8086&DEV_0412' *.inf
とする。すると、筆者の環境ではoem27.infが出てくる。これは、インテルCPUの内蔵GPU用のINFファイルだ。
もう1つ、ロジクールのウェブカメラでは、「USB\VID_046D&PID082D……」というハードウェアIDが見つかる。同様に検索してみると、複数のOEM INFファイルがあることがわかる。
INFファイル中にある「DriverVer」を見ると、ファイル名の数字が若いものほどバージョンを表す日付が古い。つまり、アップデートなどにより古いOEM INFファイルが残されたり、あるいは、インストール方法が違うなどで、異なるINFとみなされて登録されたOEM INFファイルなのであろう。このようにOEM INFファイルは、インストールが行われた順に番号がつけられて登録されていくので、同じハードウェアIDが見つかった場合、ファイルの番号が大きいほうが新しいOEM INFファイルとなる。
一般的なデバイスのハードウェアIDは、ベンダーIDと製品IDの組み合わせからなり、これにバージョンやモデル名などが続く。ベンダーIDには「VID_〈16進数〉」または「VEN_〈16進数〉」の2つのパターンがある。
また、ソフトウェアデバイスの場合、ハードウェアIDには特殊なパターンが使われる。たとえば、Hyper-V用の仮想イーサーネットアダプターには「vms_mp」というハードウェアIDが使われている。
この連載の記事
-
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる - この連載の一覧へ