Partager via


InprocServer32

Inscrit un serveur in-process 32 bits et spécifie le modèle de threading de l’appartement dans lequel le serveur peut s’exécuter.

Entrée de Registre

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

Notes

ThreadingModel est une valeur REG_SZ la spécifie le modèle de thread. Les valeurs possibles sont indiquées dans le tableau suivant.

Valeur Description
Appartement Appartement à thread unique
Les deux Appartement monothread ou multithread
Gratuit Appartement multithread
Neutre Appartement neutre

 

Vous devez utiliser la même valeur pour chaque objet fourni par le serveur in-process.

Si ThreadingModel n’est pas présent ou n’est pas défini sur une valeur, le serveur est chargé dans le premier appartement qui a été initialisé dans le processus. Cet appartement est parfois appelé le main appartement à thread unique (STA). Si le premier STA d’un processus est initialisé par COM, plutôt que par un appel explicite à CoInitialize ou CoInitializeEx, il est appelé STA hôte. Par exemple, COM crée un STA hôte si un serveur in-process à charger nécessite une STA, mais qu’il n’existe actuellement aucune STA dans le processus.

Dans la mesure du possible, le serveur in-process est chargé dans le même appartement que le client qui le charge. Si le modèle de thread de l’appartement client n’est pas compatible avec le modèle spécifié, le serveur est chargé comme indiqué dans le tableau suivant.

Modèle de thread de serveur Le serveur d’appartement est exécuté dans
<\not spécifié> Sta principal
Les deux Même appartement que le client
Gratuit Appartement multithread
Neutre Appartement neutre

 

Si le modèle de thread du serveur est Apartment, l’appartement dans lequel le serveur est chargé dépend de l’appartement dans lequel le client s’exécute, comme indiqué dans le tableau suivant.

Le client Apartment est exécuté dans Le serveur d’appartement est exécuté dans
Multithread STA hôte
Neutre (sur le thread STA) Même appartement que le client
Neutre (sur le thread MTA) STA hôte

 

COM peut également créer un appartement multithread hôte (MTA). Si un client dans un appartement monothread demande un serveur in-process dont le modèle de threading est Gratuit quand il n’y a pas de MTA dans le processus, COM crée un MTA hôte et charge le serveur dans celui-ci.

Pour un serveur in-process 32 bits, les clés InprocHandler32, InprocServer, InprocServer32 et Insertable doivent être inscrites. L’entrée InprocServer est nécessaire uniquement pour la compatibilité descendante. Si elle est manquante, la classe fonctionne toujours, mais elle ne peut pas être chargée dans les applications 16 bits.

Si un conteneur recherche dans le Registre un serveur in-process, la version 16 bits a la priorité avec un conteneur 16 bits et la version 32 bits a priorité avec un conteneur 32 bits.

InprocServer