[英]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.