Je sais que je peux enregistrer mon objet COM à consommer inproc
(via l'enregistrement com standard) et outproc
(via dcom) hébergé dans un processus dédié dllhost.exe.Héberger un serveur COM à l'intérieur de mon processus
Mais est-il possible d'avoir mon objet COM exécuté dans un external process
pour le consommateur (comme dcom) seulement pas hébergé dans dllhost plutôt mon propre processus?
Mon but est d'avoir un processus (service windows) exécutant ma logique, et d'héberger juste un objet COM afin que d'autres processus puissent communiquer avec moi en utilisant CoCreateInstance
simple de l'objet COM. C'est possible?
S'il vous plaît ne pas offrir d'autres protocoles comme une réponse, s'il n'est pas possible d'héberger COM de cette façon est une réponse suffisante.
Merci!
COM a la notion de DLL Surrogates: https://msdn.microsoft.com/en-us/library/windows/desktop/ms695225.aspx. dllhost.exe est le processus de substitution par défaut, vous pouvez en écrire un personnalisé: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682432.aspx. Cependant lorsque vous dites "héberger un objet COM pour que d'autres processus puissent communiquer avec moi en utilisant CoCreateInstance simple de l'objet COM", vous n'avez pas besoin de toute cette plomberie (complexe). Hébergez et enregistrez simplement l'objet COM à partir de votre service Windows. C'est ce qu'on appelle un serveur COM out-of-process. –
Lorsque vous créez un nouveau projet Visual Studio à l'aide du modèle 'ATL project', l'assistant vous demande de choisir si vous souhaitez l'héberger dans dll, exe ou service exe. C'est probablement le moyen le plus facile de commencer. Voir le deuxième paragraphe ici: https://msdn.microsoft.com/en-us/library/windows/desktop/ms683835(v=vs.85).aspx –
@SimonMourier - si vous allez déplacer votre commentaire à une réponse Je vais taguer est la réponse. Merci quand même!! – sternr