Condividi tramite


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
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 eseguire il rollback di un pacchetto driver.
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.
ERROR_INVALID_FLAGS
Il valore specificato per Flags non è uguale a zero o ROLLBACK_FLAG_NO_UI.
ERROR_NO_MORE_ITEMS
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:

  1. 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.
  2. 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.
  3. 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.
Se il dispositivo specificato non dispone di un driver di backup, DiRollbackDriver chiama SetLastError per impostare l'errore ERROR_NO_MORE_ITEMS, non rimuove il driver attualmente installato e restituisce FALSE.

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.
Per installare un nuovo driver per un dispositivo anziché eseguire il rollback del driver per il dispositivo, chiamare DiInstallDriver o UpdateDriverForPlugAndPlayDevices.

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

Vedi anche

DiInstallDriver

UpdateDriverForPlugAndPlayDevices