我知道我可以註冊我的COM對象以便在專用的dllhost.exe進程中託管inproc
(通過標準com註冊)和outproc
(通過dcom)。在我的進程中託管一個COM服務器
但是有可能讓我的COM對象運行在消費者(如dcom)的external process
中,而不是託管在dllhost中,而不是我自己的進程?
我的目標是擁有一個運行我的邏輯的進程(windows服務),並且只需託管一個COM對象,以便其他進程可以使用COM對象的簡單CoCreateInstance
與我進行通信。可能嗎?
請不要提供其他協議作爲答案,如果它不可能以這種方式託管COM是足夠的答案。
謝謝!
COM具有DLL Surrogates的概念:https://msdn.microsoft.com/en-us/library/windows/desktop/ms695225.aspx。 dllhost.exe是默認的代理過程,您可以編寫自定義代碼:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682432.aspx。但是當你說「託管一個COM對象,以便其他進程可以使用COM對象的簡單CoCreateInstance與我進行通信」時,你不需要所有(複雜)管道。只需託管並註冊Windows服務中的COM對象。它被稱爲Out-Of-Process COM服務器。 –
當您使用'ATL項目'模板創建新的Visual Studio項目時,嚮導會要求您選擇是否將其託管在dll,exe或service exe中。這可能是最簡單的方法。請參閱第二段:https://msdn.microsoft.com/en-us/library/windows/desktop/ms683835(v=vs.85).aspx –
@SimonMourier - 如果您將評論移至回覆我會標記是答案。不管怎麼說,還是要謝謝你!! – sternr