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 ビットのインプロセス サーバーの場合、InprocHandler32、InprocServer、InprocServer32、および Insertable キーを登録する必要があります。 InprocServer エントリは、下位互換性のためにのみ必要です。 これが欠落している場合でも、クラスは動作しますが、16 ビット アプリケーションに読み込むことはできません。
コンテナーがインプロセス サーバーのレジストリを検索している場合、16 ビット コンテナーでは 16 ビット バージョンが優先され、32 ビット コンテナーでは 32 ビット バージョンが優先されます。
関連トピック