Condividi tramite


DIF_SELECTBESTCOMPATDRV

Nota

Questa richiesta è stata deprecata in Windows 10 versione 1703 (Redstone 2). Nelle versioni più recenti di Windows questo callback non viene più richiamato.

Una richiesta di DIF_SELECTBESTCOMPATDRV consente a un programma di installazione di selezionare il driver migliore dall'elenco dei driver compatibili con le informazioni del dispositivo.

Data di invio

Quando il sistema operativo si prepara a installare un nuovo dispositivo PnP o esegue un'operazione change-driver in un dispositivo PnP.

Questa richiesta DIF viene in genere usata durante una configurazione PnP. Se un dispositivo viene installato manualmente, Windows invia una richiesta di DIF_SELECTDEVICE .

Chi gestisce

Co-installer di classe

Può gestire

Programma di installazione condivisa del dispositivo

Non gestisce

Programma di installazione classi

Può gestire

Input del programma di installazione

DeviceInfoSet
Fornisce un handle al set di informazioni del dispositivo che contiene il dispositivo.

DeviceInfoData
Fornisce un puntatore a una struttura SP_DEVINFO_DATA che identifica il dispositivo nel set di informazioni sul dispositivo.

Parametri di installazione del dispositivo
Sono disponibili parametri di installazione del dispositivo (SP_DEVINSTALL_PARAMS) associati a DeviceInfoData.

Parametri di installazione della classe
Nessuno

Output del programma di installazione

Parametri di installazione del dispositivo
Un programma di installazione può modificare i parametri di installazione del dispositivo. Tuttavia, in genere non gestiscono questa richiesta DIF.

DeviceInfoData
Come effetto collaterale, un programma di installazione può modificare l'elenco di driver associato a DeviceInfoData, in particolare, il SP_DRVINSTALL_PARAMS.

Valore restituito dal programma di installazione

Un co-installer può restituire NO_ERROR, ERROR_DI_POSTPROCESSING_REQUIRED o un codice di errore Win32.

Se un programma di installazione della classe gestisce correttamente questa richiesta e SetupDiCallClassInstaller deve successivamente chiamare il gestore predefinito, il programma di installazione della classe restituisce ERROR_DI_DO_DEFAULT.

Se il programma di installazione della classe gestisce correttamente questa richiesta, inclusa la chiamata diretta al gestore predefinito, il programma di installazione della classe deve restituire NO_ERROR e SetupDiCallClassInstaller non chiamerà di nuovo il gestore predefinito.

Nota Il programma di installazione della classe può chiamare direttamente il gestore predefinito, ma il programma di installazione della classe non deve mai tentare di sostituire le operazioni del gestore predefinito.

Per altre informazioni sulla chiamata al gestore predefinito, vedere Chiamata di gestori di codice DIF predefiniti.

Se il programma di installazione della classe riscontra un errore, il programma di installazione deve restituire un codice di errore Win32 appropriato e SetupDiCallClassInstaller non chiamerà successivamente il gestore predefinito.

Gestore di codice DIF predefinito

SetupDiSelectBestCompatDrv

Operazione del programma di installazione

Un programma di installazione gestisce questa richiesta DIF per partecipare alla selezione di un driver per un dispositivo PnP. Un programma di installazione risponde in genere a questa richiesta DIF in uno dei modi seguenti:

  • Non eseguire alcuna operazione.

    Se un programma di installazione non ha requisiti di selezione speciali, non risponde a questa richiesta DIF. Un programma di installazione della classe restituisce ERROR_DI_DO_DEFAULT e un co-installer restituisce NO_ERROR.

  • Modificare i parametri di uno o più driver nell'elenco dei driver.

    Ad esempio, un programma di installazione potrebbe rimuovere un driver dalla considerazione per il dispositivo contrassegnandolo DNF_BAD_DRIVER. Un programma di installazione modifica i parametri del driver seguendo questa procedura:

    1. Ottenere le informazioni sul primo driver nell'elenco chiamando SetupDiEnumDriverInfo e SetupDiGetDriverInstallParams. Se appropriato, modificare i parametri del driver e applicare la modifica chiamando SetupDiSetDriverInstallParams.

      Se un driver è una scelta peggiore, impostare la classificazione del driver su 0xFFFF o superiore nei parametri di installazione del driver. Per altre informazioni, vedere How Windows Selects Drivers (How Windows Selects Drivers for more information).

    2. Ripetere il passaggio precedente fino a quando non sono stati elaborati tutti i driver nell'elenco. Assicurarsi di incrementare il parametro MemberIndex in SetupDiEnumDriverInfo , come descritto nella pagina di riferimento per tale funzione.

    Dopo che un programma di installazione della classe modifica l'elenco dei driver, restituisce ERROR_DI_DO_DEFAULT. Se un co-installer modifica l'elenco dei driver, deve farlo in pre-elaborazione e restituire NO_ERROR.

  • Selezionare il driver migliore per il dispositivo.

    Questa azione è meno comune, ma un programma di installazione potrebbe scegliere il driver migliore per il dispositivo. Tale programma di installazione esamina i dati per ogni driver, sceglie un driver e chiama SetupDiSetSelectedDriver per impostare il driver. Dopo che un programma di installazione imposta il driver selezionato, restituisce NO_ERROR.

    Se un co-programma di installazione seleziona un driver, deve farlo in post-elaborazione.

Per altre informazioni sui codici DIF, vedere Gestione dei codici DIF.

Requisiti

Versione

Supportato in Microsoft Windows 2000 e versioni successive di Windows.

Intestazione

Setupapi.h (include Setupapi.h)

Vedi anche

SetupDiSelectBestCompatDrv

SetupDiSetSelectedDriver

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS