coGetApartmentType 函数 (combaseapi.h)
返回当前单元类型和类型限定符。
语法
HRESULT CoGetApartmentType(
[out] APTTYPE *pAptType,
[out] APTTYPEQUALIFIER *pAptQualifier
);
参数
[out] pAptType
APTTYPE 枚举值,该值指定当前单元的类型。
[out] pAptQualifier
APTTYPEQUALIFIER 枚举值,该值指定当前单元的类型限定符。
返回值
如果调用成功,则返回S_OK。 否则,将返回以下错误代码之一。
返回代码 | 说明 |
---|---|
|
调用无法成功查询当前单元类型和类型限定符。 |
|
向函数提供了无效的参数值。 具体而言,调用方将一个或两个参数设置为 NULL 。 |
|
在调用 CoGetApartmentType 之前,未在此线程上调用 CoInitialize 或 CoInitializeEx。 |
注解
在 Windows 7 之前的 Windows 平台上,必须在线程上执行以下操作才能查询单元类型:
- 调用 CoGetContextToken 以获取当前上下文令牌。
- 将上下文令牌强制转换为 IUnknown* 指针。
- 在该指针上调用 QueryInterface 方法以获取 IComThreadingInfo 接口。
- 调用 IComThreadingInfo 接口的 GetCurrentApartmentType 方法以获取当前单元类型。
在多线程方案中,存在一个争用条件,在执行上述操作序列时,可能会导致进程内发生访问冲突。 建议使用 CoGetApartmentType 函数,因为它不会引发访问冲突。
要求
最低受支持的客户端 | Windows 7 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | combaseapi.h (包括 Objbase.h) |
Library | Ole32.lib |
DLL | Ole32.dll |