DIF_SELECTBESTCOMPATDRV
注:
この要求は、Windows 10 バージョン 1703 (Redstone 2) で非推奨となりました。 より新しいバージョンの Windows では、このコールバックは呼び出されなくなりました。
DIF_SELECTBESTCOMPATDRV 要求を使用すると、インストーラーは、デバイス情報要素の互換性のあるドライバーの一覧から最適なドライバーを選択できます。
送信時
オペレーティング システムが新しい PnP デバイスをインストールする準備をしている場合、または PnP デバイスでドライバーの変更操作を実行している場合。
この DIF 要求は通常、PnP 構成中に使用されます。 デバイスが手動でインストールされている場合、Windows は DIF_SELECTDEVICE要求を送信します。
処理するユーザー
クラス共同インストーラー |
処理できる |
デバイス共同インストーラー |
取り扱いなし |
クラスインストーラー |
処理できる |
インストーラーによる入力
DeviceInfoSet
デバイスを格納している デバイス情報セット へのハンドルが提供されます。
DeviceInfoData
デバイス情報セット内のデバイスを識別する SP_DEVINFO_DATA 構造体へのポインターが提供されます。
デバイスインストールパラメーター
DeviceInfoData に関連付けられているデバイス インストール パラメーター (SP_DEVINSTALL_PARAMS) があります。
インストーラーによる出力
デバイスインストールパラメーター
インストーラーによってデバイス インストール パラメーターが変更される場合があります。 ただし、通常、この DIF 要求を処理する場合は行われません。
DeviceInfoData
副次的効果として、インストーラーは DeviceInfoData に関連付けられているドライバーの一覧、特に、SP_DRVINSTALL_PARAMS を変更できます。
インストーラーの戻り値
共同インストーラーは、NO_ERROR、ERROR_DI_POSTPROCESSING_REQUIRED、または Win32 エラー コードを返すことができます。
クラス インストーラーがこの要求を正常に処理し、その後 SetupDiCallClassInstaller が既定のハンドラーを呼び出す必要がある場合、クラス インストーラーは ERROR_DI_DO_DEFAULT を返します。
既定のハンドラーの直接呼び出しを含め、クラス インストーラーがこの要求を正常に処理した場合、クラス インストーラーは NO_ERROR を返す必要があり、その後 SetupDiCallClassInstaller は既定のハンドラーをもう一度呼び出しません。
注: クラス インストーラーは既定のハンドラーを直接呼び出すことができますが、クラス インストーラーは既定のハンドラーの操作を置き換えようとしないでください。
既定のハンドラーの呼び出しの詳細については、「既定の DIF コード ハンドラーの呼び出し」を参照してください。
クラス インストーラーでエラーが見つかった場合、インストーラーは適切な Win32 エラー コードを返す必要があり、SetupDiCallClassInstaller は既定のハンドラーを呼び出しません。
既定の DIF コードハンドラー
インストーラー操作
インストーラーは、PnP デバイスのドライバーの選択に参加するために、この DIF 要求を処理します。 インストーラーは通常、次のいずれかの方法でこの DIF 要求に応答します。
何もしない。
インストーラーに特別な選択要件がない場合、この DIF 要求に応答しても何も行われません。 クラス インストーラーは ERROR_DI_DO_DEFAULT を返し、共同インストーラーは NO_ERROR を返します。
ドライバーの一覧で 1 つ以上のドライバーのパラメーターを変更します。
たとえば、インストーラーは、DNF_BAD_DRIVER をマークすることで、デバイスの考慮事項からドライバーを削除する場合があります。 インストーラーは、次の手順に従ってドライバー パラメーターを変更します。
SetupDiEnumDriverInfo と SetupDiGetDriverInstallParams を呼び出すことで、一覧の最初のドライバーに関する情報を取得します。 必要に応じて、ドライバーパラメーターを変更し、SetupDiSetDriverInstallParams を呼び出して変更を適用します。
ドライバーが最悪の場合は、ドライバー インストール パラメーターでドライバーのランクを 0xFFFF 以上に設定します。 詳細については、「Windows がドライバーを選ぶ方法」を参照してください。
リスト内のすべてのドライバーを処理するまで、前の手順を繰り返します。 その関数の参照ページで 説明されているように、MemberIndex パラメーターを SetupDiEnumDriverInfo にインクリメントしてください。
クラス インストーラーは、ドライバーの一覧を変更した後、ERROR_DI_DO_DEFAULT を返します。 共同インストーラーがドライバーの一覧を変更する場合は、事前処理で行い、NO_ERROR を返す必要があります。
デバイスに最適なドライバーを選びます。
このアクションはあまり一般的ではありませんが、インストーラーがデバイスに最適なドライバーを選ぶ場合があります。 このようなインストーラーは、各ドライバーのデータを調べ、ドライバーを選び、SetupDiSetSelectedDriver を呼び出してドライバーを設定します。 インストーラーは、選んだドライバーを設定した後、NO_ERROR を返します。
共同インストーラーがドライバーを選んだ場合は、後処理で選ぶ必要があります。
DIF コードの詳細については、「DIF コードの処理」を参照してください。
要件
バージョン |
Microsoft Windows 2000 以降のバージョンの Windows でサポートされています。 |
ヘッダー |
Setupapi.h (Setupapi.h を含む) |