我按照这里的示例创建了一个C#进程外COM服务器。
我的服务器是从我无法控制的第三方应用程序使用的。为了找出他们在加载我的组件时需要的接口,我想记录他们对QueryInterface方法的所有调用。但是,因为我使用的是.NET,所以我无法单独实现IUnknown::QueryInterface——它是由CCW(COM可调用包装器)自动提供的。
有没有一种方法可以记录我的C#COM服务器对QueryInterface的所有调用?
很抱歉回答了我自己的问题,但经过几天的深入研究,我发现自.NET 4以来,人们可以实现ICustomQueryInterface,并提供自己的托管QueryInterface实现。添加日志记录将非常容易。