我想在 MIDL 中声明一个允许返回指针的 COM 接口(如在 中ID3D11Blob
)。我知道指针在 COM 中是一个特殊的东西,因为为 RPC 调用生成了存根。我不需要 RPC,但只想从 C# 访问 COM 服务器。问题是:我可以以 C# 存根返回的方式声明接口IntPtr
吗?我试图添加[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# 中成为单个参数?