セットアップ中にインストールする最適なデバイス ドライバを Windows が決定する方法

文書翻訳 文書翻訳
文書番号: 279112 - 対象製品
すべて展開する | すべて折りたたむ

概要

この資料では、セットアップ中、デバイスに最も適したデバイス ドライバを選択するために使用される方法について説明します。

Windows セットアップの実行時、特定のデバイスで機能するデバイス ドライバまたは .inf ファイルが複数存在する場合があります。セットアップおよびプラグ アンド プレイでは、インストール中のデバイスに最も適したデバイス ドライバを選択することにより、この競合を解決します。

: この資料では、セットアップのグラフィカル ユーザー インターフェイス (GUI) の段階で、またはセットアップの完了後に、インストール中のデバイスに対して使用される方法についてのみ説明します。セットアップのテキスト モードの段階での大容量記憶装置コントローラの検出とデバイス ドライバの選択処理は、別の方法で実行されます。

詳細

大容量記憶装置コントローラの検出処理の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
220845 Windows のセットアップ中にサードパーティ ドライバまたは更新したドライバを追加する

プラグ アンド プレイでは、ハードウェアのプラグ アンド プレイ ID (デバイスが列挙されたときにデバイスのファームウェアまたはシステム BIOS により返される ID) と、それに一致する .inf ファイル内のプラグ アンド プレイ ID とを比較することにより、互換性のあるデバイス ドライバを探します。

プラグ アンド プレイでは、すべての .inf ファイルから、特定のデバイスに最適なデバイス ドライバを選択します。プラグ アンド プレイでは、最初に一致するドライバを見つけた段階では検索を終了しません。プラグ アンド プレイの検索パスに登録されているすべての .inf ファイルを検索するまで検索を継続します。それらのファイルは、次のレジストリ エントリで定義されています。
HKEY-LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
DevicePath:Reg_Expand_SZ:%Systemroot%\Inf

: デフォルトでは、上記のレジストリの場所には、この単一のエントリのみが含まれていますが、無人応答ファイルで OemPnpDriversPath = パラメータを使用して、無人セットアップを実行すると、このエントリに付加的なパスを追加できます。

セットアップでは、対応する ID が記載されている .inf ファイルが存在する、互換性のあるデバイス ドライバの一覧を作成し、それぞれのデバイス ドライバに "ランク" を割り当てます。ランクは "0" から "0xFFFF" の範囲で、0 は最適と考えられる一致、0xFFFF は最も適さないと考えられる一致です。最も数値の小さいランクのデバイス ドライバが最適と判断され、そのデバイス ドライバがインストールされます。

デバイス ドライバのランクには以下の範囲があります。
  • 0x0 から 0xfff : デバイスのハードウェア ID と .inf ファイル内のハードウェア ID が一致する。
  • 0x1000 から 0x1fff : デバイスのハードウェア ID と .inf ファイル内の互換 ID の 1 つが一致する。
  • 0x2000 から 0x2fff : デバイスの互換 ID の 1 つと .inf ファイル内のハードウェア ID が一致する。
  • 0x3000 から 0x3fff : デバイスの互換 ID の 1 つと .inf ファイル内の互換 ID の 1 つが一致する。
  • 0xFFFF : ID がまったく一致しない。
Windows XP および Windows Server 2003 には、追加のデバイス ドライバのランク範囲が存在します。
  • 0x8000 から 0x8FFF : 信頼されていないハードウェア ID の一致
  • 0x9000 から 0x9FFF : 信頼されていない互換 ID の一致
.inf ファイルに信頼されていないランクが割り当てられるのは、デジタル署名されていない場合、またはモデル セクション名に Windows NT 固有のデコレーションが含まれていない (デバイスが Windows NT、Windows 95、または Windows 98 にインストール可能で、それらのオペレーティング システム用の特定のエントリが存在しない) 場合です。

