如何查找适当的Windows系统错误代码以在我的应用程序中使用?

我正在编写一个C#.NET 2.0应用程序,其中当预期通过SerialPort接收消息时。 如果帧未被接收(即超时)或被确定为无效,则需要使用SetLastError来设置错误代码。 Windows有大量的错误代码。 有没有一个简单的工具或参考帮助缩小正确的错误代码使用?

附加信息

虽然抛出一个exception,并处理更高的堆栈是我的首选项,这不是一个选项在这种情况下,因为我正在更新的应用程序没有devise利用这种有用的function。

Solutions Collecting From Web of "如何查找适当的Windows系统错误代码以在我的应用程序中使用?"

在“古老的日子”(C和C ++)中,可能的Windows错误列表在winerror.h中定义

更新:下面的链接已经死了。 不知道该文件是否仍然可供下载,但所有的Windows系统错误代码定义可以在这个链接找到。

这个文件可以在微软的网站上找到(尽管它让我感到有些惊讶,可以追溯到2003年 – 可能值得寻找更新的版本)。

但是,如果你正在(或想要设置)Win32错误代码,这将是找到定义的位置。

不幸的是,上面没有为我工作,但是这完全适合我,粘贴整个代码,所以它可以复制直接粘贴在C#

 public static class WinErrors { /// <summary> /// Gets a user friendly string message for a system error code /// </summary> /// <param name="errorCode">System error code</param> /// <returns>Error string</returns> public static string GetSystemMessage(uint errorCode) { var exception = new Win32Exception((int)errorCode); return exception.Message; } } 
 using System.Runtime.InteropServices; // DllImport public static string GetSystemMessage(int errorCode) { int capacity = 512; int FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000; StringBuilder sb = new StringBuilder(capacity); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, IntPtr.Zero, errorCode, 0, sb, sb.Capacity, IntPtr.Zero); int i = sb.Length; if (i>0 && sb[i - 1] == 10) i--; if (i>0 && sb[i - 1] == 13) i--; sb.Length = i; return sb.ToString(); } [DllImport("kernel32.dll")] public static extern int FormatMessage(int dwFlags, IntPtr lpSource, int dwMessageId, int dwLanguageId, StringBuilder lpBuffer, int nSize, IntPtr Arguments); 

你可以在这里找到它们的列表:

http://en.kioskea.net/faq/2347-error-codes-in-windows

然后,只要搜索“串行”,并使用最适合你的错误