分類:[C#]
2008/09/08(Mon) 09:52:57 編集(投稿者)
おはようございます。
C#でコーディングしており、C++で作成したフィルターを使うことになりました。
インターフェイスの取得などはエラーもなくうまくいっているのですが、
データの受け渡しがうまくいきません。
[StructLayout(LayoutKind.Sequential)]
public struct DataInf {
public int dataA;
public int dataB;
}
[ComVisible(true), ComImport,
Guid("*****"),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
public interface ITEST
{
int GetInfo(
[Out, MarshalAs(UnmanagedType.LPArray,ArraySubType=UnmanagedType.LPStruct)] out DataInf[] fi );
}
上記インターフェイスのGetInfoで、DataInf構造体ポインタ配列のポインタを取得しなくてはいけないのですが
GetInfoのfiの戻り値が配列数0になってしまいます(本当は配列数2が取れるはずなのですが・・・)。
「ネットなどを検索しているのですが、構造体ポインタ配列のポインタを取得する例が載っていない」+「C#経験少ない」
で解決策が見つかりません。
ご教授のほどよろしくお願いいたします。
ちなみにC++の場合は、
typedef struct DataInf_t {
int dataA;
int dataB;
} DataInf, *PDataInf;
ITEST : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE GetInfo(
/* [out] */ PDataInf **pppfi) = 0;
}
になっています。
開発環境は、
VS2005 C#
です。