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


Функция 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

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

CoAddRefServerProcess

CoSuspendClassObjects

IClassFactory::LockServer

Вспомогательные средства реализации сервера вне процесса