【发布时间】:2011-05-03 15:40:40
【问题描述】:
这是我将最后一个错误放入缓冲区的代码,但我不知道如何将 IntPtr 转换为我可以读取的内容...我只是得到一个长数字。
/// Return Type: void
///pErrorCode: ABS_DWORD*
///ppErrorMessage: ABS_CHAR**
[System.Runtime.InteropServices.DllImportAttribute("bsapi.dll", EntryPoint = "ABSGetLastErrorInfo", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
public static extern void ABSGetLastErrorInfo(ref uint pErrorCode, ref System.IntPtr ppErrorMessage);
这是来自手册:
void ABSGetLastErrorInfo(
OUT ABS_DWORD *pErrorCode
OUT const ABS_CHAR **ppErrorMessage
)
描述 检索有关上一个 BSAPI 错误的附加信息,该错误发生在当前线程中。
ppErrorMessage 在输出时,它被设置为指向一个包含零终止的缓冲区 带有文本消息的字符串。
如果没有提供消息,它指向空字符串,所以调用者这样做 不需要检查它是否为NULL。
缓冲区由 BSAPI 管理;不要使用 ABSFree 来释放它。 请注意,缓冲区仅在执行其他 BSAPI 调用之前有效 在同一个线程中。在下一次调用之后,缓冲区可能会被释放或 被 BSAPI 重用。如果您需要记住该消息,则必须 将其复制到您自己的缓冲区中。
【问题讨论】: