Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Создает объект с использованием контекста текущего объекта.
Синтаксис
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 |