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。 聚合目前不支持跨进程或跨计算机。 在进程外实例化对象时,如果 punkOuter 非 NULL,将返回CLASS_E_NOAGGREGATION。
[in] dwClsCtx
CLSCTX 枚举中的值。
[in, optional] reserved
保留供将来使用。
[in] dwCount
pResults 中的结构数。 此值必须大于 0。
[in, out] pResults
MULTI_QI结构的数组。 每个结构都有三个成员:请求的接口 (pIID) 的标识符、 (pItf) 返回接口指针的位置,以及对 QueryInterface (小时) 调用的返回值。
返回值
此函数可以返回E_INVALIDARG的标准返回值,以及以下值。
返回代码 | 说明 |
---|---|
|
表示成功。 |
|
指定的类未在注册数据库中注册,或者应用容器中不支持该类。 还可以指示在 CLSCTX 枚举中请求的服务器类型未注册,或者注册表中服务器类型的值已损坏。 |
|
此类不能作为聚合的一部分创建。 |
|
至少一个,但不是所有 在 pResults 数组中请求的接口已成功检索。 pResults 中每个MULTI_QI结构的 hr 成员使用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 |
标头 | combaseapi.h |
Library | Combase.lib |
DLL | Combase.dll |