Funzione DiUninstallDriverW (newdev.h)

La funzione di DiUninstallDriver rimuove un pacchetto driver da tutti i dispositivi in cui viene installato installando tali dispositivi con un altro pacchetto driver corrispondente, se disponibile o il driver Null se non è disponibile alcun altro pacchetto driver corrispondente. Il pacchetto driver specificato viene quindi rimosso dall'archivio driver .

Sintassi

BOOL DiUninstallDriverW(
  [in, optional]  HWND    hwndParent,
  [in]            LPCWSTR InfPath,
  [in]            DWORD   Flags,
  [out, optional] PBOOL   NeedReboot
);

Parametri

[in, optional] hwndParent

Handle per la finestra di primo livello che DiUninstallDriver deve usare per visualizzare qualsiasi componente dell'interfaccia utente associato alla disinstallazione del driver. Questo parametro è facoltativo e può essere impostato su NULL.

[in] InfPath

Puntatore a una stringa con terminazione NULL che fornisce il percorso completo del file INF per il pacchetto driver .

[in] Flags

Valore di tipo DWORD che specifica zero o uno o più dei flag seguenti: DIURFLAG_NO_REMOVE_INF. In genere, questo flag deve essere impostato su zero.

Se questo flag è zero, DiUninstallDriver rimuove il pacchetto driver da tutti i dispositivi in cui è installato installando tali dispositivi con un altro pacchetto driver corrispondente, se disponibile o il driver Null se non è disponibile alcun altro pacchetto driver corrispondente. Tuttavia, se questo flag è impostato su DIURFLAG_NO_REMOVE_INF, DiUninstallDriver rimuove il pacchetto driver da tutti i dispositivi in cui è installato, ma non rimuove il pacchetto driver dall'archivio driver.

attenzione: forzare la disinstallazione del pacchetto driver può comportare la sostituzione di un pacchetto driver più compatibile o più recente con un driver meno compatibile o meno recente.
 
Per informazioni su come Windows seleziona un pacchetto driver per un dispositivo, vedere How Windows Selects Drivers.

[out, optional] NeedReboot

Puntatore a un valore di tipo BOOL che DiUninstallDriver imposta per indicare se è necessario un riavvio del sistema per completare la disinstallazione. Questo parametro è facoltativo e può essere NULL. Se viene specificato il parametro e per completare la disinstallazione è necessario riavviare il sistema, DiUninstallDriver imposta il valore su TRUE. In questo caso, il chiamante deve chiedere all'utente di riavviare il sistema. Se questo parametro viene fornito e non è necessario riavviare il sistema per completare la disinstallazione, DiUninstallDriver imposta il valore su FALSE. Se il parametro è NULL ed è necessario un riavvio del sistema per completare la disinstallazione, DiUninstallDriver visualizza una finestra di dialogo di riavvio del sistema. Per altre informazioni su questo parametro, vedere la sezione osservazioni seguente.

Valore restituito

DiUninstallDriver restituisce TRUE se la funzione rimuove correttamente il pacchetto driver da tutti i dispositivi in cui è installato e viene rimosso correttamente dall'archivio driver del sistema. Se il pacchetto driver non viene disinstallato correttamente dall'archivio driver, DiUninstallDriver restituisce FALSE e l'errore registrato può essere recuperato effettuando una chiamata a GetLastError. Di seguito sono riportati alcuni dei valori di errore più comuni che GetLastError:

Codice restituito Descrizione
ERROR_ACCESS_DENIED
Il chiamante non dispone dei privilegi di amministratore. Per impostazione predefinita, Windows richiede che il chiamante disponga dei privilegi di amministratore per disinstallare un pacchetto driver dall'archivio driver .
ERROR_FILE_NOT_FOUND
Il percorso del file INF specificato non esiste.
ERROR_INVALID_FLAGS
Il valore specificato per flag non è uguale a zero o DIURFLAG_NO_REMOVE_INF.
ERROR_IN_WOW64
L'applicazione chiamante è un'applicazione a 32 bit che tenta di eseguire in un ambiente a 64 bit, che non è consentita. Per altre informazioni, vedere Installazione di dispositivi in sistemi a 64 bit.

Osservazioni

In generale, un'applicazione di disinstallazione deve impostare NeedReboot su null per indirizzare DiUninstallDriver per chiedere all'utente di riavviare il sistema se è necessario completare la rimozione. Un'applicazione deve fornire un puntatore NeedReboot solo nei casi seguenti:

  • L'applicazione deve chiamare DiUninstallDriver più volte per completare una disinstallazione. In questo caso, l'applicazione deve registrare se un valore TRUENeedReboot viene restituito da una delle chiamate a DiUninstallDriver e, in tal caso, chiedere all'utente di riavviare il sistema dopo la chiamata finale a DiUninstallDriver.
  • L'applicazione deve eseguire operazioni necessarie, oltre a chiamare DiUninstallDriver, prima che si verifichi un riavvio del sistema. Se è necessario un riavvio del sistema, l'applicazione deve completare le operazioni necessarie e quindi chiedere all'utente di riavviare il sistema.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows 10 versione 1703 e versioni successive di Windows.
piattaforma di destinazione Desktop
intestazione newdev.h (include Newdev.h)
libreria Newdev.lib

Vedere anche

DiUninstallDevice