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

问题描述 投票:0回答:1

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

  1. 第一个是通过调用Marshal.GetLastWin32Error静态方法获得的常见错误代码。
  2. 第二个是HRESULT我在调用一些COM辅助函数时得到的。
  3. 第三个是从ntdll.dll库调用本机apis时得到的NTSTATUS。我有一个记录功能,将返回/错误/状态代码记录为十六进制数,然后当在日志中发现错误时,我需要使用谷歌找出实际错误是什么。

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

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

c# logging pinvoke
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.