CoCreateActivity 関数 (comsvcs.h)

COM+ コンポーネントを作成せずに COM+ サービスを使うことができる、同期または非同期のバッチ作業を実行するためのアクティビティを作成します。

構文

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

パラメーター

[in] pIUnknown

CoCreateActivity によって作成されたアクティビティ内で使用されるサービスの構成情報を含む、CServiceConfig クラスから作成された オブジェクトの IUnknown インターフェイスへのポインター。

[in] riid

ppObj パラメーターを使用して返されるインターフェイスの ID。 IServiceActivity へのポインターが返されるように、このパラメーターは常にIID_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