1

申し訳ありませんが、再度質問する必要があります。私は今、解決策を何週間も何ヶ月も探しています。問題は、InvalidCast 例外 E_NOINTERFACE をいくつかのメソッドを呼び出すことによってのみスローされる COM インターフェイスを実装しており、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は何も知りません:(( plsは私を助けてください.

4

1 に答える 1

0

これは単なる推測です(しばらくの間):

C#相互運用コードでインターフェイスを宣言IUnkownして継承しないでください。ComCallableWrapperがそれを実装します。

于 2012-07-13T21:35:24.477 に答える