2009-08-01 53 views
0

..對於進程外服務器,還是我可以調用調度接口而不註冊代理/存根?「純」IDispatch接口是否需要代理/存根DLL?

有問題的接口是非常高的水平,所以性能是一個不是問題的問題,我可以使整個事情免註冊,這是一大利好

+0

所以你想使用標準封送拆分器爲你自動創建代理/存根封裝器。問題是你如何識別這個coclass的IDispatch被包裝而不是coclass的註冊表項? – wqw 2009-08-02 11:56:01

回答

1

我敢肯定,如果您將界面限制爲自動化兼容類型,則不需要提供自定義代理/存根dll。在這種情況下,系統可以使用自動封送器並且不需要任何額外的幫助。我相信自動化兼容類型是適合於VARIANT的類型,例如,簡單的POD類型,BSTR等。

我發現this KB article有自動封送器的一些討論,雖然它不是專門針對你的問題。它至少列出了兼容類型。它還提到您需要在組件的註冊中專門識別自動封送器,但根據我的經驗,這不是必需的 - 您的里程可能會有所不同。

最後,您可能還需要實現IProvideClassInfo;我通常使用ATL提供的實現。

0

你只需要一個代理/存根DLL,如果您的界面需要編組。這意味着如果您的COM服務器正在處理中,並且該接口未在公寓之間傳遞,並且您不會從.Net或任何其他需要編組的地方調用它,那麼您不需要代理/存根dll。