是否有一种内置的方法将HRESULT表示为winerror.h常量,如E_FAIL



在我的C#代码中,我希望能够记录COMExceptions,这样不仅可以输出HRESULTs的十六进制表示(例如,0x80004005),还可以输出相应的WinError.h定义符号(例如E_FAIL)。

如果我在异常引用上调用ToString(),那么只有十六进制表示。

有没有一种内置的方法可以为COMException对象中的HRESULT值获取类似E_FAIL的人类可读常量?

使用COMExceptionHResult属性

unchecked
{
    var msg = Marshal.GetExceptionForHR((int)0x80004005).Message;
}

看这里-http://msdn.microsoft.com/en-us/library/windows/desktop/ms679351%28v=vs.85%29.aspxFORMAT_MESSAGE_FROM_SYSTEM。它返回有关传递的错误代码的可读信息。

最新更新