如何在使用P / Invoke时记录有意义的错误消息

时间:2017-11-20 10:43:10

标签: c# logging pinvoke

使用P/Invoke调用本机函数时,有三种不同的返回/错误/状态代码类型。

  1. 第一个是我通过调用Marshal.GetLastWin32Error静态方法获得的常见错误代码。

  2. 第二个是HRESULT我在调用一些COM辅助函数时得到的。

  3. 第三个是NTSTATUS我从ntdll.dll库调用本机apis时得到的。我有一个记录功能,将返回/错误/状态代码记录为十六进制数,然后当在日志中发现错误时,我需要使用谷歌找出实际错误是什么。

  4. 所以我想询问是否有一种很好的方法将这些返回/错误/状态代码转换为字符串(最好是英文)来记录返回/错误/状态字符串描述而不是数字?

    有没有办法在LastError/HRESULT/NTSTATUS代码之间进行转换,以便错误消息的语义保持不变?

1 个答案:

答案 0 :(得分:0)

您可以使用errorlook tools来实现此目的。这个链接有点陈旧,我在旧的VC ++时代学到了这一点,你可以用它作为寻找现代工具的起点。

至于日志记录,我建议您保留原始错误代码。有意义的错误消息更容易阅读,但原始错误代码是搜索引擎的准确关键字。