DiRollbackDriver-Funktion (newdev.h)
Die DiRollbackDriver-Funktion führt ein Rollback des Treibers aus, der auf einem angegebenen Gerät installiert ist.
Syntax
BOOL DiRollbackDriver(
[in] HDEVINFO DeviceInfoSet,
[in] PSP_DEVINFO_DATA DeviceInfoData,
[in, optional] HWND hwndParent,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
Parameter
[in] DeviceInfoSet
Ein Handle für den Geräteinformationssatz , der ein Geräteinformationselement enthält, das das Gerät darstellt, für das ein Treiberrollback ausgeführt wird.
[in] DeviceInfoData
Ein Zeiger auf eine SP_DEVINFO_DATA Struktur, die das spezifische Gerät in den angegebenen Geräteinformationen darstellt, für das ein Treiberrollback ausgeführt wird.
[in, optional] hwndParent
Ein Handle für das Fenster der obersten Ebene, das DiRollbackDriver verwendet, um eine beliebige Benutzeroberflächenkomponente anzuzeigen, die einem Treiberrollback für das angegebene Gerät zugeordnet ist. Dieser Parameter ist optional und kann auf NULL festgelegt werden.
[in] Flags
Ein Wert vom Typ DWORD, der auf Null oder ROLLBACK_FLAG_NO_UI festgelegt werden kann.
In der Regel sollte dieses Flag auf 0 festgelegt werden. In diesem Fall unterdrückt DiRollbackDriver nicht die Standardbenutzeroberflächenkomponenten, die einem Treiberrollback zugeordnet sind. Wenn dieses Flag jedoch auf ROLLBACK_FLAG_NO_UI festgelegt ist, unterdrückt DiRollbackDriver die Anzeige von Benutzeroberflächenkomponenten, die einem Treiberrollback zugeordnet sind.
[out, optional] NeedReboot
Ein Zeiger auf einen Wert vom Typ BOOL, den DiRollbackDriver festlegt, um anzugeben, ob ein Systemneustart erforderlich ist, um das Rollback abzuschließen. Dieser Parameter ist optional und kann NULL sein.
Wenn der Parameter angegeben wird und ein Systemneustart erforderlich ist, um das Rollback abzuschließen, legt DiRollbackDriver den Wert auf TRUE fest. In diesem Fall muss der Aufrufer den Benutzer auffordern, das System neu zu starten. Wenn dieser Parameter angegeben wird und kein Systemneustart erforderlich ist, um die Installation abzuschließen, legt DiRollbackDriver den Wert auf FALSE fest.
Wenn der Parameter NULL ist und ein Systemneustart erforderlich ist, um das Rollback abzuschließen, zeigt DiRollbackDriver ein Dialogfeld für den Systemneustart an.
Weitere Informationen zu diesem Parameter finden Sie im folgenden Abschnitt hinweise .
Rückgabewert
DiRollbackDriver gibt TRUE zurück, wenn die Funktion erfolgreich ein Rollback für den Treiber für das Gerät durchgeführt hat. Andernfalls gibt DiRollbackDriverFALSE zurück, und der protokollierte Fehler kann durch einen Aufruf von GetLastError abgerufen werden. Einige der häufigeren Fehlerwerte, die GetLastError möglicherweise zurückgibt, sind wie folgt:
Rückgabecode | Beschreibung |
---|---|
|
Der Aufrufer verfügt nicht über Administratorrechte. Standardmäßig erfordert Windows, dass der Aufrufer über Administratorrechte verfügt, um ein Treiberpaket zurückzusetzen. |
|
Die aufrufende Anwendung ist eine 32-Bit-Anwendung, die versucht, in einer 64-Bit-Umgebung auszuführen, was nicht zulässig ist. Weitere Informationen finden Sie unter Installieren von Geräten auf 64-Bit-Systemen. |
|
Der für Flags angegebene Wert ist nicht gleich null oder ROLLBACK_FLAG_NO_UI. |
|
Ein Sicherungstreiber ist für das Gerät nicht festgelegt. |
Hinweise
Wenn ein zuvor installierter Sicherungstreiber für ein Gerät festgelegt ist, ersetzt ein Treiberrollback für das Gerät den Treiber, der derzeit auf dem Gerät installiert ist, durch den Sicherungstreiber. Windows verwaltet höchstens einen Sicherungstreiber für ein Gerät. Windows legt einen Treiber als Sicherungstreiber für ein Gerät fest, unmittelbar nachdem der Treiber erfolgreich auf dem Gerät installiert wurde, und Windows ermittelt, dass das Gerät ordnungsgemäß funktioniert. Wenn ein Treiber jedoch nicht erfolgreich auf einem Gerät installiert wird oder das Gerät nach der Installation nicht ordnungsgemäß funktioniert, legt Windows den Treiber nicht als Sicherungstreiber für das Gerät fest. Weitere Informationen zum Treiberrollback finden Sie unter Informationen zu Geräte-Manager im Hilfe- und Supportcenter.
Wenn das angegebene Gerät über einen Sicherungstreiber verfügt, führt DiRollbackDriver die folgenden Vorgänge aus:
- Wenn Flags auf 0 festgelegt ist, fordert DiRollbackDriver den Benutzer auf, zu bestätigen, ob der Sicherungstreiber installiert werden soll. Andernfalls installiert DiRollbackDriver, wenn Flags auf ROLLBACK_FLAG_NO_UI festgelegt ist, den Sicherungstreiber, ohne den Benutzer zur Bestätigung der Installation des Sicherungstreibers aufzufordern.
- DiRollbackDriver installiert den Sicherungstreiber. Der Treiber wird installiert, ob der Sicherungstreiber besser mit dem Gerät übereinstimmt als der Treiber, der derzeit auf dem Gerät installiert ist.
- Wenn der Treiber, der durch den Sicherungstreiber ersetzt wird, kein Posteingangstreiber ist und nicht auf anderen Geräten im System installiert ist, entfernt DiRollbackDriver den Treiber aus dem System. DiRollbackDriver entfernt den Treiber aus dem System, da davon ausgegangen wird, dass ein Benutzer einen Treiber nur dann ersetzt, wenn ein Problem mit dem Treiber vorliegt.
Im Allgemeinen sollten Installationsanwendungen NeedReboot auf NULL festlegen, damit das System automatisch einen Systemneustart initiiert, wenn ein Neustart erforderlich ist, um das Rollback abzuschließen. Eine Anwendung sollte einen NeedReboot-Zeiger nur in den folgenden Fällen bereitstellen:
- Die Anwendung muss DiRollbackDriver mehrmals aufrufen, um eine Installation abzuschließen. In diesem Fall sollte die Anwendung aufzeichnen, ob ein TRUENeedReboot-Wert von einem der Aufrufe von DiRollbackDriver zurückgegeben wird. Wenn dies der Fall ist, sollte der Benutzer aufgefordert werden, das System neu zu starten, nachdem der letzte Aufruf von DiRollbackDriver zurückgegeben wurde.
- Die Anwendung muss die erforderlichen Vorgänge ausführen, mit Ausnahme des Aufrufs von DiRollbackDriver, bevor ein Systemneustart erfolgen sollte. Wenn ein Systemneustart erforderlich ist, sollte die Anwendung die erforderlichen Vorgänge abschließen und den Benutzer dann auffordern, das System neu zu starten.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und späteren Windows-Versionen. |
Zielplattform | Desktop |
Kopfzeile | newdev.h (include Newdev.h) |
Bibliothek | Newdev.lib |
DLL | Newdev.dll |