CoGetDefaultContext 函数 (combaseapi.h)
检索对指定单元的默认上下文的引用。
语法
HRESULT CoGetDefaultContext(
[in] APTTYPE aptType,
[in] REFIID riid,
[out] void **ppv
);
参数
[in] aptType
所请求的默认上下文的单元类型。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
调用方的公寓。 |
|
当前进程的多线程单元。 |
|
当前进程的中性单元。 |
|
当前进程的main单线程单元。 |
不支持 APTTYPE 值APTTYPE_STA (0) 。 一个进程可以包含多个单线程单元,每个单元都有自己的上下文,因此 CoGetDefaultContext 无法确定哪个 STA 感兴趣。 因此,如果指定了APTTYPE_STA,此函数将返回E_INVALIDARG。
[in] riid
接口标识符 (在默认上下文中请求的接口的 IID) 。 通常,调用方请求IID_IObjectContext。 默认上下文不支持所有正常的对象上下文接口。
[out] ppv
对默认上下文中 riid 指定的接口的引用。 如果对象的组件未配置, (也就是说,对象的组件尚未导入 COM+ 应用程序) ,或者如果从构造函数或 IUnknown 方法调用 CoGetDefaultContext 函数,则此参数设置为 NULL 指针。
返回值
此方法可以返回以下值。
返回代码 | 说明 |
---|---|
|
该方法已成功完成。 |
|
其中一个参数无效。 |
|
调用方不在初始化的单元中。 |
|
对象上下文不支持 riid 指定的接口。 |
注解
每个 COM 单元都有一个称为默认上下文的特殊上下文。 默认上下文不同于单元中所有其他非默认上下文,因为它不提供运行时服务。 它不支持所有常规对象上下文接口。
默认上下文也由未配置的 COM 组件的实例使用, (也就是说,从不支持其线程模型的单元创建的 COM+ 应用程序) 的组件。 换句话说,如果 COM 对象创建了未配置的组件的实例,并且由于其线程模型而无法将新对象添加到其创建者的上下文中,则会将新对象添加到支持其线程模型的单元的默认上下文中。
对象不应将 IObjectContext 引用传递给另一个对象。 如果将 IObjectContext 引用传递给另一个对象,则它不再是有效的引用。
当对象获取对 IObjectContext 的引用时,它必须在使用完 IObjectContext 对象时释放该对象。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | combaseapi.h |
Library | Ole32.lib |
DLL | Ole32.dll |