Функция CoReleaseServerProcess (combaseapi.h)
Уменьшает глобальное число ссылок для каждого процесса.
Синтаксис
ULONG CoReleaseServerProcess();
Возвращаемое значение
Если серверное приложение должно инициировать очистку, функция возвращает значение 0; В противном случае функция возвращает ненулевое значение.
Комментарии
Серверы могут вызывать CoReleaseServerProcess для уменьшения глобального количества ссылок на каждый процесс, увеличенного с помощью вызова CoAddRefServerProcess.
Когда это число достигает нуля, OLE автоматически вызывает CoSuspendClassObjects, что предотвращает новые запросы активации. Это позволяет серверу отменять регистрацию объектов класса из различных потоков, не беспокоясь о том, что может прийти другой запрос на активацию. Новые запросы на активацию приводят к запуску нового экземпляра локального серверного процесса.
Самый простой способ использования этих функций локальным серверным приложением — вызвать CoAddRefServerProcess в конструкторе для каждого объекта экземпляра и в каждом из методов IClassFactory::LockServer , если параметр fLock имеет значение TRUE. Серверное приложение также должно вызывать CoReleaseServerProcess в деструкторе каждого объекта экземпляра и в каждом из методов IClassFactory::LockServer , если параметр fLock имеет значение FALSE. Наконец, серверное приложение должно проверка код возврата из CoReleaseServerProcess. Если возвращается значение 0, серверное приложение должно инициировать очистку. Обычно это означает, что сервер с несколькими потоками должен сигнализировать своим потокам о выходе из циклов сообщений и вызове CoRevokeClassObject и CoUninitialize.
Если эти API используются вообще, они должны вызываться как в экземплярах объекта, так и в методе LockServer , в противном случае серверное приложение может быть преждевременно завершено. Внутрипроцессные серверы обычно не должны вызывать CoAddRefServerProcess или CoReleaseServerProcess.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | combaseapi.h (включая Objbase.h) |
Библиотека | Ole32.lib |
DLL | Ole32.dll |