Partager via


Fonction DiRollbackDriver (newdev.h)

La fonction DiRollbackDriver restaure le pilote installé sur un appareil spécifié.

Syntaxe

BOOL DiRollbackDriver(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PSP_DEVINFO_DATA DeviceInfoData,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            Flags,
  [out, optional] PBOOL            NeedReboot
);

Paramètres

[in] DeviceInfoSet

Handle du jeu d’informations de périphérique qui contient un élément d’informations sur le périphérique qui représente le périphérique pour lequel la restauration du pilote est effectuée.

[in] DeviceInfoData

Pointeur vers une structure de SP_DEVINFO_DATA qui représente le périphérique spécifique dans le jeu d’informations de périphérique spécifié pour lequel la restauration du pilote est effectuée.

[in, optional] hwndParent

Handle vers la fenêtre de niveau supérieur que DiRollbackDriver utilise pour afficher tout composant d’interface utilisateur associé à une restauration de pilote pour l’appareil spécifié. Ce paramètre est facultatif et peut être défini sur NULL.

[in] Flags

Valeur de type DWORD qui peut être définie sur zéro ou ROLLBACK_FLAG_NO_UI.

En règle générale, cet indicateur doit être défini sur zéro, auquel cas DiRollbackDriver ne supprime pas les composants d’interface utilisateur par défaut associés à une restauration de pilote. Toutefois, si cet indicateur est défini sur ROLLBACK_FLAG_NO_UI, DiRollbackDriver supprime l’affichage des composants d’interface utilisateur associés à une restauration de pilote.

[out, optional] NeedReboot

Pointeur vers une valeur de type BOOL définie par DiRollbackDriver pour indiquer si un redémarrage du système est nécessaire pour terminer la restauration. Ce paramètre est facultatif et peut être NULL.

Si le paramètre est fourni et qu’un redémarrage du système est nécessaire pour terminer la restauration, DiRollbackDriver définit la valeur sur TRUE. Dans ce cas, l’appelant doit inviter l’utilisateur à redémarrer le système. Si ce paramètre est fourni et qu’un redémarrage du système n’est pas nécessaire pour terminer l’installation, DiRollbackDriver définit la valeur sur FALSE.

Si le paramètre a la valeur NULL et qu’un redémarrage du système est nécessaire pour terminer la restauration, DiRollbackDriver affiche une boîte de dialogue de redémarrage du système.

Pour plus d’informations sur ce paramètre, consultez la section Remarques suivante.

Valeur retournée

DiRollbackDriver retourne TRUE si la fonction a correctement restauré le pilote de l’appareil ; sinon, DiRollbackDriver retourne FALSE et l’erreur journalisée peut être récupérée en effectuant un appel à GetLastError. Voici quelques-unes des valeurs d’erreur les plus courantes que GetLastError peut retourner :

Code de retour Description
ERROR_ACCESS_DENIED
L’appelant n’a pas de privilèges d’administrateur. Par défaut, Windows exige que l’appelant dispose de privilèges d’administrateur pour restaurer un package de pilotes.
ERROR_IN_WOW64
L’application appelante est une application 32 bits qui tente de s’exécuter dans un environnement 64 bits, ce qui n’est pas autorisé. Pour plus d’informations, consultez Installation d’appareils sur des systèmes 64 bits.
ERROR_INVALID_FLAGS
La valeur spécifiée pour Les indicateurs n’est pas égale à zéro ou ROLLBACK_FLAG_NO_UI.
ERROR_NO_MORE_ITEMS
Un pilote de sauvegarde n’est pas défini pour l’appareil.

Remarques

Si un pilote de sauvegarde installé précédemment est défini pour un appareil, une restauration de pilote pour le périphérique remplace le pilote actuellement installé sur l’appareil par le pilote de sauvegarde. Windows gère au maximum un pilote de sauvegarde pour un appareil. Windows définit un pilote comme pilote de sauvegarde pour un appareil immédiatement après que le pilote a été correctement installé sur l’appareil et Que Windows détermine que l’appareil fonctionne correctement. Toutefois, si un pilote ne s’installe pas correctement sur un appareil ou si celui-ci ne fonctionne pas correctement après l’installation, Windows ne le définit pas comme pilote de sauvegarde pour le périphérique. Pour plus d’informations sur la restauration du pilote, consultez des informations sur Gestionnaire de périphériques dans le Centre d’aide et de support.

Si l’appareil spécifié dispose d’un pilote de sauvegarde, DiRollbackDriver effectue les opérations suivantes :

  1. Si Indicateurs est défini sur zéro, DiRollbackDriver invite l’utilisateur à confirmer si le pilote de sauvegarde doit être installé. Sinon, si Indicateurs est défini sur ROLLBACK_FLAG_NO_UI, DiRollbackDriver installe le pilote de sauvegarde sans inviter l’utilisateur à confirmer l’installation du pilote de sauvegarde.
  2. DiRollbackDriver installe le pilote de sauvegarde. Le pilote est installé si le pilote de sauvegarde correspond mieux à l’appareil que le pilote actuellement installé sur l’appareil.
  3. Si le pilote remplacé par le pilote de sauvegarde n’est pas un pilote de boîte de réception et n’est pas installé sur d’autres périphériques du système, DiRollbackDriver supprime le pilote du système. DiRollbackDriver supprime le pilote du système, car il est supposé qu’un utilisateur remplacera un pilote uniquement en cas de problème avec le pilote.
Si l’appareil spécifié n’a pas de pilote de sauvegarde, DiRollbackDriver appelle SetLastError pour définir l’erreur ERROR_NO_MORE_ITEMS, ne supprime pas le pilote actuellement installé et retourne FALSE.

En général, les applications d’installation doivent définir NeedReboot sur NULL afin que le système lance automatiquement un redémarrage du système si un redémarrage est nécessaire pour terminer la restauration. Une application doit fournir un pointeur NeedReboot uniquement dans les cas suivants :

  • L’application doit appeler DiRollbackDriver plusieurs fois pour terminer une installation. Dans ce cas, l’application doit enregistrer si une valeur TRUENeedReboot est retournée par l’un des appels à DiRollbackDriver et, le cas échéant, inviter l’utilisateur à redémarrer le système après le retour de l’appel final à DiRollbackDriver .
  • L’application doit effectuer les opérations requises, autres que l’appel de DiRollbackDriver, avant qu’un redémarrage du système ne se produise. Si un redémarrage du système est requis, l’application doit terminer les opérations requises, puis inviter l’utilisateur à redémarrer le système.
Pour installer un nouveau pilote pour un appareil au lieu de le restaurer, appelez DiInstallDriver ou UpdateDriverForPlugAndPlayDevices.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et les versions plus récentes de Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête newdev.h (include Newdev.h)
Bibliothèque Newdev.lib
DLL Newdev.dll

Voir aussi

DiInstallDriver

UpdateDriverForPlugAndPlayDevices