共用方式為


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 程式碼處理常式

SetupDiSelectBestCompatDrv

安裝程式作業

安裝程式會處理此 DIF 要求,以參與選取 PnP 裝置的驅動程式。 安裝程式通常會以下列其中一種方式回應此 DIF 要求:

  • 不執行任何動作。

    如果安裝程式沒有特殊的選取需求,它不會回應此 DIF 要求。 類別安裝程式會傳回ERROR_DI_DO_DEFAULT,而共同安裝程式會傳回NO_ERROR。

  • 修改驅動程式清單中的一或多個驅動程式參數。

    例如,安裝程式可能會藉由將驅動程式標示為DNF_BAD_DRIVER來移除裝置的考慮。 安裝程式會遵循下列步驟來修改驅動程式參數:

    1. 呼叫 SetupDiEnumDriverInfoSetupDiGetDriverInstallParams,以取得清單中第一個驅動程式的相關資訊。 如果適當,請修改驅動程式參數,並藉由呼叫 SetupDiSetDriverInstallParams來套用變更。

      如果驅動程式是最差的選擇,請將驅動程式的排名設定為驅動程式安裝參數中的0xFFFF或更高版本。 如需詳細資訊 ,請參閱 Windows 如何選取驅動程式

    2. 重複上一個步驟,直到您已處理清單中的所有驅動程式為止。 請確定您將 MemberIndex 參數遞增至 SetupDiEnumDriverInfo ,如該函式的參考頁面所述。

    類別安裝程式修改驅動程式清單之後,它會傳回ERROR_DI_DO_DEFAULT。 如果共同安裝程式修改驅動程式清單,則應該在前置處理中執行此動作,並傳回NO_ERROR。

  • 選取裝置的最佳驅動程式。

    此動作較不常見,但安裝程式可能會選擇最適合裝置的驅動程式。 這類安裝程式會檢查每個驅動程式的資料、選擇驅動程式,以及呼叫 SetupDiSetSelectedDriver 來設定驅動程式。 安裝程式設定選取的驅動程式之後,它會傳回NO_ERROR。

    如果共同安裝程式選取驅動程式,則應在後置處理中執行此動作。

如需 DIF 程式碼的詳細資訊,請參閱 處理 DIF 程式碼

規格需求

版本

Microsoft Windows 2000 和更新版本的 Windows 支援。

標頭

Setupapi.h (包括 Setupapi.h)

另請參閱

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS