Выгрузка сервера с необработанными дескрипторами контекста
Традиционно выгрузка DLL, которая обслуживает вызовы RPC с использованием контекстных дескрипторов, без предварительной остановки размещающего процесса, вызывает проблемы. Это связано с тем, что завершающая процедура больше не применяется при выгрузке библиотеки DLL. Если клиент с ранее открытым дескриптором контекста завершается ошибкой, и время выполнения RPC пытается закрыть дескриптор контекста, его попытка вызвать процедуру завершения вызывает нарушение доступа, и сервер завершает работу.
Начиная с Windows XP, добавлен новый API с именем RpcServerUnregisterIfEx. RpcServerUnregisterIfEx закрывает маркеры контекста, открытые незарегистрированным интерфейсом; Функция RpcServerUnregisterIf не выполняется. Использование RpcServerUnregisterIfEx не требуется при завершении всего процесса, но оно необходимо, если одна или несколько библиотек DLL, в которых размещаются процедуры завершения, выгружаются при наличии незавершенных дескрипторов контекста.