Freigeben über


Entladen eines Servers mit herausragenden Kontexthandles

In der Regel war das Entladen einer DLL, die RPC-Aufrufe mithilfe von Kontexthandles verwaltet, ohne zuerst den Hostingprozess zu beenden, problematisch. Dies liegt daran, dass die Herunterlaufroutine nicht mehr gültig ist, wenn die DLL entladen wird. Wenn ein Client mit einem zuvor geöffneten Kontexthandle fehlschlägt und die RPC-Laufzeit versucht, das Kontexthandle zu schließen, verstößt der Versuch, den heruntergefahrenen Routinezugriff aufzurufen, und der Server stürzt ab.

Ab Windows XP wurde eine neue API mit dem Namen RpcServerUnregisterIfEx hinzugefügt. RpcServerUnregisterIfEx schließt Kontexthandles, die durch die aufzuhebende Schnittstelle geöffnet werden. die RpcServerUnregisterIf-Funktion nicht. Die Verwendung von RpcServerUnregisterIfEx ist nicht erforderlich, wenn der gesamte Prozess heruntergefahren wird, aber es ist erforderlich, wenn eine oder mehrere DLLs, die die Herunterlaufroutinen hosten, entladen werden, während hervorragende Kontexthandles vorhanden sind.