このページの本文へ

前へ 1 2 次へ

Windows Info 第343回

Windowsに標準で含まれているインボックスドライバーの仕組み

2022年09月04日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 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が使われている。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン