2012-08-03 50 views
1

我按照示例here創建了一個C#進程外COM服務器。將日誌呼叫記錄到Managed COM服務器的QueryInterface

我的服務器是從我無法控制的第三方應用程序中使用的。爲了找到他們在加載我的組件時要求的接口,我想將他們的所有調用記錄到QueryInterface方法中。但是,因爲我使用.NET,所以我無法自己實現IUnknown :: QueryInterface - 而是由CCW(COM可調用包裝器)自動提供。

有沒有辦法記錄我的C#COM服務器的所有對QueryInterface的調用?

+0

難道你不能根據你提供的鏈接進行一些日誌記錄..?並寫入您自己的日誌文件..? – MethodMan 2012-08-03 19:43:35

+0

不,因爲QueryInterface方法是由.NET包裝器(CCW)自動提供的,我不能在C#中實現相應的IUnknown接口本身(不允許)。 – 2012-08-03 19:45:49

+0

看看這個鏈接結帳第二個答案QueryInterface可以做 http://stackoverflow.com/questions/5077172/how-do-i-use-marshal-queryinterface – MethodMan 2012-08-03 19:46:53

回答

1

我很抱歉回答我自己的問題,但經過一些非常密集的研究工作後,我發現自.NET 4以來,可以實現ICustomQueryInterface並提供他自己的QueryInterface的管理實現。向它添加日誌記錄將非常簡單。