ポインターを返すことができる MIDL で COM インターフェイスを宣言したいと考えています ( のようにID3D11Blob
)。RPC 呼び出し用にスタブが生成されるため、COM ではポインタが特別なものであることを理解しています。RPC は必要ありませんが、C# から COM サーバーにアクセスしたいだけです。IntPtr
問題は、C# スタブが?を返すような方法でインターフェイスを宣言できるかどうかです。[local]
ポインターを有効にするために追加しようとしましvoid
たが、それだけでは十分ではありません。
インターフェイスは、MIDL のように見える必要があります
[local] void *PeekData(void)
そしてC#のように
IntPtr PeekData()
これは可能ですか?もしそうなら、どのように?
前もって感謝します、クリストフ
編集:質問を言い換えると:なぜ
HRESULT GetData([in, out, size_is(*size)] BYTE data[], [in, out] ULONG *size);
なり
void GetData(ref byte, ref uint)
byte
C#で最初のパラメータが単一になるのを避けるにはどうすればよいですか?