Condividi tramite


Funzione DiUninstallDriverA (newdev.h)

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

Sintassi

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

Parametri

[in, optional] hwndParent

Handle alla 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 qualsiasi dispositivo 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 qualsiasi dispositivo installato, ma non rimuove il pacchetto driver dall'Archivio driver.

Attenzione: Forzando 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 sul modo in cui Windows seleziona un pacchetto driver per un dispositivo, vedere How Windows Selects Drivers (How Windows Selects Drivers).

[out, optional] NeedReboot

Puntatore a un valore di tipo BOOL impostato da DiUninstallDriver per indicare se è necessario un riavvio del sistema per completare la disinstallazione. Questo parametro è facoltativo e può essere NULL. Se il parametro viene fornito e per completare la disinstallazione è necessario riavviare il sistema, DiUninstallDriver imposta il valore su TRUE. In questo caso, il chiamante deve richiedere all'utente di riavviare il sistema. Se questo parametro viene fornito e un riavvio del sistema non è necessario per completare la disinstallazione, DiUninstallDriver imposta il valore su FALSE. Se il parametro è NULL e è 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 seguenti.

Valore restituito

DiUninstallDriver restituisce TRUE se la funzione rimuove correttamente il pacchetto driver da tutti i dispositivi installati 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 eseguendo una chiamata a GetLastError. Alcuni dei valori di errore più comuni che GetLastError potrebbero restituire sono i seguenti:

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 driverdall'archivio driver.
ERROR_FILE_NOT_FOUND
Il percorso del file INF specificato non esiste.
ERROR_INVALID_FLAGS
Il valore specificato per Flags 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 è consentito. Per altre informazioni, vedere Installazione di dispositivi in sistemi a 64 bit.

Commenti

In generale, un'applicazione di disinstallazione deve impostare NeedReboot su NULL per indirizzare DiUninstallDriver per richiedere 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, diverse dalla chiamata di DiUninstallDriver, prima che si verifichi un riavvio del sistema. Se è necessario un riavvio del sistema, l'applicazione deve completare le operazioni necessarie e quindi richiedere all'utente di riavviare il sistema.

Requisiti

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

Vedi anche

DiUninstallDevice