Serverseitige Bereinigung
Stellen Sie sich das folgende Szenario vor:
Ein Client öffnet ein Kontexthandle und beendet dann entweder die Verbindung mit dem Server oder verliert diese. Wie erkennt der Server, dass der Client fehlgeschlagen ist und das Kontexthandle heruntergefahren werden sollte? Es gibt zwei Subscenarios: Einer davon ist, dass der Client ordnungsgemäß heruntergefahren wird. In diesem Fall wird der Server benachrichtigt, dass er heruntergefahren wird, und der Server kann sauber, einschließlich der Ausführung von Kontextausführungen. Wenn der Client nicht ordnungsgemäß heruntergefahren wird oder den Server nicht benachrichtigen kann, verwendet der Server keep alives, um zu bestimmen, ob der Client noch verfügbar ist. Auf der Serverseite hat die RpcMgmtSetComTimeout-Funktion keine Auswirkungen. Stattdessen verwendet der Server die globale Pro-Computer-Keep-Alive-Einstellung, die standardmäßig ungefähr zwei Stunden beträgt. Wenn der Client nicht auf die Keep Alives des Servers reagiert, wird die Verbindung geschlossen. Wenn alle Verbindungen mit einem bestimmten Clientprozess geschlossen werden, bereinigt der Server und führt ausstehende Kontexthandles aus.