次の方法で共有


CoEnterServiceDomain 関数 (comsvcs.h)

COM+ サービスを使用できるコードを入力するために使用します。

構文

HRESULT CoEnterServiceDomain(
  [in] IUnknown *pConfigObject
);

パラメーター

[in] pConfigObject

CServiceConfig クラスから作成された、囲まれたコード内で使用されるサービスの構成情報を含む、オブジェクトの IUnknown インターフェイスへのポインター。

戻り値

このメソッドは、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+ パーティションに対するアクセス許可がありません。

注釈

CoEnterServiceDomain と CoLeaveServiceDomain の呼び出しの間で囲まれたコードは、独自のコンテキストで実行され、コンテキスト内で作成されたオブジェクトで呼び出されるメソッドであるかのように動作します。 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