Funzione DiRollbackDriver (newdev.h)
La funzione DiRollbackDriver esegue il rollback del driver installato in un dispositivo specificato.
Sintassi
BOOL DiRollbackDriver(
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVINFO_DATA DeviceInfoData,
[in, optional] HWND hwndParent,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
Parametri
[in] DeviceInfoSet
Handle per il set di informazioni sul dispositivo che contiene un elemento informativo del dispositivo che rappresenta il dispositivo per il quale viene eseguito il rollback del driver.
[in] DeviceInfoData
Puntatore a una struttura SP_DEVINFO_DATA che rappresenta il dispositivo specifico nel set di informazioni del dispositivo specificato per cui viene eseguito il rollback del driver.
[in, optional] hwndParent
Handle alla finestra di primo livello utilizzata da DiRollbackDriver per visualizzare qualsiasi componente dell'interfaccia utente associato a un rollback del driver per il dispositivo specificato. Questo parametro è facoltativo e può essere impostato su NULL.
[in] Flags
Valore di tipo DWORD che può essere impostato su zero o ROLLBACK_FLAG_NO_UI.
In genere, questo flag deve essere impostato su zero, nel qual caso DiRollbackDriver non elimina i componenti dell'interfaccia utente predefiniti associati a un rollback del driver. Tuttavia, se questo flag è impostato su ROLLBACK_FLAG_NO_UI, DiRollbackDriver elimina la visualizzazione dei componenti dell'interfaccia utente associati a un rollback del driver.
[out, optional] NeedReboot
Puntatore a un valore di tipo BOOL impostato da DiRollbackDriver per indicare se è necessario un riavvio del sistema per completare il rollback. Questo parametro è facoltativo e può essere NULL.
Se il parametro viene fornito e è necessario un riavvio del sistema per completare il rollback, DiRollbackDriver imposta il valore su TRUE. In questo caso, il chiamante deve richiedere all'utente di riavviare il sistema. Se questo parametro viene fornito e non è necessario completare l'installazione, DiRollbackDriver imposta il valore su FALSE.
Se il parametro è NULL e è necessario un riavvio del sistema per completare il rollback, DiRollbackDriver visualizza una finestra di dialogo di riavvio del sistema.
Per altre informazioni su questo parametro, vedere la sezione Osservazioni seguenti.
Valore restituito
DiRollbackDriver restituisce TRUE se la funzione ha eseguito il rollback del driver per il dispositivo; in caso contrario, DiRollbackDriver 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 |
---|---|
|
Il chiamante non dispone dei privilegi di amministratore. Per impostazione predefinita, Windows richiede che il chiamante disponga dei privilegi di amministratore per eseguire il rollback di un pacchetto driver. |
|
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. |
|
Il valore specificato per Flags non è uguale a zero o ROLLBACK_FLAG_NO_UI. |
|
Un driver di backup non è impostato per il dispositivo. |
Commenti
Se un driver di backup installato in precedenza è impostato per un dispositivo, un rollback del driver per il dispositivo sostituisce il driver attualmente installato nel dispositivo con il driver di backup. Windows gestisce al massimo un driver di backup per un dispositivo. Windows imposta un driver come driver di backup per un dispositivo immediatamente dopo l'installazione del driver nel dispositivo e Windows determina che il dispositivo funziona correttamente. Tuttavia, se un driver non viene installato correttamente in un dispositivo o il dispositivo non funziona correttamente dopo l'installazione, Windows non imposta il driver come driver di backup per il dispositivo. Per altre informazioni sul rollback dei driver, vedere informazioni su Gestione dispositivi in Guida e centro supporto.
Se il dispositivo specificato ha un driver di backup, DiRollbackDriver esegue le operazioni seguenti:
- Se flag è impostato su zero, DiRollbackDriver richiede all'utente di confermare se il driver di backup deve essere installato. In caso contrario, se flag è impostato su ROLLBACK_FLAG_NO_UI, DiRollbackDriver installa il driver di backup senza richiedere all'utente di confermare l'installazione del driver di backup.
- DiRollbackDriver installa il driver di backup. Il driver viene installato se il driver di backup è una corrispondenza migliore per il dispositivo rispetto al driver attualmente installato nel dispositivo.
- Se il driver sostituito dal driver di backup non è un driver in arrivo e non è installato in altri dispositivi nel sistema, DiRollbackDriver rimuove il driver dal sistema. DiRollbackDriver rimuove il driver dal sistema perché si presuppone che un utente sostituisca un driver solo se si verifica un problema con il driver.
In generale, le applicazioni di installazione devono impostare NeedReboot su NULL in modo che il sistema avvii automaticamente un riavvio del sistema se è necessario completare il rollback. Un'applicazione deve fornire un puntatore NeedReboot solo nei casi seguenti:
- L'applicazione deve chiamare DiRollbackDriver più volte per completare un'installazione. In questo caso, l'applicazione deve registrare se un valore TRUENeedReboot viene restituito da una delle chiamate a DiRollbackDriver e, in tal caso, chiedere all'utente di riavviare il sistema dopo la chiamata finale a DiRollbackDriver .
- L'applicazione deve eseguire operazioni necessarie, diversamente dalla chiamata di DiRollbackDriver, 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 Vista e versioni successive di Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | newdev.h (include Newdev.h) |
Libreria | Newdev.lib |
DLL | Newdev.dll |