[英]How to marshall COM object on the server side in visual c++?
我有一個進程外COM服務器,帶有一個創建另一個線程的ATL簡單對象。 新線程將需要調用ATL Simple對象。 由於ATL簡單對象和新線程是在不同的單元中創建的,因此需要在新線程中編組ATL簡單對象,否則將生成錯誤0x8001010e。
如何在服務器端封送COM對象,或者我丟失了什么?
非常感謝。
如果這個答案還遙遙無期,我深表歉意,但是我不清楚您要完成的目標。
我認為這是一個設計問題,而不是實現問題。 為什么未在新線程中/由新線程創建簡單對象?
如果希望跨線程通信,建議使用一種廣泛接受的模式(郵箱,事件)來向新線程的調度程序發出信號,以在下一次可用時執行操作。
您能詳細說明問題的細節嗎? 我很樂意為您提供幫助,因為這似乎就在我的小巷...
看看CoMarshalInterThreadInterfaceInStream 。 如果您用谷歌搜索,您會找到一些使用它的示例。
希望能有所幫助。
如果您熟悉ATL,建議您使用CComGITPtr 。 這是一個智能指針,可以將您的接口發布到“全局接口”表中,以后您可以從其他單元訪問它們。 但是就一個過程而言,GIT是全球性的。
還有一點-您是否為ATL簡單對象實現了代理存根? 如果您不構建代理存根,則您的ATL簡單對象應公開並實現IDispatch。 在其幫助下,代理將自動創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.