Serverseitige Bereinigung

Imagine folgendes Szenario:

Ein Client öffnet ein Kontexthand handle und beendet dann entweder die Verbindung mit dem Server oder verliert sie. Wie erkennt der Server, dass der Client ausgefallen ist und das Kontexthand handle heruntergefahren werden sollte? Es gibt zwei Unterscenarios: Einer ist, dass der Client in einer geordneten Weise heruntergefahren wird. In diesem Fall wird der Server benachrichtigt, dass er heruntergefahren wird, und der Server kann eine Bereinigung durchführen, einschließlich der Ausführung von Kontext run downs. Wenn der Client nicht in einer geordneten Weise heruntergefahren wird oder den Server nicht benachrichtigen kann, verwendet der Server keep alives, um zu bestimmen, ob der Client weiterhin verfügbar ist. Auf Serverseite hat die RpcMgmtSetComTimeout-Funktion keine Auswirkungen. Stattdessen verwendet der Server die Einstellung global pro Computer –Keep Alive, die standardmäßig ungefähr zwei Stunden beträgt. Wenn der Client nicht auf keep alives des Servers antwortet, wird die Verbindung geschlossen. Wenn alle Verbindungen mit einem bestimmten Clientprozess geschlossen werden, bereinigt der Server ausstehende Kontexthandles und führt sie aus.