Funzione UpdateDriverForPlugAndPlayDevicesA (newdev.h)
Dato un file INF e un ID hardware, la funzione UpdateDriverForPlugAndPlayDevices installa i driver aggiornati per i dispositivi che corrispondono all'ID hardware.
Sintassi
BOOL UpdateDriverForPlugAndPlayDevicesA(
[in, optional] HWND hwndParent,
[in] LPCSTR HardwareId,
[in] LPCSTR FullInfPath,
[in] DWORD InstallFlags,
[out, optional] PBOOL bRebootRequired
);
Parametri
[in, optional] hwndParent
Handle della finestra di primo livello da usare per qualsiasi interfaccia utente correlata all'installazione dei dispositivi.
[in] HardwareId
Puntatore a una stringa con terminazione NULL che fornisce l'identificatore hardware per corrispondere ai dispositivi esistenti nel computer. La lunghezza massima di un identificatore hardware con terminazione NULL è MAX_DEVICE_ID_LEN. Per altre informazioni sugli identificatori hardware, vedere Stringhe di identificazione del dispositivo.
[in] FullInfPath
Puntatore a una stringa con terminazione NULL che fornisce il nome completo del file del percorso di un file INF. I file devono trovarsi nel supporto di distribuzione o in una directory creata dal fornitore, non in un percorso di sistema, ad esempio %SystemRoot%\inf. UpdateDriverForPlugAndPlayDevices copia i file driver nei percorsi di sistema appropriati se l'installazione ha esito positivo.
[in] InstallFlags
Valore fornito dal chiamante creato usando OR per combinare zero o più flag di bit seguenti:
INSTALLFLAG_FORCE
Se questo flag è impostato e la funzione trova un dispositivo che corrisponde al valore HardwareId , la funzione installa nuovi driver per il dispositivo se i driver migliori esistono già nel computer.
INSTALLFLAG_READONLY
Se questo flag è impostato, la funzione non copia, rinomina o elimina tutti i file di installazione. L'uso di questo flag deve essere limitato agli ambienti in cui l'accesso ai file è limitato o impossibile, ad esempio un sistema operativo "incorporato".
INSTALLFLAG_NONINTERACTIVE
Se questo flag è impostato, la funzione restituirà FALSE quando viene rilevato qualsiasi tentativo di visualizzazione dell'interfaccia utente. Impostare questo flag solo se la funzione verrà chiamata da un componente (ad esempio un servizio) che non può visualizzare l'interfaccia utente.
[out, optional] bRebootRequired
Puntatore a una variabile tipizzata BOOL che indica se è necessario un riavvio e chi deve richiederlo. Questo puntatore è facoltativo e può essere NULL.
Se il puntatore è NULL, UpdateDriverForPlugAndPlayDevices richiede un riavvio dopo l'installazione dei driver, se necessario. Se viene fornito il puntatore, la funzione restituisce un valore BOOLEAN true se il sistema deve essere riavviato. È quindi responsabilità del chiamante richiedere un riavvio.
Per altre informazioni, vedere la sezione Osservazioni seguenti.
Valore restituito
La funzione restituisce TRUE se un dispositivo è stato aggiornato al driver specificato.
In caso contrario, restituisce FALSE e l'errore registrato può essere recuperato con una chiamata a GetLastError. I valori di errore possibili restituiti da GetLastError sono inclusi nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Il percorso specificato per FullInfPath non esiste. |
|
L'applicazione chiamante è un'applicazione a 32 bit che tenta di eseguire in un ambiente a 64 bit, che non è consentito. |
|
Il valore specificato per InstallFlags non è valido. |
|
Il valore specificato per HardwareId non corrisponde a alcun dispositivo nel sistema. Ovvero, il dispositivo non è collegato. |
|
La funzione ha trovato una corrispondenza per il valore HardwareId , ma il driver specificato non era una corrispondenza migliore del driver corrente e il chiamante non specificava il flag di INSTALLFLAG_FORCE. |
Commenti
UpdateDriverForPlugAndPlayDevices analizza i dispositivi nel sistema e tenta di installare i driver specificati da FullInfPath per tutti i dispositivi che corrispondono al valore HardwareId specificato.
Il comportamento predefinito consiste nell'installare solo i driver specificati se corrispondono meglio dei driver attualmente installati e i driver specificati sono anche una corrispondenza migliore di qualsiasi driver in %SystemRoot%\inf. Per altre informazioni, vedere How Windows Selects Driver(How Windows Selects Drivers).
UpdateDriverForPlugAndPlayDevices può essere usato anche per determinare se il dispositivo con il valore HardwareId specificato è collegato. Per altre informazioni, vedere Scrittura di un'applicazione di installazione del dispositivo.
UpdateDriverForPlugAndPlayDevices invia una richiesta di IRP_MN_QUERY_REMOVE_DEVICE al dispositivo specificato, tutti gli elementi figlio del dispositivo e tutti gli altri dispositivi che fanno parte ricorsivamente delle relazioni di rimozione per il dispositivo. Se uno di questi dispositivi non riesce una richiesta di rimozione delle query, UpdateDriverForPlugAndPlayDevices imposta il flag di DI_NEEDREBOOT nel membro Flag della struttura SP_DEVINSTALL_PARAMS per il dispositivo. Per informazioni sulle relazioni di rimozione, vedere la richiesta di IRP_MN_QUERY_DEVICE_RELATIONS .
In genere, le applicazioni di installazione del dispositivo devono fornire NULL per bRebootRequired. Quindi, il sistema avvierà un riavvio se necessario. Un'applicazione deve specificare un valore puntatore solo nei casi seguenti:
- L'applicazione deve chiamare UpdateDriverForPlugAndPlayDevices più volte per completare un'installazione.
- L'applicazione deve eseguire altre operazioni prima del riavvio (se necessario).
- L'applicazione è un programma di installazione della classe, che deve impostare DI_NEEDREBOOT in SP_DEVINSTALL_PARAMS se è necessario un riavvio.
Se la funzione restituisce ERROR_IN_WOW64 in un'applicazione a 32 bit, l'applicazione viene eseguita in un sistema a 64 bit, che non è consentito. Per altre informazioni, vedere Installazione di dispositivi in sistemi a 64 bit.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Microsoft Windows 2000 e versioni successive di Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | newdev.h (include Newdev.h) |
Libreria | Newdev.lib |