Windowsには、インボックス(inbox)ドライバーと呼ばれる標準的なドライバーが含まれており、多くの場合ではユーザーが別途用意することなく、デバイスのインストールが可能だ。今回は、このインボックスドライバーとドライバーインストールの仕組みについて解説する。

コントロールパネルからデバイスマネージャーを開き、デバイスのプロパティダイアログにある「詳細」タブで、ハードウェアIDを選択すると、該当のデバイスのハードウェアIDが表示できる。これを使ってINFファイルを検索することが可能だ
現状では、第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ファイルがあることがわかる。

ロジクールのウェブカメラ「C920」のハードウェアIDには「VID_046D&PID_082D」が含まれているので、これを使ってINFファイルを検索すると5つが見つかった。そのファイルからDriverVerを検索すると、バージョンと日付が表示できる。複数の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が使われている。

この連載の記事
-
第469回
PC
Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に -
第468回
PC
2025年のWindowsどうなる!? Windows Insider Programの状況をあらためて見る -
第467回
PC
Copilot+ PCのNPUでカメラを処理する「Windows Studio Effects」 その内容や効果は? -
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた - この連載の一覧へ