我在哪里可以find所有窗口错误代码的列表?

在之前的一个问题中,当我的程序返回一个模糊的值时,我问这是什么意思

-1073741819 

那么,现在我正在获得另一个大的回报价值,

 -1073740777 

我想知道是否有一些这些值的列表,他们的意思是什么?

一般来说,如果以十六进制打印出错误号码,而不是带符号的十进制形式,您将获得更好的搜索结果。

例如,您的第一个错误是-1073741819,也可以用十六进制表示0xC0000005。 这是一个“访问违规”的错误,谷歌会很快告诉你。

由于Windows错误代码系统是可扩展的,所以没有一个地方可以查找所有可能的Windows错误代码。 但是,您可以从以下开始:

  • 研究COM错误代码的结构 。 有时候知道错误来自哪个设备可以帮助你发现它来自哪个头文件。
  • 至少从2003年起,Visual Studio包含一个ERRLOOK工具。 如果您使用的是Visual Studio,请先尝试一下。
  • 你会遇到的许多代码在Winerror.h 。 我已经包含了一个包含该头文件内容的MSDN链接。 或者你可以在这个页面上查看错误代码的编号列表。
  • 理想情况下,您知道哪个函数返回了代码,然后您可以在MSDN上查找函数,并查看所有可能的返回值。 当然,你需要引用Winerror.h ,或者另一个头文件来获取实际的值。
  • 您可以在Platform SDK的Include目录中find (如Unix grep )整个错误代码的十六进制值,或者只是代码段的十进制值 – 即低16位。 使用HRESULT_CODE来提取。 请参阅上面的COM错误代码的结构。
  • 有几个错误查找工具,您可以粘贴一个值,并在数据库中查找它,并告诉您这意味着什么。 看这里和这里 。
  • 谷歌。 使用完整的十六进制值。 有时你会发现很有用的信息,或者至少是线索。

那么这里有一大堆呢,

http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx

但是当我得到一个像你的例子我只是谷歌的数字。

其中许多(但不是我认为与COM相关的)在一个名为winerror.h的头文件。

在(某些版本的)Visual Studio中,在“ Tools ”菜单下,可能会找到一个名为“ Error Lookup... ”的菜单项。

NTSTATUS

NTSTATUS *涵盖一系列的设施
FACILITY_URT (0x013)* CLR异常

HRESULTS

FACILITY_NULL (0x000)
FACILITY_RPC (0x001)
FACILITY_DISPATCH (0x002)
FACILITY_RPC_STUBS (0x003)
FACILITY_USER (0x004)*多个库可以重复使用相同的错误代码
FACILITY_MCA_ERROR_CODE (0x005)
FACILITY_WIN32 , MSDN (0x007)*标准WINAPI错误代码
FACILITY_WINDOWS (0x008)
FACILITY_SECURITY (0x009)
FACILITY_CERT (0x00B)
FACILITY_INTERNET (0x00C)
FACILITY_MEDIASERVER (0x00D)
FACILITY_MSMQ (0x00E)
FACILITY_SETUPAPI (0x00F)
FACILITY_SCARD (0x010)
FACILITY_COMPLUS (0x011)
FACILITY_HTTP (0x019)
FACILITY_USERMODE_FILTER_MANAGER (0x01F)
FACILITY_WINDOWSUPDATE (0x024)
FACILITY_GRAPHICS (0x026)
FACILITY_NAP (0x027)
FACILITY_INK (0x028)
FACILITY_TPM_SOFTWARE (0x029)
FACILITY_UI (0x02A)
FACILITY_PLA (0x030)
FACILITY_FVE (0x031)
FACILITY_FWP (0x032)
FACILITY_WINRM (0x033)
FACILITY_NDIS (0x034)
FACILITY_USERMODE_HYPERVISOR (0x035)
FACILITY_USERMODE_VIRTUALIZATION (0x037)
FACILITY_USERMODE_VOLMGR (0x038)
FACILITY_BCD (0x039)
FACILITY_USERMODE_VHD (0x03A)
FACILITY_SDIAG (0x03C)
FACILITY_WEBSERVICES (0x03D)
FACILITY_WPN (0x03E)
FACILITY_MBN (0x054)
FACILITY_P2P (0x063)
FACILITY_BLUETOOTH_ATT (0x065)
FACILITY_AUDIO (0x066)
FACILITY_IMAPI2 (0x0AA)
FACILITY_RTC_INTERFACE (0x0EE)
FACILITY_SIP_STATUS_CODE (0x0EF)
FACILITY_PINT_STATUS_CODE (0x0F0)
FACILITY_MAX_WDSTPTMGMT (0x110)
FACILITY_WDSMCSERVER (0x121)
FACILITY_MAX_WDSMC (0x122)
FACILITY_MAX_WDSCP (0x125)
FACILITY_BACKUP (0x7FF)
FACILITY_NTDSB (0x800)
FACILITY_DIRECT3D10 (0x879)
FACILITY_DXGI (0x87A)
FACILITY_DXGI_DDI (0x87B)
FACILITY_DIRECT3D11 (0x87C)
FACILITY_DWRITE (0x898)
FACILITY_D2D (0x899)
FACILITY_DEFRAG (0x900)
FACILITY_ONLINE_ID (0xA02)

错误检查

错误检查代码参考 *又名蓝色屏幕

这是C#的一个类,帮助您将错误代码转换为string

 public static class WinErrors { #region definitions [DllImport("kernel32.dll", SetLastError = true)] static extern IntPtr LocalFree(IntPtr hMem); [DllImport("kernel32.dll", SetLastError = true)] static extern int FormatMessage(FormatMessageFlags dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, ref IntPtr lpBuffer, uint nSize, IntPtr Arguments); [Flags] private enum FormatMessageFlags : uint { FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100, FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200, FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000, FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000, FORMAT_MESSAGE_FROM_HMODULE = 0x00000800, FORMAT_MESSAGE_FROM_STRING = 0x00000400, } #endregion /// <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(int errorCode) { try { IntPtr lpMsgBuf = IntPtr.Zero; int dwChars = FormatMessage( FormatMessageFlags.FORMAT_MESSAGE_ALLOCATE_BUFFER | FormatMessageFlags.FORMAT_MESSAGE_FROM_SYSTEM | FormatMessageFlags.FORMAT_MESSAGE_IGNORE_INSERTS, IntPtr.Zero, (uint) errorCode, 0, // Default language ref lpMsgBuf, 0, IntPtr.Zero); if (dwChars == 0) { // Handle the error. int le = Marshal.GetLastWin32Error(); return "Unable to get error code string from System - Error " + le.ToString(); } string sRet = Marshal.PtrToStringAnsi(lpMsgBuf); // Free the buffer. lpMsgBuf = LocalFree(lpMsgBuf); return sRet; } catch (Exception e) { return "Unable to get error code string from System -> " + e.ToString(); } } }