coEnterServiceDomain 函数 (comsvcs.h)

用于输入代码,然后可以使用 COM+ 服务。

语法

HRESULT CoEnterServiceDomain(
  [in] IUnknown *pConfigObject
);

参数

[in] pConfigObject

指向 对象的 IUnknown 接口的指针,该接口由 CServiceConfig 类创建,其中包含要用于封闭代码中的服务的配置信息。

返回值

此方法可以返回标准返回值E_INVALIDARG、E_OUTOFMEMORY和E_FAIL,以及以下值。

返回代码 说明
S_OK
该方法已成功完成。
CO_E_SXS_CONFIG
CServiceConfig 对象的并行程序集配置无效。
CO_E_THREADPOOL_CONFIG
CServiceConfig 对象的线程池配置无效。 无法通过调用 CoEnterServiceDomain 重新配置线程单元模型。
CO_E_TRACKER_CONFIG
CServiceConfig 对象的跟踪器配置无效。
COMADMIN_E_PARTITION_ACCESSDENIED
调用方没有 COM+ 分区的访问权限。

注解

在对 CoEnterServiceDomainCoLeaveServiceDomain 的调用之间括起来的代码在其自己的上下文中运行,其行为就像是在上下文中创建的对象上调用的方法一样。 CoEnterServiceDomain 无法切换到不同的单元模型,因此封闭的代码在调用方单元和调用方线程中运行。 调用 CoEnterServiceDomain 时,尝试通过 CServiceConfig 对象更改单元模型是错误的。

CoEnterServiceDomain 首先创建一个上下文,该上下文由作为 pConfigObject 参数传递的 CServiceConfig 对象指定进行配置。 然后,将触发客户端和服务器端的策略,就像发生了方法调用一样。 然后将新上下文推送到上下文堆栈上,并成为当前上下文。

由于设计高效且不涉及线程封送处理,与等效的方法调用相比,使用 CoEnterServiceDomainCoLeaveServiceDomain 会显著减少开销。

CoEnterServiceDomainCoLeaveServiceDomain 在应用程序中特别有用,这些应用程序可以使用这些函数访问 COM+ 服务,而无需创建组件即可执行此操作。

CoEnterServiceDomainCoLeaveServiceDomain 对可以嵌套。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 comsvcs.h
Library ComSvcs.lib
DLL ComSvcs.dll

另请参阅

不带组件的 COM+ 服务

CServiceConfig

CoCreateActivity

CoLeaveServiceDomain