我有一个如下定义的COM接口
interface Client : IUnknown
{
[id(1)] HRESULT GetSomething
(
enum SomeID someID,
[out] IUnknown **pUnknown
);
};如何使用IUnknown传递C#对象?
发布于 2014-05-13 00:03:53
如果不传递任何内容,就会返回接口指针。作为一个不透明的接口,IUnknown由所有COM接口实现。在C#中,它将是一个对象类型的对象,托管版本的“可以是任何东西”。基本代码如下所示:
object retval;
client.GetSomething(SomeID.Magic, out retval);然后由您将返回的对象转换为实际的接口类型,可能是基于魔术。您的问题完全没有提示它可能是什么,您必须阅读COM组件的文档才能有一个想法。
发布于 2014-05-12 23:31:59
假设您对对象一无所知,您可能会使用IntPtr来表示IUnknown,然后使用Marshal.GetUniqueObjectForIUnknown为其获取RCW
// Get some object
IntPtr ptrObj = IntPtr.Zero;
Client.GetSomething(someID, out ptrObj);
object obj = Marshal.GetUniqueObjectForIUnknown(ptrIProfferService);https://stackoverflow.com/questions/23614970
复制相似问题