Регистрация запущенного EXE-сервера
Когда запускается исполняемый сервер (EXE), он должен вызывать CoRegisterClassObject, который регистрирует CLSID для сервера в том, что называется таблицей классов (таблица, отличной от запущенной таблицы объектов). Если сервер зарегистрирован в таблице классов, он позволяет диспетчеру управления службами (SCM) определить, что не нужно запускать класс снова, так как сервер уже запущен. Только если сервер не указан в таблице классов, SCM проверка реестр для соответствующих значений и запустить сервер, связанный с заданным CLSID.
Передайте CoRegisterClassObject CLSID для класса и указатель на его интерфейс IUnknown. Клиенты, которые впоследствии вызывают CoGetClassObject с этим CLSID, получат указатель на запрошенный интерфейс, если безопасность не запрещает ее. (См. раздел Вспомогательные функции создания экземпляров для описания нескольких функций создания экземпляра и активации.)
Сервер для объекта класса должен вызвать CoRevokeClassObject , чтобы отозвать объект класса (удалить его регистрацию), если все из следующих значений имеют значение true:
- Существующие экземпляры определения объекта отсутствуют.
- На объекте класса нет блокировок.
- Приложение, предоставляющее службы объекту класса, не находится под контролем пользователя (не отображается пользователю на экране).
См. также