Поделиться через


Метод ISurrogate::FreeSurrogate (objidl.h)

Выгружает сервер DLL.

Синтаксис

HRESULT FreeSurrogate();

Возвращаемое значение

Этот метод может возвращать стандартные возвращаемые значения E_UNEXPECTED, E_FAIL и S_OK.

Комментарии

COM вызывает FreeSurrogate , если в суррогатном процессе больше нет серверов DLL. При вызове FreeSurrogate метод должен должным образом отозвать все фабрики классов, зарегистрированные в суррогате, а затем вызвать выход суррогатного процесса.

Суррогатные процессы должны периодически вызывать функцию CoFreeUnusedLibraries для выгрузки серверов DLL, которые больше не используются. Суррогатный процесс берет на себя эту ответственность, которая обычно является ответственностью клиента. CoFreeUnusedLibraries вызывает функцию DllCanUnloadNow на всех загруженных серверах DLL. Так как CoFreeUnusedLibraries зависит от существования и правильной реализации DllCanUnloadNow на серверах DLL, не гарантируется выгрузка всех серверов DLL, которые должны быть выгружены . Не каждый сервер реализует DllCanUnloadNow, и эта функция ненадежна для библиотек DLL со свободным потоком. Кроме того, суррогат не может быть проинформирован о том, что все серверы DLL исчезли. Однако COM может определить, когда все серверы DLL были выгружены, а затем вызовет метод FreeSurrogate .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header objidl.h (включая ObjIdl.h)

См. также раздел

DllSurrogate

ISurrogate

Написание пользовательского суррогата