ドライバーは、次に示すいずれかが発生した場合に更新されます。
ハードウェア更新ウィザードは、デバイス マネージャーから実行されます。
手記 Windows Vista 以降、このウィザードの名前は ドライバー ソフトウェアの更新ウィザードになりました。
Windows Update が実行されます。
デバイスのインストール ソフトウェアが実行されます。
Windows Vista 以降では、管理者特権のコマンド プロンプトから PnPUtil ツールを実行して、デバイスの ドライバー パッケージ をインストールまたは更新できます。
既存のドライバーを更新するインストール ソフトウェアと INF ファイルを記述する場合は、次のガイドラインに従います。
インストール ソフトウェアは 、UpdateDriverForPlugAndPlayDevices を呼び出し、INF ファイルとハードウェア ID を指定して、ハードウェア 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 ファイルのセクションとディレクティブの作成」を参照してください。