【发布时间】:2013-11-28 11:01:39
【问题描述】:
我想在 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)
如何避免第一个参数在 C# 中变成单个 byte?
【问题讨论】:
标签: c# com marshalling midl