Функция CoRegisterClassObject (combaseapi.h)
Регистрирует объект класса EXE с помощью OLE, чтобы другие приложения могли подключиться к нему.
Синтаксис
HRESULT CoRegisterClassObject(
[in] REFCLSID rclsid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwClsContext,
[in] DWORD flags,
[out] LPDWORD lpdwRegister
);
Параметры
[in] rclsid
Идентификатор CLSID, который требуется зарегистрировать.
[in] pUnk
Указатель на интерфейс IUnknown в объекте класса, доступность которого публикуется.
[in] dwClsContext
Контекст, в котором выполняется исполняемый код. Сведения об этих значениях контекста см. в перечислении CLSCTX .
[in] flags
Указывает, как устанавливаются подключения к объекту класса. Сведения об этих флагах см. в перечислении REGCLS .
[out] lpdwRegister
Указатель на значение, определяющее зарегистрированный объект класса; позже используется функцией CoRevokeClassObject для отмены регистрации.
Возвращаемое значение
Эта функция может возвращать стандартные возвращаемые значения E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.
Код возврата | Описание |
---|---|
|
Объект класса успешно зарегистрирован. |
Комментарии
При запуске приложения объектов EXE должны вызывать CoRegisterClassObject . Его также можно использовать для регистрации внутренних объектов для использования в том же EXE-файле или другом коде (например, библиотеках DLL), который использует EXE. Только приложения объектов EXE вызывают CoRegisterClassObject. Обработчики объектов или приложения объектов DLL не вызывают эту функцию. Вместо этого они должны реализовать и экспортировать функцию DllGetClassObject .
При запуске многократно используемое приложение объекта EXE должно создать объект класса (с интерфейсом IClassFactory ) и вызвать CoRegisterClassObject , чтобы зарегистрировать объект класса. Объектные приложения, поддерживающие несколько разных классов (например, несколько типов встраиваемых объектов), должны выделять и регистрировать для каждого из них отдельный объект класса.
Несколько регистраций одного объекта класса являются независимыми и не создают ошибку. Каждая последующая регистрация дает уникальный ключ в lpdwRegister.
Несколько приложений интерфейса документов (MDI) должны регистрировать свои объекты класса. Приложения с одним интерфейсом документов (SDI) должны регистрировать свои объекты класса только в том случае, если их можно запустить с помощью параметра /Embedding .
Сервер для объекта класса должен вызвать CoRevokeClassObject , чтобы отозвать объект класса (удалить его регистрацию), если выполняются все следующие условия:
- Экземпляры определения объекта отсутствуют.
- Для объекта класса нет блокировок.
- Приложение, предоставляющее службы для объекта класса, не находится под контролем пользователя (не отображается для пользователя на экране).
В Windows Server 2003, если приложение com-объекта зарегистрировано в качестве службы, COM проверяет регистрацию. COM гарантирует, что идентификатор процесса службы в диспетчере управления службами (SCM) совпадает с идентификатором процесса регистрации. В противном случае COM не сможет выполнить регистрацию. Если приложение объекта COM выполняется в системной учетной записи без раздела реестра, COM обрабатывает удостоверение приложения объектов как запускающего пользователя.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | combaseapi.h (включая Objbase.h) |
Библиотека | Ole32.lib |
DLL | Ole32.dll |