簡體   English   中英

如何在Visual C ++中在服務器端封送COM對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM