2012-08-03 51 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的管理实现。向它添加日志记录将非常简单。