次の方法で共有


InprocServer32

32 ビットのインプロセス サーバーを登録し、サーバーが実行できるアパートメントのスレッド モデルを指定します。

レジストリ エントリ

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
   {CLSID}
      InprocServer32
         (Default) = path
         ThreadingModel = value

備考

ThreadingModel は、スレッドモデルを指定する REG_SZ 値です。 使用可能な値を次の表に示します。

価値 形容
アパート シングル スレッド アパートメント
両方とも シングル スレッドまたはマルチスレッド アパートメント
無料 マルチスレッド アパートメント
ニュートラル ニュートラル アパートメント

 

インプロセス サーバーによって提供されるすべてのオブジェクトに同じ値を使用する必要があります。

ThreadingModel が存在しないか、値に設定されていない場合、サーバーはプロセスで初期化された最初のアパートメントに読み込まれます。 このアパートメントは、メインシングルスレッドアパートメント(STA)と呼ばれることもあります。 プロセス内の最初の STA が COM によって初期化された場合、CoInitializeまたは CoInitializeEx明示的な呼び出しではなく、ホスト STA と呼ばれます。 たとえば、読み込むインプロセス サーバーに STA が必要だが、現在プロセスに STA がない場合、COM はホスト STA を作成します。

可能な限り、インプロセス サーバーは、それを読み込むクライアントと同じアパートメントに読み込まれます。 クライアント アパートメントのスレッド モデルが指定されたモデルと互換性がない場合は、次の表に示すようにサーバーが読み込まれます。

サーバーのスレッド モデル アパートメント サーバーが実行されている
指定 <\n> メイン STA
両方とも クライアントと同じアパートメント
無料 マルチスレッド アパートメント
ニュートラル ニュートラル アパートメント

 

サーバーのスレッド モデルが Apartment の場合、サーバーが読み込まれるアパートメントは、次の表に示すように、クライアントが実行されているアパートメントによって異なります。

アパートメント クライアントは次で実行されます アパートメント サーバーが実行されている
マルチ スレッド ホスト STA
ニュートラル (STA スレッド上) クライアントと同じアパートメント
ニュートラル (MTA スレッド上) ホスト STA

 

COM では、ホスト マルチスレッド アパートメント (MTA) を作成することもできます。 シングルスレッド アパートメント内のクライアントが、プロセスに MTA がない場合にスレッド モデルが Free であるインプロセス サーバーを要求した場合、COM はホスト MTA を作成してサーバーを読み込みます。

32 ビットインプロセス サーバーの場合、InprocHandler32InprocServerInprocServer32、および insertableキー登録する必要があります。 InprocServer エントリは、下位互換性のためにのみ必要です。 不足している場合、クラスは引き続き機能しますが、16 ビット アプリケーションでは読み込めません。

コンテナーがレジストリでインプロセス サーバーを検索している場合、16 ビット バージョンは 16 ビット コンテナーの優先順位を持ち、32 ビット バージョンは 32 ビット コンテナーの優先順位を持ちます。

InprocServer