【发布时间】:2019-03-14 02:45:32
【问题描述】:
需要打电话
MMRESULT waveInGetErrorText(
MMRESULT mmrError,
LPTSTR pszText,
UINT cchText
);
来自 C# 代码。在 PINVOKE.net 上没有找到声明。 func的描述是here
MMRESULT 只是一个 uint 值。 0 - 没有错误。任何其他不超过 20 的值 - 都是错误。
尝试了很多模式。总是返回一个空字符串。
[DllImport("Winmm", EntryPoint = "waveInGetErrorText")]
public static extern uint waveInGetErrorText(uint mmrError, IntPtr pszText, uint cchText);
打电话时。
uint r = 12 // for example return value is 12
uint szErrorMessage = 128;
string errorMessage = new string(' ', (int) szErrorMessage);
IntPtr strPtr = Marshal.StringToBSTR(errorMessage);
r = waveInGetErrorText(r, strPtr, szErrorMessage);
返回字符串始终为空,保留 128 字节的空格。
尝试ref 和out 没有成功..
请问,知道为什么吗?
【问题讨论】:
-
你可以试试
public static extern uint waveInGetErrorText(uint mmrError, string pszText, uint cchText);和public static extern uint waveInGetErrorText(uint mmrError, StringBuilder pszText, uint cchText);吗? -
是
string还是StringBuilder? :) -
StringBuilder..