CoCreateActivity 函数 (comsvcs.h)

创建一个活动以同步或异步批处理工作,该工作可使用 COM+ 服务而无需创建 COM+ 组件。

语法

HRESULT CoCreateActivity(
  [in]  IUnknown *pIUnknown,
  [in]  REFIID   riid,
  [out] void     **ppObj
);

参数

[in] pIUnknown

指向 对象的 IUnknown 接口的指针,该接口是从 CServiceConfig 类创建的,其中包含在 CoCreateActivity 创建的活动中要使用的服务的配置信息。

[in] riid

要通过 ppObj 参数返回的接口的 ID。 应始终IID_IServiceActivity此参数,以便返回指向 IServiceActivity 的指针。

[out] ppObj

指向活动对象的接口的指针。 活动对象通过调用 CoCreateActivity 自动创建。

返回值

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

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

注解

CoCreateActivity 创建一个活动对象,该对象用于将批处理工作提交到 COM+ 系统。 与活动关联的上下文完全由通过 pIUnknown 参数传递的 CServiceConfig 对象确定。

CoCreateActivity 使应用程序能够在批处理工作中使用 COM+ 服务,而无需创建组件即可使用这些服务。 除了通过不需要创建组件来减少开销外,使用 CoCreateActivity 还可以提供更高效的运行时环境,因为它允许环境支持应用程序范围的服务配置,而无需访问存储在 COM+ 注册数据库中的信息 (RegDB) 。

通过 CoCreateActivity 提交的批处理工作可以是同步的,也可以是异步的,可以在单线程单元 (STA) 或多线程单元 (MTA) 中运行。 使用的线程模型由通过 pIUnknown 参数传递的 CServiceConfig 对象的 IServiceThreadPoolConfig 接口确定。

CoCreateActivity 返回指向由调用 CoCreateActivity 创建的 对象的 IServiceActivity 接口的指针。 通过使用 IServiceActivity 的方法,可以确定批处理工作是同步完成还是异步完成。 批处理工作本身通过 IServiceCall 接口实现。

要求

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

另请参阅

不带组件的 COM+ 服务

CServiceConfig

CoEnterServiceDomain

CoLeaveServiceDomain

IServiceActivity

IServiceCall