繁体   English   中英

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

[英]How to pass IUnknown argument to a COM interface using C#?

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

interface Client : IUnknown
{
    [id(1)] HRESULT GetSomething
    (
        enum SomeID someID,
        [out] IUnknown  **pUnknown
    );
};

如何使用C#传递IUnknown对象?

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

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

然后由您决定将返回的对象转换为实际的接口类型,可能基于Magic 您的问题丝毫没有暗示任何可能,您必须阅读COM组件的文档才能有一个主意。

假设你不知道对象什么 ,你可能会使用一个IntPtr来表示IUnknown和然后得到一个RCW它使用Marshal.GetUniqueObjectForIUnknown

// Get some object

IntPtr ptrObj = IntPtr.Zero;


Client.GetSomething(someID, out ptrObj);
object obj = Marshal.GetUniqueObjectForIUnknown(ptrIProfferService);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM