Функция 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, а также следующие значения.

Код возврата Описание
S_OK
Указывает на успешное завершение.
REGDB_E_CLASSNOTREG
Указанный класс не зарегистрирован в базе данных регистрации или класс не поддерживается в контейнере приложения. Также может указывать на то, что тип сервера, запрошенный в перечислении CLSCTX , не зарегистрирован или значения для типов серверов в реестре повреждены.
CLASS_E_NOAGGREGATION
Этот класс не может быть создан как часть статистического выражения.
CO_S_NOTALLINTERFACES
По крайней мере один, но не все интерфейсы, запрошенные в массиве pResults , были успешно получены. Элемент hr каждой из структур MULTI_QI в pResults указывает с S_OK или E_NOINTERFACE, был ли возвращен определенный интерфейс.
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

См. также раздел

CoCreateInstanceEx

Fusion (справочник по неуправляемых API)