Функция CoCreateInstanceFromApp (combaseapi.h)
Создает экземпляр определенного класса на определенном компьютере из контейнера приложения.
Синтаксис
HRESULT CoCreateInstanceFromApp(
[in] REFCLSID Clsid,
[in, optional] IUnknown *punkOuter,
[in] DWORD dwClsCtx,
[in, optional] PVOID reserved,
[in] DWORD dwCount,
[in, out] MULTI_QI *pResults
);
Параметры
[in] Clsid
ИДЕНТИФИКАТОР CLSID создаваемого объекта.
[in, optional] punkOuter
Если этот параметр не равен NULL, указывает, что экземпляр создается как часть статистического выражения, а punkOuter будет использоваться в качестве управляемого IUnknown нового экземпляра. Агрегирование в настоящее время не поддерживается в нескольких процессах или на нескольких компьютерах. При создании экземпляра объекта вне процесса CLASS_E_NOAGGREGATION будет возвращено, если punkOuter имеет значение, отличное от NULL.
[in] dwClsCtx
Значение из перечисления CLSCTX .
[in, optional] reserved
Зарезервировано для последующего использования.
[in] dwCount
Количество структур в pResults. Это значение должно быть больше 0.
[in, out] pResults
Массив структур MULTI_QI . Каждая структура имеет три элемента: идентификатор запрошенного интерфейса (pIID), расположение для возврата указателя интерфейса (pItf) и возвращаемое значение вызова QueryInterface (hr).
Возвращаемое значение
Эта функция может возвращать стандартное возвращаемое значение E_INVALIDARG, а также следующие значения.
Код возврата | Описание |
---|---|
|
Указывает на успешное завершение. |
|
Указанный класс не зарегистрирован в базе данных регистрации или класс не поддерживается в контейнере приложения. Также может указывать на то, что тип сервера, запрошенный в перечислении CLSCTX , не зарегистрирован или значения для типов серверов в реестре повреждены. |
|
Этот класс не может быть создан как часть статистического выражения. |
|
По крайней мере один, но не все интерфейсы, запрошенные в массиве pResults , были успешно получены. Элемент hr каждой из структур MULTI_QI в pResults указывает с S_OK или E_NOINTERFACE, был ли возвращен определенный интерфейс. |
|
Ни один из интерфейсов, запрошенных в массиве pResults , не был успешно извлечен. |
Комментарии
Функция CoCreateInstanceFromApp аналогична функции CoCreateInstanceEx со следующими отличиями.
- Функция CoCreateInstanceFromApp считывает регистрации классов только из контекстов приложений и из куста реестра HKLM\SOFTWARE\Classes\CLSID.
- Предоставляются только встроенные классы, поддерживаемые в контейнере приложения. Попытки активировать неподдерживаемые классы, включая все классы, установленные сторонним кодом, а также многие классы Windows, приводят к ошибке REGDB_E_CLASSNOTREG.
- Функция CoCreateInstanceFromApp доступна для приложений Магазина Windows. Классические приложения могут вызывать эту функцию, но имеют те же ограничения, что и приложения Магазина Windows.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | combaseapi.h |
Библиотека | Combase.lib |
DLL | Combase.dll |