09/01/21 00:01:55
>>8
ComImport は印みたいなものであまり意味はないよ。
基本としてとりあえず2つ。
まずインターフェイスはこんな感じ
[ComImport]
[Guid("IID をここに")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
// ↑DirectShow らしいのでたぶんこう。違ったら変えて
interface IHoge {
// ヘッダ見て「同じ順番で」メソッドを並べる
// IUnknown メンバは必要なし
[PreserveSig] // ←戻り HRESULT がほしいときはこれを付ける。
// エラー時例外でいいならいらない
HRESULT Foo();
}
で、生成のコクラス
[ComImport]
[Guid("CLSID をここに")]
[CoClass]
class Hoge {}
これでこうやって使う。
IHoge hoge = (IHoge)new Hoge();
後は適当にスレッドモデルに気をつけて