在我的 C# 代码中,我希望能够记录COMExceptions 以便不仅输出HRESULTs 的十六进制表示(例如,0x80004005),而且输出相应的 WinError.h 定义符号(例如E_FAIL)。
如果我调用ToString()异常参考,则只有十六进制表示。
是否有一种内置方法可以为对象内部的值获取类似E_FAIL人类可读的常量?HRESULTCOMException
在我的 C# 代码中,我希望能够记录COMExceptions 以便不仅输出HRESULTs 的十六进制表示(例如,0x80004005),而且输出相应的 WinError.h 定义符号(例如E_FAIL)。
如果我调用ToString()异常参考,则只有十六进制表示。
是否有一种内置方法可以为对象内部的值获取类似E_FAIL人类可读的常量?HRESULTCOMException
像这样使用COMException'HResult属性
unchecked
{
var msg = Marshal.GetExceptionForHR((int)0x80004005).Message;
}
看这里 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms679351%28v=vs.85%29.aspx在 FORMAT_MESSAGE_FROM_SYSTEM。它返回有关传递的错误代码的人类可读消息。