Freigeben über


RmShutdown-Funktion (restartmanager.h)

Initiiert das Herunterfahren von Anwendungen. Diese Funktion kann nur über das Installationsprogramm aufgerufen werden, das die Restart Manager-Sitzung mit der RmStartSession-Funktion gestartet hat.

Syntax

DWORD RmShutdown(
  [in]           DWORD                    dwSessionHandle,
  [in]           ULONG                    lActionFlags,
  [in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);

Parameter

[in] dwSessionHandle

Ein Handle für eine vorhandene Restart Manager-Sitzung.

[in] lActionFlags

Mindestens eine RM_SHUTDOWN_TYPE Optionen, die das Herunterfahren von Komponenten konfigurieren. Die folgenden Werte können von einem OR-Operator kombiniert werden, um anzugeben, dass anwendungen und Dienste, die nicht reagieren, zum Herunterfahren gezwungen werden sollen, wenn und nur, wenn alle Anwendungen für den Neustart registriert wurden.

Wert Bedeutung
RmForceShutdown
0x1
Erzwingen, dass nicht reagierende Anwendungen und Dienste nach dem Timeoutzeitraum heruntergefahren werden. Eine Anwendung, die nicht auf eine Herunterfahranforderung antwortet, muss innerhalb von 30 Sekunden heruntergefahren werden. Ein Dienst, der nicht auf eine Herunterfahranforderung reagiert, wird nach 20 Sekunden zum Herunterfahren gezwungen.
RmShutdownOnlyRegistered
0x10
Fahren Sie Anwendungen nur herunter, wenn alle Anwendungen mit der RegisterApplicationRestart-Funktion für den Neustart registriert wurden. Wenn Prozesse oder Dienste nicht neu gestartet werden können, werden keine Prozesse oder Dienste heruntergefahren.

[in, optional] fnStatus

Ein Zeiger auf eine RM_WRITE_STATUS_CALLBACK Funktion, die verwendet wird, um während der Ausführung dieser Funktion detaillierte status zu kommunizieren. Bei NULL wird kein status angegeben.

Rückgabewert

Dies ist der letzte empfangene Fehler. Die Funktion kann einen der Systemfehlercodes zurückgeben, die in Winerror.h definiert sind.

Wert Bedeutung
ERROR_SUCCESS
0
Alle Vorgänge zum Herunterfahren, Neustarten und Rückruf wurden erfolgreich abgeschlossen.
ERROR_FAIL_NOACTION_REBOOT
350
Es wurden keine Aktionen zum Herunterfahren ausgeführt. Ein oder mehrere Prozesse oder Dienste erfordern einen Neustart des Systems, um heruntergefahren zu werden. Dieser Fehlercode wird zurückgegeben, wenn der Neustart-Manager erkennt, dass ein Neustart des Systems erforderlich ist, bevor eine Anwendung heruntergefahren wird.
ERROR_FAIL_SHUTDOWN
351
Einige Anwendungen konnten nicht heruntergefahren werden. Der AppStatus der RM_PROCESS_INFO-Strukturen, die von der RmGetList-Funktion zurückgegeben werden, enthalten aktualisierte status Informationen.
ERROR_CANCELLED
1223
Dieser Fehlerwert wird von der RmShutdown-Funktion zurückgegeben, wenn die Anforderung zum Abbrechen eines Vorgangs erfolgreich ist.
ERROR_SEM_TIMEOUT
121
Eine Neustart-Manager-Funktion konnte in der zugewiesenen Zeit keinen Registrierungs-Schreibmutex abrufen. Ein Systemneustart wird empfohlen, da die weitere Verwendung des Neustart-Managers wahrscheinlich fehlschlägt.
ERROR_BAD_ARGUMENTS
160
Mindestens ein Argument ist falsch. Dieser Fehlerwert wird von der Funktion Restart Manager zurückgegeben, wenn ein NULL-Zeiger oder 0 in einem Parameter übergeben wird, der einen Wert ungleich NULL und ungleich Null erfordert.
ERROR_WRITE_FAULT
29
Ein Vorgang konnte weder lesen noch in die Registrierung schreiben.
ERROR_OUTOFMEMORY
14
Ein Neustart-Manager-Vorgang konnte nicht abgeschlossen werden, da nicht genügend Arbeitsspeicher verfügbar ist.
ERROR_INVALID_HANDLE
6
Für das bereitgestellte Handle ist keine Restart Manager-Sitzung vorhanden.

Hinweise

Die RmShutdown-Funktion ruft RmGetList auf und aktualisiert die Liste der Prozesse, die derzeit registrierte Ressourcen verwenden, bevor versucht wird, Prozesse herunterzufahren. Die RmShutdown-Funktion versucht dann, die Prozesse mithilfe registrierter Ressourcen in der aktuellen Liste herunterzufahren. Die RmShutdown-Funktion aktualisiert den AppStatus-Member der RM_PROCESS_INFO-Strukturen, die von der RmGetList-Funktion zurückgegeben werden, mit detaillierten status Informationen.

Der Neustart-Manager respektiert die Berechtigungen, die verschiedene Benutzer- oder Terminalsitzungen voneinander trennen. Ein Installationsprogramm, das als Dienst mit LocalSystem-Berechtigungen ausgeführt wird, kann anwendungen in einer anderen Benutzer- oder Terminalsitzung nicht herunterfahren oder neu starten. Installationsprogramme sollten benutzerdefinierte Methoden implementieren, um Anwendungen, die in anderen Sitzungen ausgeführt werden, herunterzufahren und neu zu starten. Eine Methode wäre, einen neuen Installationsprozess in der anderen Sitzung zu starten, um Herunter- und Neustartvorgänge auszuführen.

Installer sollten Anwendung und Dienste immer mit der RmRestart-Funktion neu starten, auch wenn die RmShutdown-Funktion einen Fehler zurückgibt, der angibt, dass nicht alle Anwendungen und Dienste heruntergefahren werden können.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile restartmanager.h
Bibliothek Rstrtmgr.lib
DLL Rstrtmgr.dll

Weitere Informationen

RegisterApplicationRestart

RmCancelCurrentTask

RmRestart