这是我将最后一个错误放入缓冲区的代码,但我不知道如何将 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 释放或重用。如果您需要记住该消息,则必须将其复制到您自己的缓冲区中。