Condividi tramite


DIF_INSTALLDEVICE

Una richiesta di DIF_INSTALLDEVICE consente a un programma di installazione di eseguire attività prima e/o dopo l'installazione del dispositivo.

Data di invio

Dopo aver selezionato il driver, registrare tutti i co-installer del dispositivo e registrare qualsiasi interfaccia del dispositivo.

Chi gestisce

Co-installer di classe

Può gestire

Programma di installazione condivisa del dispositivo

Può gestire

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 da installare.

DeviceInfoData
Fornisce un puntatore a una struttura di SP_DEVINFO_DATA per il dispositivo nel set di informazioni del 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 per DeviceInfoData. Ad esempio, un programma di installazione potrebbe impostare il flag di DI_NEEDREBOOT oppure potrebbe impostare il flag di DI_DONOTCALLCONFIGMG per impedire a Windows di portare il dispositivo online in modo dinamico con il driver e le impostazioni appena installati.

Valore restituito dal programma di installazione

Un co-installer restituisce in genere NO_ERROR o ERROR_DI_POSTPROCESSING_REQUIRED. Un co-installer potrebbe anche restituire 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 di un gestore di codice DIF 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

SetupDiInstallDevice

Operazione del programma di installazione

In risposta a una richiesta di DIF_INSTALLDEVICE un programma di installazione in genere esegue operazioni di installazione finali prima che il gestore predefinito installi il dispositivo. Ad esempio, un programma di installazione può controllare e eventualmente modificare, i driver di filtro superiore e i driver di filtro inferiore per il dispositivo elencato nel Registro di sistema.

A meno che il flag di DI_NOFILECOPY non sia impostato nei parametri di installazione del dispositivo, un programma di installazione che gestisce questa richiesta DIF deve copiare i file necessari per il dispositivo, ad esempio i file del driver e i file del pannello di controllo.

Se il flag di DI_NOFILECOPY è chiaro, ma il flag di DI_NOVCP è impostato, il programma di installazione deve eseguire le operazioni sui file nella coda di file specificata, ma non deve eseguire il commit della coda.

Un co-installer può gestire questa richiesta DIF nel passaggio di pre-elaborazione e/o nel passaggio post-elaborazione. Nel passaggio di pre-elaborazione, un co-installer esegue tutte le operazioni che devono verificarsi prima che Windows carica i driver e avvia il dispositivo.

Nel passaggio post-elaborazione il dispositivo è attivo e in esecuzione a meno che non sia stato impostato il flag di DI_NEEDREBOOT. Se questo flag è impostato, Windows non è riuscito a portare il dispositivo online in modo dinamico.

Se il programma di installazione restituisce un codice di errore Win32, Windows abbandona l'installazione.

Se Windows non riesce a individuare un file INF per un nuovo dispositivo, invia DIF_INSTALLDEVICE in un tentativo di installare un driver Null. Il gestore predefinito (SetupDiInstallDevice) verifica se il dispositivo supporta la modalità non elaborata o è un dispositivo non PnP (segnalato da IoReportDetectedDevice), In quest'ultimo caso Windows installa un driver Null per il dispositivo.

Se questo tentativo ha esito negativo, Windows invia di nuovo DIF_INSTALLDEVICE, questa volta con il flag di DI_FLAGSEX_SETFAILEDINSTALL impostato nella struttura SP_DEVINSTALL_PARAMS . In questo caso, il gestore predefinito imposta solo il flag FAILEDINSTALL nel valore del Registro di sistema ConfigFlags del dispositivo. Se il flag di DI_FLAGSEX_SETFAILEDINSTALL è impostato, i programmi di installazione delle classi devono restituire NO_ERROR o ERROR_DI_DO_DEFAULT e i co-installer devono restituire NO_ERROR.

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

Chiamata del gestore predefinito SetupDiInstallDevice

Per informazioni generali su quando e come chiamare un SetupDiInstallDevice, vedere Chiamata di gestori di codice DIF predefiniti.

Nella rara situazione in cui il programma di installazione della classe deve eseguire operazioni dopo tutte le operazioni SetupDiInstallDevice , ad eccezione dell'avvio di un dispositivo, il programma di installazione della classe deve:

  1. Eseguire operazioni che devono essere eseguite prima di chiamare SetupDiInstallDevice.

  2. Impostare il flag di DI_DONOTCALLCONFIGMGR nel SP_DEVINSTALL_PARAMS. Contrassegna il membro per il dispositivo. Se questo flag è impostato, SetupDiInstallDevice esegue tutte le operazioni di installazione predefinite, ad eccezione dell'avvio del dispositivo.

  3. Chiamare SetupDiInstallDevice per eseguire tutte le operazioni di installazione predefinite, ad eccezione dell'avvio del dispositivo.

  4. Eseguire le operazioni che devono essere eseguite dopo tutte le operazioni di installazione predefinite, ad eccezione dell'avvio del dispositivo, sono state completate.

  5. Chiamare SetupDiRestartDevices per avviare il dispositivo.

  6. Restituisce NO_ERROR se il programma di installazione della classe ha completato correttamente l'operazione di installazione o restituisce un errore Win32 se l'operazione di installazione non è riuscita.

Requisiti

Versione

Supportato in Microsoft Windows 2000 e versioni successive di Windows.

Intestazione

Setupapi.h (include Setupapi.h)

Vedi anche

DIF_INSTALLDEVICEFILES

SetupDiInstallDevice

SP_DEVINFO_DATA

SP_DEVINSTALL_PARAMS