使用P/Invoke
调用本机函数时,有三种不同的返回/错误/状态代码类型。
第一个是我通过调用Marshal.GetLastWin32Error
静态方法获得的常见错误代码。
第二个是HRESULT
我在调用一些COM辅助函数时得到的。
第三个是NTSTATUS
我从ntdll.dll库调用本机apis时得到的。我有一个记录功能,将返回/错误/状态代码记录为十六进制数,然后当在日志中发现错误时,我需要使用谷歌找出实际错误是什么。
所以我想询问是否有一种很好的方法将这些返回/错误/状态代码转换为字符串(最好是英文)来记录返回/错误/状态字符串描述而不是数字?
有没有办法在LastError/HRESULT/NTSTATUS
代码之间进行转换,以便错误消息的语义保持不变?
答案 0 :(得分:0)
您可以使用errorlook tools来实现此目的。这个链接有点陈旧,我在旧的VC ++时代学到了这一点,你可以用它作为寻找现代工具的起点。
至于日志记录,我建议您保留原始错误代码。有意义的错误消息更容易阅读,但原始错误代码是搜索引擎的准确关键字。