Функция CoGetDefaultContext (combaseapi.h)
Извлекает ссылку на контекст по умолчанию указанного объекта.
Синтаксис
HRESULT CoGetDefaultContext(
[in] APTTYPE aptType,
[in] REFIID riid,
[out] void **ppv
);
Параметры
[in] aptType
Тип квартиры контекста по умолчанию, который запрашивается. Этот параметр может принимать одно из указанных ниже значений.
Значение APTTYPE APTTYPE_STA (0) не поддерживается. Процесс может содержать несколько однопоточных квартир, каждый из которых имеет собственный контекст, поэтому CoGetDefaultContext не может определить, какой sta представляет интерес. Таким образом, эта функция возвращает E_INVALIDARG, если указан APTTYPE_STA.
[in] riid
Идентификатор интерфейса (IID) интерфейса, запрашиваемого в контексте по умолчанию. Как правило, вызывающий объект запрашивает IID_IObjectContext. Контекст по умолчанию не поддерживает все интерфейсы контекста обычных объектов.
[out] ppv
Ссылка на интерфейс, заданный riid в контексте по умолчанию. Если компонент объекта не настроен (то есть компонент объекта не импортирован в приложение COM+) или если функция CoGetDefaultContext вызывается из конструктора или метода IUnknown , этому параметру присваивается указатель NULL .
Возвращаемое значение
Этот метод может возвращать следующие значения.
Код возврата | Описание |
---|---|
|
Метод завершился успешно. |
|
Один из параметров недопустим. |
|
Вызывающий объект не находится в инициализированной квартире. |
|
Контекст объекта не поддерживает интерфейс, заданный riid. |
Комментарии
Каждый com-объект имеет особый контекст, который называется контекстом по умолчанию. Контекст по умолчанию отличается от всех других контекстов, отличных от контекстов по умолчанию в квартире, так как он не предоставляет службы среды выполнения. Он не поддерживает все интерфейсы контекста обычных объектов.
Контекст по умолчанию также используется экземплярами ненастроенных com-компонентов (т. е. компонентов, которые не были частью приложения COM+), когда они создаются из объекта, который не поддерживает их потоковую модель. Иными словами, если COM-объект создает экземпляр ненастроенного компонента и новый объект не может быть добавлен в контекст его создателя из-за его потоковой модели, новый объект добавляется в контекст по умолчанию объекта, поддерживающего его потоковую модель.
Объект никогда не должен передавать ссылку IObjectContext другому объекту. Если передать ссылку IObjectContext другому объекту, она больше не будет допустимой.
Когда объект получает ссылку на IObjectContext, он должен освободить объект IObjectContext после завершения работы с ним.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | combaseapi.h |
Библиотека | Ole32.lib |
DLL | Ole32.dll |