Condividi tramite


DIF_SELECTDEVICE

Una richiesta di DIF_SELECTDEVICE consente a un programma di installazione di partecipare alla selezione del driver per un dispositivo.

Data di invio

Quando si sceglie un driver per un dispositivo appena enumerato o un nuovo driver per un dispositivo esistente (modificare il driver). Ad esempio, quando un utente seleziona Add/Remove Hardware e seleziona la classe modem. In alternativa, un utente inserisce un dispositivo PnP e seleziona "Scegli un driver da un elenco" nella Creazione guidata nuovo hardware trovato.

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 per cui selezionare un driver. Esiste una classe di installazione del dispositivo associata a DeviceInfoSet.

DeviceInfoData
Facoltativamente, viene fornito un puntatore a una struttura SP_DEVINFO_DATA che identifica il dispositivo nel set di informazioni del dispositivo.

Se DeviceInfoData è NULL, questa richiesta consiste nel selezionare un driver per la classe di installazione del dispositivo associata a DeviceInfoSet.

Parametri di installazione del dispositivo
Se DeviceInfoData non è NULL, sono presenti parametri di installazione del dispositivo (SP_DEVINSTALL_PARAMS) associati a DeviceInfoData. Se DeviceInfoData è NULL, sono presenti parametri di installazione del dispositivo associati a DeviceInfoSet.

Di particolare interesse è DriverPath, che contiene la posizione di INF da usare durante la compilazione dell'elenco dei driver.

Parametri di installazione della classe
Una struttura SP_SELECTDEVICE_PARAMS è associata a DeviceInfoData se DeviceInfoData non è NULL. In caso contrario, i parametri di installazione della classe sono associati all'intero set di informazioni sul dispositivo.

Output del programma di installazione

Parametri di installazione del dispositivo
Un programma di installazione può modificare i parametri di installazione del dispositivo. Tuttavia, non deve modificare il campo DriverPath .

Parametri di installazione della classe
Un programma di installazione può modificare la SP_SELECTDEVICE_PARAMS. Ad esempio, un programma di installazione potrebbe specificare un titolo e/o istruzioni per Windows da usare nella finestra di dialogo che chiede all'utente di selezionare un driver.

Se un programma di installazione imposta nuovi parametri select-device, rispetto alla modifica dei parametri impostati da un programma di installazione precedente, il programma di installazione deve zero i campi non impostati.

Valore restituito dal programma di installazione

Se un co-installer non esegue alcuna operazione per questo codice DIF, restituisce NO_ERROR dal passaggio di pre-elaborazione. Se un co-installer gestisce questo codice DIF, deve farlo nel passaggio di pre-elaborazione e restituire NO_ERROR o un codice di errore Win32. Al momento in cui viene chiamato un co-installer per l'elaborazione post-elaborazione, il driver è già stato selezionato.

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.

Un programma di installazione della classe restituisce ERROR_DI_BAD_PATH se il membro DriverPath della struttura di SP_DEVINSTALL_PARAMS corrispondente non è uguale a NULL, ma non sono presenti driver validi nella posizione del percorso specificato. Ciò può verificarsi se non sono presenti driver nella posizione del percorso o se sono presenti driver, ma il membro Flag della struttura SP_DRVINSTALL_PARAMS di ogni driver è stato impostato con il flag di DN_BAD_DRIVER. In risposta a questo codice di errore, Windows visualizza un errore per l'utente.

Gestore di codice DIF predefinito

SetupDiSelectDevice

Operazione del programma di installazione