信頼されていないデバイス ドライバと判断した場合、セットアップではデバイス ドライバのランクを前述の該当する範囲に変更することがあります。
0x0 から 0xfff の範囲のデバイス ドライバのランクは、デバイスのハードウェア ID と .inf ファイルのハードウェア ID が一致するため、"ハードウェア ID 一致" と呼ばれます。これらのランクは最適な一致と考えられ、他のすべてのランクはデバイス ドライバのランクの作成時に少なくとも 1 つの互換 ID が存在したため、"互換" とされます。クラス インストーラおよび共同インストーラが、デバイス ドライバの選択に影響を与えることもあります。これらのインストーラは、そのデバイス ドライバではデバイスをサポートできないと判断した場合、デバイス ドライバに "無効" のフラグを設定します。また、これらのインストーラが、デバイス ドライバのランクを変更することがあります。

ただし、ランクが同じでどちらも数値が最小のランクのデバイス ドライバが 2 つ存在する場合、セットアップでは日付が新しい方のデバイス ドライバを使用します。一方のデバイス ドライバが署名されていて、もう一方のデバイス ドライバが署名されていない場合、署名されていないデバイス ドライバの日付は値 0xFFFFFFFF に設定されるため、署名されているデバイス ドライバが選択され、インストールされます。

OEM からデバイス ドライバが提供されていることがありますが、そのデバイス ドライバが選択されず、使用されない場合があります。製造元から更新済みのデバイス ドライバが提供されていても、互換デバイス ドライバとして開発されているだけで、大きいランク番号が割り当てられ、他のデバイス ドライバよりも適合度の低い一致になる可能性があります。セットアップでは、一致するデバイス ドライバを選択する際に、OEM 提供のデバイス ドライバがデジタル署名されているかどうかを調べません。署名されていないデバイス ドライバが小さいランクで、コンピュータ上の他のデバイス ドライバより適合度が高い場合、そのデバイス ドライバが選択され、インストールされることがあります。

セットアップの実行中に、どの .inf ファイルでも対応するハードウェア ID が見つからない場合は、デバイスのインストールが延期され、デバイス マネージャではそのデバイスが不明なデバイスとして表示されることがあります。Windows のセットアップ中以外で、新しいデバイスを導入するときに、コンピュータ上のどの .inf ファイルでも対応するハードウェア ID が見つからない場合は、"新しいハードウェアが見つかりました" というメッセージが表示され、デバイス ドライバのインストールを求めるメッセージが表示されることがあります。

たとえば、Nv3_disp.inf と Nv4_disp.inf という 2 つの別々の .inf ファイル内にプラグ アンド プレイ ID がある PCI ビデオ アダプタが装着されたコンピュータがあるとします。それらのデバイス ドライバ ファイルはどちらもデジタル署名されておらず、両方のデバイス ドライバの日付に 0xFFFFFFFF という値が割り当てられます。この例では、それらのファイルは D:\Drivers\Video1 および D:\Drivers\Video2 フォルダにあります。

レジストリの現在の Devicepath= には、%Systemroot%\Inf;%Systemdrive%\Drivers\Video1;%Systemdrive%\Drivers\Video2 が設定されています。

: %Systemroot% は D:\Winnt であり、%Systemdrive% は D: です。

セットアップの場合も、プラグ アンド プレイの場合も、前述のパスにあるすべての .inf ファイルを検索し、検出したすべての一致を記録します。セットアップまたはプラグ アンド プレイが複数の一致を検出した場合、最も適した一致が使用されます。

Setupapi.log ファイルからの以下の抜粋では、前述の処理について詳細に説明されています。この例では、次の資料を使用してセットアップのログ モードが詳細モードに設定されています。
243996 2000 のGUI モードのセットアップで詳細ログを有効にする方法

セットアップが正常に実行された場合、Setupapi.log ファイルにこれほど多くの詳細ログは出力されません。

デバイスの照会に対して、ハードウェア ID および互換 ID の一覧が返されます。どのデバイスについても複数の ID が返されるわけではありませんが、ほとんどの場合、複数の ID が返されます。この例では、ビデオ カードについて、以下のように ID が返されます。
ハードウェア ID を検索しています:
Pci\Ven_10de&dev_0028&subsys_5a001092&rev_11,
Pci\Ven_10de&dev_0028&subsys_5a001092,
Pci\Ven_10de&dev_0028&cc_030000,
Pci\Ven_10de&dev_0028&cc_0300
互換性のある ID を検索しています:
Pci\Ven_10de&dev_0028&rev_11,
Pci\Ven_10de&dev_0028,
Pci\Ven_10de&cc_030000,
Pci\Ven_10de&cc_0300,
Pci\Ven_10de,pci\cc_030000,
Pci\Cc_0300
ファイル "D:\Winnt\Inf\*.inf" を列挙しています。

