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