【问题标题】:Log calls to QueryInterface in managed COM server在托管 COM 服务器中记录对 QueryInterface 的调用
【发布时间】:2012-08-03 19:39:00
【问题描述】:

我按照示例 here 创建了一个 C# 进程外 COM 服务器。

我的服务器是由我无法控制的第三方应用程序使用的。为了找出他们在加载我的组件时需要哪些接口,我想记录他们对 QueryInterface 方法的所有调用。但是,因为我使用的是 .NET,所以我无法自己实现 IUnknown::QueryInterface - 它是由 CCW(COM 可调用包装器)自动提供的。

有没有办法为我的 C# COM 服务器记录对 QueryInterface 的所有调用?

【问题讨论】:

  • 您不能根据您提供的链接放置一些日志记录吗?并写入您自己的日志文件..?
  • 否,因为 QueryInterface 方法是由 .NET 包装器 (CCW) 自动提供的,我无法在 C# 中实现相应的 IUnknown 接口本身(不允许)。
  • 看这个链接checkout第二个答案QueryInterface可以做stackoverflow.com/questions/5077172/…
  • 我不想自己在另一个 COM 对象上调用 QueryInterface;相反,我提供了客户端调用我的 QueryInterface 实现的 COM 服务器。但是,因为我的 IUnknown::QueryInterface 实现是由 .NET Interop Framework 自动提供的,所以我无法在其中插入日志记录。还是谢谢
  • 你为什么想知道这个?它仅用于记录目的吗?还是代码必须根据请求的接口做出一些决定?

标签: c# .net com interface queryinterface


【解决方案1】:

很抱歉回答了我自己的问题,但经过几天的大量研究工作后,我发现自从 .NET 4 以来,一个人可以实现 ICustomQueryInterface 并提供他自己的 QueryInterface 托管实现。向其中添加日志记录将非常容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-25
    • 2021-08-26
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多