InprocServer32
Registriert einen 32-Bit-Prozessserver und gibt das Threadingmodell der Wohnung an, in der der Server ausgeführt werden kann.
Registrierungseintrag
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
{CLSID}
InprocServer32
(Default) = path
ThreadingModel = value
Bemerkungen
ThreadingModel ist ein REG_SZ Wert, der das Threadingmodell angibt. Die möglichen Werte sind in der folgenden Tabelle aufgeführt.
Wert | BESCHREIBUNG |
---|---|
Apartment | Singlethread-Apartment |
Beide | Singlethread- oder Multithread-Apartment |
Kostenlos | Multithread-Wohnung |
Neutral | Neutrale Wohnung |
Sie müssen für jedes Objekt, das vom Prozessserver bereitgestellt wird, den gleichen Wert verwenden.
Wenn ThreadingModel nicht vorhanden ist oder nicht auf einen Wert festgelegt ist, wird der Server in das erste Apartment geladen, das im Prozess initialisiert wurde. Diese Wohnung wird manchmal als Standard Singlethread-Apartment (STA) bezeichnet. Wenn die erste STA in einem Prozess von COM und nicht durch einen expliziten Aufruf von CoInitialize oder CoInitializeEx initialisiert wird, wird sie als Host-STA bezeichnet. Beispielsweise erstellt COM eine Host-STA, wenn ein prozessinterner Server, der geladen werden soll, eine STA erfordert, aber derzeit keine STA im Prozess vorhanden ist.
Wenn möglich, wird der Prozessserver in derselben Wohnung geladen wie der Client, der ihn lädt. Wenn das Threadingmodell des Client-Apartments nicht mit dem angegebenen Modell kompatibel ist, wird der Server wie in der folgenden Tabelle angegeben geladen.
Threadingmodell des Servers | Der Apartmentserver wird in ausgeführt. |
---|---|
<\nangegeben> | Haupt-STA |
Beide | Dieselbe Wohnung wie der Client |
Kostenlos | Multithread-Wohnung |
Neutral | Neutrale Wohnung |
Wenn das Threadingmodell des Servers Apartment lautet, hängt das Apartment, in das der Server geladen wird, von der Wohnung ab, in der der Client ausgeführt wird, wie in der folgenden Tabelle angegeben.
Der Apartmentclient wird in ausgeführt. | Der Apartmentserver wird in ausgeführt. |
---|---|
Multithreaded | Host STA |
Neutral (im STA-Thread) | Dieselbe Wohnung wie der Client |
Neutral (im MTA-Thread) | Host STA |
COM kann auch ein Host-Multithread-Apartment (MTA) erstellen. Wenn ein Client in einem Singlethread-Apartment einen Prozessinternen Server anfordert, dessen Threadingmodell Free ist, wenn kein MTA im Prozess vorhanden ist, erstellt COM einen Host-MTA und lädt den Server in ihn.
Für einen 32-Bit-Prozessserver müssen die Schlüssel InprocHandler32, InprocServer, InprocServer32 und Insertable registriert werden. Der Eintrag InprocServer wird nur aus Gründen der Abwärtskompatibilität benötigt. Wenn sie fehlt, funktioniert die Klasse weiterhin, kann aber nicht in 16-Bit-Anwendungen geladen werden.
Wenn ein Container die Registrierung nach einem Prozessserver durchsucht, hat die 16-Bit-Version Priorität mit einem 16-Bit-Container, und die 32-Bit-Version hat Priorität mit einem 32-Bit-Container.
Zugehörige Themen