是否有可用的工具挂钩Windows COM运行时? 我希望能够看到所有创建的实例,查看其接口的查询,方法调用等。
谢谢!
答案 0 :(得分:4)
你可以试试Jonas Blunck的COMTrace - 我不确定它是否适用于Windows 7,但值得一试。
答案 1 :(得分:1)
答案 2 :(得分:1)
监视你想要的东西你需要挂钩到系统dll并在你查询的接口上注入你的盲委托人。不用说,这项任务有多复杂和容易出错,特别是如果考虑到许多实现者没有准确地遵循COM原则。但是,有些应用程序是出于自己的目的而这样做,而不会暴露这个功能。
如果你真的想这样做 - 看看这些:
答案 3 :(得分:0)
使用进程内COM服务器几乎没有任何东西可以挂钩 - 消费者调用CoCreateInstance()或CoGetClassObject()就可以了。其余所有内容都在COM对象实现中完成。您可能希望查看ATL源以查看它通常如何工作 - 例如,当使用者调用QueryInterface()时,调用直接转到相应的对象,并且对象本身是观察该调用的唯一实体。
这不是很幸运,但却是如何实现进程内COM服务器的直接结果。开发人员可以使用Process Monitor来注意对应于ClassId-> Dll映射发现的注册表访问以及COM对象内的大量跟踪,以查看正在发生的事情。 ATL有很多有用的东西(比如COM_INTERFACE_ENTRY_FUNC_BLIND宏)来包含跟踪。