Метод IObjectContext::CreateInstance (comsvcs.h)
Создает объект с использованием контекста текущего объекта.
Синтаксис
HRESULT CreateInstance(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID *ppv
);
Параметры
[in] rclsid
CLSID типа объекта для создания экземпляра.
[in] riid
Любой интерфейс, реализованный объектом, который требуется создать.
[out] ppv
Ссылка на запрошенный интерфейс в новом объекте. Если создание экземпляра завершается сбоем, этому параметру присваивается значение NULL.
Возвращаемое значение
Этот метод может возвращать следующие значения.
Код возврата | Описание |
---|---|
|
Метод завершился успешно. |
|
Компонент, указанный clsid, не зарегистрирован в качестве COM-компонента. |
|
Недостаточно памяти для создания экземпляра объекта. |
|
Аргумент, передаваемый в параметре ppvObj , недопустим. |
|
Произошла непредвиденная ошибка. Это может произойти, если один объект передает свой указатель IObjectContext другому объекту, а другой объект вызывает CreateInstance с помощью этого указателя. Указатель IObjectContext недопустим вне контекста объекта, который его первоначально получил. |
Комментарии
CreateInstance создает COM-объект. Однако объект будет иметь контекст только в том случае, если его компонент зарегистрирован с помощью COM+.
При создании объекта с помощью CreateInstance контекст нового объекта является производным от IObjectContext текущего объекта и декларативных свойств компонента нового объекта. Новый объект всегда выполняется в том же действии, что и созданный объект. Если текущий объект имеет транзакцию, атрибут транзакции компонента нового объекта определяет, выполняется ли новый объект в область этой транзакции.
Если параметр атрибута транзакции компонента либо требует транзакции, либо поддерживает транзакции, новый объект наследует транзакцию своего создателя. Если атрибут транзакции компонента требует новой транзакции, COM+ инициирует новую транзакцию для нового объекта. Если атрибут транзакции компонента не поддерживает транзакции, новый объект не выполняется ни в одной транзакции.
CreateInstance всегда возвращает интерфейс IUnknown для вновь созданного объекта. Необходимо немедленно привести возвращаемое значение к интерфейсу, через который требуется взаимодействовать с новым объектом. Идентификатор интерфейса, передаваемый в параметре riid , не обязательно должен быть тем же интерфейсом, к которому вы прививал возвращаемое значение, но это должен быть интерфейс, реализованный объектом, экземпляр которого вы создаете.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | comsvcs.h |