如何使用C#将IUnknown参数传递给COM接口?

如何使用C#将IUnknown参数传递给COM接口?,c#,com,iunknown,com-interface,C#,Com,Iunknown,Com Interface,我有一个这样定义的COM接口 interface Client : IUnknown { [id(1)] HRESULT GetSomething ( enum SomeID someID, [out] IUnknown **pUnknown ); }; 如何使用C#传递IUnknown对象?假设您对该对象一无所知,您可能会使用IntPtr表示IUnknown,然后使用以下方法获取其RCW: 假设您对该对象一无所知,您可能会使用IntP

我有一个这样定义的COM接口

interface Client : IUnknown
{
    [id(1)] HRESULT GetSomething
    (
        enum SomeID someID,
        [out] IUnknown  **pUnknown
    );
};
如何使用C#传递
IUnknown
对象?

假设您对该对象一无所知,您可能会使用IntPtr表示IUnknown,然后使用以下方法获取其RCW:

假设您对该对象一无所知,您可能会使用IntPtr来表示IUnknown,然后使用以下方法为其获取RCW:


您不传递任何内容,它返回接口指针。IUnknown是一个不透明的接口,由所有COM接口实现。在C#中,它将是object类型的对象,即“可以是任何东西”的托管版本。基本代码如下所示:

object retval;
client.GetSomething(SomeID.Magic, out retval);

然后由您将返回的对象转换为实际的接口类型,可能是基于Magic。您的问题没有给出任何提示,您必须阅读COM组件的文档才能有一个想法。

如果没有传递任何内容,它将返回一个接口指针。IUnknown是一个不透明的接口,由所有COM接口实现。在C#中,它将是object类型的对象,即“可以是任何东西”的托管版本。基本代码如下所示:

object retval;
client.GetSomething(SomeID.Magic, out retval);
然后由您将返回的对象转换为实际的接口类型,可能是基于Magic。您的问题没有给出任何提示,您必须阅读COM组件的文档才能有一个想法