In risposta a una richiesta di DIF_SELECTDEVICE, un programma di installazione esegue qualsiasi operazione di selezione necessaria per il dispositivo o la classe di dispositivo, oltre a ciò che il gestore predefinito esegue. 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 questo codice DIF. Un programma di installazione della classe restituisce ERROR_DI_DO_DEFAULT e un co-installer restituisce NO_ERROR.

  • Specificare le stringhe selezionate visualizzate da Windows nell'interfaccia utente di selezione.

    Un programma di installazione può fornire stringhe selezionate nei parametri di installazione della classe (SP_SELECTDEVICE_PARAMS). Ad esempio, un programma di installazione può modificare le istruzioni o l'intestazione della finestra Titolo.

    Un programma di installazione della classe non deve fornire stringhe selezionate se un co-installer già fornito seleziona stringhe. Il co-installer probabilmente ha informazioni più rilevanti.

    Se un programma di installazione modifica il SP_SELECTDEVICE_PARAMS, il programma di installazione deve anche impostare il flag di DI_USECI_SELECTSTRINGS nel SP_DEVINSTALL_PARAMS.

    Se un programma di installazione fornisce correttamente stringhe selezionate, Windows deve comunque chiamare il gestore predefinito. Pertanto, in questo caso, un co-installer restituisce NO_ERROR e un programma di installazione della classe restituisce ERROR_DI_DO_DEFAULT.

  • Modificare i parametri di installazione del dispositivo.

    Un programma di installazione può modificare i parametri di installazione del dispositivo (SP_DEVINSTALL_PARAMS). Ad esempio, un programma di installazione potrebbe impostare il flag di DI_SHOWOEM in modo che Windows visualizzi il pulsante Have Disk .

    Se un programma di installazione della classe modifica correttamente i parametri di installazione del dispositivo, il programma di installazione della classe restituisce ERROR_DI_DO_DEFAULT.

  • Modificare l'elenco dei driver da cui è possibile selezionare l'utente.

    Questa azione è meno comune, ma possibile. Un programma di installazione che modifica l'elenco dei driver potrebbe, o meno, fornire anche stringhe selezionate.

    Programma di installazione che modifica l'elenco dei driver contrassegna in genere i driver inappropriati per il dispositivo. Un programma di installazione contrassegna tali driver con il flag DNF_BAD_DRIVER. Windows omette questi driver dall'elenco visualizzato all'utente.

    Un programma di installazione contrassegna i driver non corretti seguendo questa procedura:

    1. Compilare l'elenco dei driver chiamando SetupDiBuildDriverInfoList con un driverType di SPDIT_CLASSDRIVER.
    2. Ottenere le informazioni sul primo driver nell'elenco chiamando SetupDiEnumDriverInfo e SetupDiGetDriverInstallParams. Se il driver non è appropriato per il dispositivo, impostare il flag di DNF_BAD_DRIVER nel campo Flags dei parametri. Applicare la modifica ai parametri chiamando SetupDiSetDriverInstallParams.
    3. 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.

    Un programma di installazione potrebbe impostare il flag di DNF_BAD_DRIVER per uno o più driver nell'elenco dei driver, ma un programma di installazione non deve cancellare tale flag.

    Se uno o più programmi di installazione modificano correttamente l'elenco dei driver, Windows deve comunque chiamare il gestore predefinito. Pertanto, in questo caso, un co-installer restituisce NO_ERROR e un programma di installazione della classe restituisce ERROR_DI_DO_DEFAULT.

  • Visualizzare la propria interfaccia utente di selezione driver e impostare il driver selezionato.

    Solo un programma di installazione della classe può visualizzare la propria interfaccia utente di selezione driver; I co-installer non devono. Ad esempio, un programma di installazione della classe potrebbe visualizzare immagini anziché elenchi testuali.

    Se il programma di installazione della classe imposta correttamente il driver selezionato, il programma di installazione della classe restituisce NO_ERROR e Windows non chiama il gestore predefinito e quindi non visualizza l'interfaccia di selezione predefinita.

Se il flag di DI_ENUMSINGLEINF è impostato nei parametri di installazione del dispositivo, DriverPath è un percorso di un singolo file INF anziché un percorso di una directory. Un programma di installazione deve usare solo tale inF per compilare l'elenco dei driver.

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

DIF_NEWDEVICEWIZARD_SELECT

SetupDiSelectDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS

SP_SELECTDEVICE_PARAMS