ドライバー ファイルの更新
ドライバーは、次のいずれかが発生するたびに更新されます。
ハードウェア更新ウィザードは、デバイス マネージャーから実行されます。
注: Windows Vista 以降では、このウィザードの名前が、ソフトウェアの更新ウィザードになりました。
Windows Update が実行。
デバイスのインストールソフトウェアが実行。
Windows Vista 以降では、管理者特権のコマンド プロンプトから PnPUtil ツールを実行して、デバイスのドライバー パッケージをインストールまたは更新できます。
既存のドライバーを更新するインストール ソフトウェアと INF ファイルを作成する場合は、次のガイドラインを使用してください。。
インストール ソフトウェアは、INFファイルとハードウェアIDを指定して UpdateDriverForPlugAndPlayDevices を呼び出し、ハードウェアIDと一致するデバイスのドライバーを更新できます。
Windows Vista 以降では、インストール ソフトウェアは次のいずれかを呼び出してドライバーを更新することもできます。
- DiInstallDriver は、ドライバー ストアにドライバーをプレインストールし、ドライバーがサポートするシステムに存在するデバイスにドライバーをインストールします。
- DiInstallDeviceは、システムに存在する指定されたデバイスにドライバー ストアから指定されたドライバーをインストールします。
詳細については、「デバイス インストール アプリケーションの作成」を参照してください。
ドライバーをアップグレードする場合、クラス インストーラーと共同インストーラーは、絶対に必要でない限り、DIF_NEWDEVICEWIZARD_FINISHINSTALL に応答して完了インストール ページを提供しないでください。 可能であれば、前のインストールの設定からインストールの完了情報を取得します。
可能な限り、クラス インストーラーと共同インストーラーは、初期インストールを提供しているか、既にインストールされているデバイスのドライバーを更新しているかに基づく動作を避ける必要があります。
Windows XP 以降、レジストリ値 CoInstallers32 と EnumPropPages32 は、DIF_REGISTER_COINSTALLERS の配信前に削除されます。 以前のバージョンのオペレーティング システム用の INF ファイルは、これらの値を明示的に削除するか、追加なしのの変更操作を実行する必要があります。
Windows XP 以降では、DIF_INSTALLDEVICE を配信する前に、レジストリ値 UpperFilters と LowerFilters が削除されます。 以前のバージョンのオペレーティング システム用の INF ファイルは、これらの値を明示的に削除するか、追加なしのの変更操作を実行する必要があります。
ドライバーを更新するときは、INF DelFiles ディレクティブまたは INF RenFiles ディレクティブを使用しないでください。 Windows では、特定のファイルが別のデバイスで使用されていないことを保証できません。 (もし、クラス インストーラーと共同インストーラーは、ファイルを使用しているデバイスがないことを確実に判断できる場合は、ファイルを削除または名前変更できます)。
エントリが 不要になった場合は、INF DelReg ディレクティブを使用して、デバイスの以前のインストールから古いデバイス固有のレジストリ エントリを削除します。 (グローバル レジストリ エントリは削除しないでください)。
INF DDInstall.Services セクションで INF DelService ディレクティブを使用して、以前にインストールしたデバイス/ドライバー サービスをターゲット コンピューターから削除しないでください。 Windows では、特定のサービスが別のデバイスで使用されていないことを保証できません。 (もし、クラス インストーラーと共同インストーラーは、サービスを使用しているデバイスがないことを確実に判断できる場合は、サービスを削除または名前変更できます)。
クラス インストーラー、クラス共同インストーラー、またはサービス DLL を更新する場合は、新しいバージョンに新しいファイル名を付ける必要があります。
INF ファイルの詳細については、「INF ファイルの作成」および「INFファイルのセクションとディレクティブ」を参照してください。