@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\1394.inf".
@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\accessor.inf".
@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\acpi.inf".
@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\adm_mult.inf".
@ 07:11:59.191 : Opened PNF of "D:\Winnt\Inf\adm_port.inf".
@ 07:11:59.207 : Opened PNF of "D:\Winnt\Inf\agtinst.inf".
.
.
.
ファイル "D:\Drivers\Video1\*.inf" を列挙しています。

@ 07:12:00.660 : Opened PNF of "D:\Drivers\Video1\NV4_DISP.inf".
@ 07:12:00.660 : The file (D:\Drivers\Video1\NV4_DISP.inf) はデジタル署名されていません。

 ドライバの日付を無視します。

@ 07:12:00.660 :Found Pci\VEN_10DE&DEV_0028 in 
D:\Drivers\Video1\NV4_DISP.inf; Device: NVIDIA RIVA TNT2; Driver: NVIDIA 
RIVA TNT2; Provider: NVIDIA; Mfg: NVIDIA; Section: nv4
@ 07:12:00.660 : デコレートされたセクション名: nv4
ファイル "D:\Drivers\Video2\*.inf" を列挙しています。

@ 07:12:00.660 : Opened PNF of "D:\Drivers\Video2\NV3_DISP.inf".
@ 07:12:00.675 : The file (D:\Drivers\Video2\NV3_DISP.inf) はデジタル署名されていません。

 ドライバの日付を無視します。

@ 07:12:00.675 : Found PCI\VEN_10DE&DEV_0028 in
 D:\Drivers\Video2\NV3_DISP.inf; Device: NVIDIA RIVA TNT2; Driver: NVIDIA
 RIVA TNT2; Provider: NVIDIA; Mfg: NVIDIA; Section: nv4
@ 07:12:000.675 : デコレートされたセクション名: nv4
@ 07:12:01.706 : デバイス インストール関数 : DIF_SELECTBESTCOMPATDRV
@ 07:12:01.706 : クラス インストーラを実行しています。

@ 07:12:01.894 : クラス インストーラを完了しました。

@ 07:12:01.894 : 既定のインストーラを実行しています。

@ 07:12:01.894 : 選択されたドライバは "D:\Drivers\Video1\Nv4_disp.inf" のセクション [nv4] からインストールされます。

@ 07:12:01.894 : デバイスのクラス GUID を {4D36E968-E325-11CE-BFC1-08002BE10318} に変更しました。

@ 07:12:01.894 : 選択したドライバの設定

@ 07:12:01.894 : 最も互換性のあるドライバ

@ 07:12:01.894 : 既定のインストーラを完了しました。

@ 07:12:06.565 : デバイス インストール関数 : DIF_ALLOW_INSTALL
@ 07:12:060.565 : クラス インストーラを実行しています。

@ 07:12:060.565 : クラス インストーラを完了しました。

@ 07:12:06.581 : デバイス インストール関数 : DIF_INSTALLDEVICEFILES
@ 07:12:060.581 : クラス インストーラを実行しています。

@ 07:12:060.581 : クラス インストーラを完了しました。

@ 07:12:060.581 : 既定のインストーラを実行しています。

				
この出力例では、セットアップが D:\Drivers\Video1\Nv4_disp.inf ファイルを使用してデバイス ドライバを選択し、インストールしています。これは、そのデバイス ドライバが最も適したものであるとセットアップが判断したためです。

インストールされたデバイスと、デバイスのインストールに使用された .inf ファイルを簡単に確認するには、%Systemroot%\Setupapi.log ファイルをメモ帳で開きます。プラグ アンド プレイによりインストールされたデバイスを確認するには、DIF_SelectBestCompatDrv を検索します。また、手動でインストールしたデバイスを確認するには、DIF_SelectDevice を検索します。

プロパティ

文書番号: 279112 - 最終更新日: 2007年12月3日 - リビジョン: 6.3
この資料は以下の製品について記述したものです。
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
キーワード:?
kbinfo kbenv kbsetup KB279112
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com