在之前的一个问题中,我问过当我的程序返回一个像
这样的模糊值时它意味着什么-1073741819
好吧,现在我又得到了另一个大回报值,
-1073740777
我想知道是否有一些所有这些值的列表以及它们的含义是什么?
答案 0 :(得分:13)
由于Windows错误代码系统是可扩展的,因此没有一个地方可以查找所有可能的Windows错误代码。但是,您可以从:
开始ERRLOOK
工具。如果您使用的是Visual Studio,请首先尝试。Winerror.h
中。我已经包含了一个MSDN链接,其中包含该头文件的内容。或者,您可以在this页面上按编号查看错误代码列表。Winerror.h
或其他头文件来获取实际值。grep
目录中find
(如Unix Include
)获取整个错误代码的十六进制值,或只是代码的十进制值section - 即低16位。使用HRESULT_CODE
来提取它。请参阅上面的COM错误代码的结构。答案 1 :(得分:12)
一般情况下,如果以十六进制打印错误编号而不是带符号的十进制表格,您将获得更好的搜索结果。
例如,您的第一个错误是-1073741819,也可以用十六进制的0xC0000005表示。这是一个“访问冲突”错误,谷歌会很快告诉你。
答案 2 :(得分:6)
答案 3 :(得分:6)
其中许多(但不是我认为与COM相关的文件)位于名为winerror.h的头文件中。
在Visual Studio的(某些版本)中,在“Tools
”菜单下,您可能会找到名为“Error Lookup...
”的菜单项。
答案 4 :(得分:4)
NTSTATUS *涵盖了一系列设施 FACILITY_URT(0x013)* CLR例外
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)
Bug Check Code Reference *又名蓝屏
答案 5 :(得分:2)
这里是100%免费的在线工具“ MagnumDB”,用于“幻数数据库”,其中包含从整个Windows SDK文件(约6,000个文件)中解析出来的约350,000个常量(整数,字符串,guid等)。 ),您可以按值和名称进行查询。免责声明:经过多年的搜索,我写了常量,名称,公义...
这是-1073741819的结果,它映射到3个不同文件中定义的3个不同的常数(具有相同的值和相同的含义),最常见的是STATUS_ACCESS_VIOLATION
。
对于STATUS_INVALID_CRUNTIME_PARAMETER
中定义的winnt.h
的{{3}}。
它支持整数,有符号整数,无符号整数,十六进制表示法以及原始文本搜索。它还知道由操作定义的常量的值(例如c2 = c1 +1)。
答案 6 :(得分:1)
以下是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();
}
}
}