我有以下COM方法需要从C#中调用,它会将一个字符串复制到提供的缓冲区
pchText
中(该字符串不一定是以零结尾的),并返回复制的字符数pcch
:HRESULT Next([in, out] long* pcch, [out, size_is(*pcch)] OLECHAR* pchText);
我该如何定义C#互操作的签名?
目前,我尝试了以下方法:
void Next(ref int pcch,
[MarshalAs(UnmanagedType.LPWStr, SizeParamIndex = 0)]
System.Text.StringBuilder pchText);
看起来它是有效的,但我不确定SizeParamIndex
是否对StringBuilder
有任何影响。
char[] pchText
。http://stackoverflow.com/q/25039290/2674222 - avoHRESULT Next([in] cch, [out] long* pcch, [out, size_is(cch), length_is(*pcch)] OLECHAR* pchText);
。这个方法属于哪个接口/对象? - acelent