Funzione SetupDiInstallDevice (setupapi.h)
La funzione SetupDiInstallDevice è il gestore predefinito per la richiesta di installazione DIF_INSTALLDEVICE .
Sintassi
WINSETUPAPI BOOL SetupDiInstallDevice(
[in] HDEVINFO DeviceInfoSet,
[in, out] PSP_DEVINFO_DATA DeviceInfoData
);
Parametri
[in] DeviceInfoSet
Handle per il set di informazioni sul dispositivo per il sistema locale che contiene un elemento di informazioni sul dispositivo che rappresenta il dispositivo da installare.
[in, out] DeviceInfoData
Puntatore a una struttura SP_DEVINFO_DATA che specifica un elemento informazioni sul dispositivo in DeviceInfoSet. Si tratta di un parametro IN-OUT perché DeviceInfoData.DevInst potrebbe essere aggiornato con un nuovo valore handle al momento della restituzione.
Valore restituito
Se la funzione ha esito positivo, la funzione restituisce TRUE . In caso contrario, restituisce FALSE e l'errore registrato può essere recuperato con una chiamata a GetLastError.
Commenti
SetupDiInstallDevice installa un driver dal file INF. La definizione di SetupAPI del "driver" è in realtà un "nodo driver". Pertanto, quando questa funzione installa un driver, installa anche gli elementi nell'elenco seguente:
- I servizi per il dispositivo.
- File del driver.
- Co-installer specifici del dispositivo (se presenti).
- Provider di pagine delle proprietà (se presenti).
- Applet del pannello di controllo (se presenti).
Una corretta installazione include, ma non solo, i passaggi seguenti:
- Creare una chiave del driver nel Registro di sistema e scrivere le voci appropriate, ad esempio InfPath e ProviderName.
- Individuare ed elaborare la sezione INF DDInstall per il dispositivo. La sezione potrebbe essere specifica del sistema operativo o dell'architettura. Le voci AddReg e DelReg della sezione DDInstall vengono indirizzate alla chiave software del dispositivo. Individuare ed elaborare DDInstall. Sezione HW le cui voci AddReg e DelReg vengono indirizzate alla chiave hardware del dispositivo. Individuare ed elaborare la sezione INF DDInstall.LogConfigOverride, se presente, per fornire una configurazione di override per il dispositivo. Individuare ed elaborare la sezione INF DDInstall.Services per aggiungere servizi per il dispositivo e rimuovere potenzialmente eventuali servizi obsoleti che non sono più necessari.
- Copiare il file INF nella directory INF di sistema.
-
È possibile eseguire le altre operazioni sui file, in base alle impostazioni del flag nei parametri di installazione del dispositivo.
Se il flag DI_NOFILECOPY e il flag DI_NOVCP sono chiari, eseguire qualsiasi operazione di file specificata nella sezione DDInstall . Se il flag DI_NOVCP è impostato, accoda tutte le operazioni sui file.
Se il flag DI_NOFILECOPY è impostato, non copiare i file. Questo flag può essere impostato se, ad esempio, è già stata eseguita un'operazione di DIF_INSTALLDEVICEFILES per l'installazione del dispositivo.
- Caricare i driver per il dispositivo. Sono inclusi il driver di funzione e qualsiasi driver di filtro superiore o inferiore.
- Chiamare le routine AddDevice dei driver.
- Avviare il dispositivo inviando un pacchetto di richiesta I/O IRP_MN_START_DEVICE .
Un programma di installazione classi deve restituire ERROR_DI_DO_DEFAULT o chiamare questa funzione durante la gestione di una richiesta di DIF_INSTALLDEVICE . Questa funzione esegue molte attività per l'installazione del dispositivo e tale elenco di attività potrebbe essere espanso nelle versioni future. Se un programma di installazione di classe esegue l'installazione del dispositivo senza chiamare questa funzione, il programma di installazione della classe potrebbe non funzionare correttamente nelle versioni future del sistema operativo.
Se Windows non riesce a individuare un file INF per il dispositivo, invierà DIF_INSTALLDEVICE nel tentativo di installare un driver Null. SetupDiInstallDevice installa un driver Null solo se il dispositivo supporta la modalità non elaborata o è un dispositivo non PnP (segnalato da IoReportDetectedDevice). Per altre informazioni, vedere DIF_INSTALLDEVICE.
Se il flag DI_FLAGSEX_SETFAILEDINSTALL è impostato nella struttura SP_DEVINSTALL_PARAMS , SetupDiInstallDevice imposta solo il flag FAILEDINSTALL nel valore del Registro di sistema ConfigFlags del dispositivo.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Microsoft Windows 2000 e versioni successive di Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | setupapi.h (include Setupapi.h) |
Libreria | Setupapi.lib |
DLL | Setupapi.dll |