次の方法で共有


InprocServer32

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

レジストリ エントリ

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

解説

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

Value 説明
アパート シングルスレッド アパートメント
両方 シングルスレッドまたはマルチスレッド アパートメント
Free マルチスレッド アパートメント
ニュートラル ニュートラル アパートメント

 

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

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

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

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

 

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

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

 

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

32 ビットのインプロセス サーバーの場合、InprocHandler32InprocServerInprocServer32、および Insertable キーを登録する必要があります。 InprocServer エントリは、下位互換性のためにのみ必要です。 これが欠落している場合でも、クラスは動作しますが、16 ビット アプリケーションに読み込むことはできません。

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

InprocServer