當我得到它是有三種方式來實現在COM編組:COM如何選擇如何編組接口?
- 類型庫編組
- 代理/存根編組
- 由對象實現IMarshal
現在怎麼做的組件消費者(用戶)選擇將使用哪一個?它是自己決定並使用首選方式,還是它調用一些內置函數並解決了它的問題?
我目前遇到以下情況:我的組件實現了自定義接口ICustomInterface
也由從另一家公司的一個組件來。我的組件沒有typelib,也沒有實現IMarshal。系統註冊表包含具有代理/存根的GUID的HKCR \ Interface {uuidof(ICustomInterface)} \ ProxyStubClsid32密鑰,該代理/存根可以跟蹤到該另一個公司提供的庫。
現在,當我的組件消費初始化我的組件從我的組件調用QueryInterface()請求IMarshal,當返回E_NOINTERFACE它只是什麼都不做。這是爲什麼 - 爲什麼不從其他公司的代理/存根庫啓動?
不,我沒有。我嘗試了所有合理設置的嚮導,但沒有聲明這樣的功能。我也爲這個名字谷歌搜索 - 沒有合理的匹配。可能是你拼錯了這個名字? – sharptooth 2009-11-12 09:05:41
我挖入我的舊代碼,發現盲查詢實際上是我自己的功能。 LOL ..使用這個宏http://msdn.microsoft.com/en-us/library/5b6w5bwx(VS.80).aspx – 2009-11-12 09:22:46
那麼,這是鉤住QI的一個很好的方式()。但這就是全部 - 這個函數被稱爲包含IMarshal的一組itersfaces,沒有明顯的原因。 – sharptooth 2009-11-12 09:43:49