C#Com E_NOINTERFACE查询接口

时间:2012-07-13 21:32:39

标签: c# com

对不起,我得再问一次。我现在正在寻找一个解决方案。 问题是,只有通过调用InvalidCast Exception E_NOINTERFACE的几个方法实现了COM-Interface抛出,它告诉我必须实现IUnknown。 那我怎么能这样做呢?

我几乎尝试了一切...... 目前我有类似的东西

[ComImport,
 Guid("279AFA85-4981-11CE-A521-0020AF0BE560"),
 InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
 System.Security.SuppressUnmanagedCodeSecurity]

public interface IDirectSoundBuffer : IUnknown
{

...

[ComImport]
[Guid("00000000-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IUnknown
{
    void QueryInterface([In] ref Guid giid, [Out, MarshalAs(UnmanagedType.IUnknown, IidParameterIndex = 0)] out object ppvObject);
    [PreserveSig]
    uint AddRef();
    [PreserveSig]
    uint Release();
}

我真的不知道我可以尝试更多。我在很多不同的论坛上讨论过这个话题,但是noboboy知道任何事情:((请帮助我。

1 个答案:

答案 0 :(得分:0)

这只是猜测(因为它已经有一段时间了):

不要在C#interop代码中声明IUnkown并从中继承您的接口。 Com Callable Wrapper将为您实施。