在上一个问题中,我问当我的程序返回一个模糊的值(例如

-1073741819

嗯,现在我又得到了一个大的回报值,

-1073740777

我想知道是否有所有这些值的列表以及它们在某个地方的含义?

有帮助吗?

解决方案

通常你会,如果你在十六进制打印出错误号,而不是符号的十进制形式得到更好的搜索结果。

例如,你的第一误差是-1073741819这也可以由0000005以十六进制表示。这是一个“访问冲突”错误的谷歌很快就会告诉你。

其他提示

因为Windows错误代码系统是可扩展的,没有单一的地方看起来所有可能的Windows的错误代码。但是,你可以开始:

  • 研究所 结构COM错误代码.有时知道有什么设施的一个错误来自可以帮助你发现什么头文件,它的由来。
  • Visual Studio,因为至少在2003年,包括一个 ERRLOOK 工具。尝试,首先如果你使用Visual Studio.
  • 许多代码,你会遭遇是在 Winerror.h.我已经包括一个链接到MSDN包含的内容,标题的文件。或者你可以看看错误代码清单中的编号上 页。
  • 理想的情况是你知道什么是功能返回代码,然后你就可以查找功能上MSDN和寻找所有可能的返回值。当然,你会需要参考 Winerror.h, 或另一标题的文件,以获得实际价值。
  • 你可以 find (像Unix grep)在 Include 目录的平台SDK for无论是六角的价值的整个错误代码,或该小数值只是代码部分--即,较低的16位。使用 HRESULT_CODE 提取。看到结构的错误代码以上。
  • 有几个错误的查询工具,你可以贴在一个价值和它看起来它在其数据库,并告诉你这意味着什么。看看 在这里,在这里,.
  • 谷歌。使用全部六角的价值。有时候你会发现很有用的信息,或至少线索。

那么有这里的一群人,

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

但是,当我得到一个喜欢你的例子,我只是谷歌的数量。

他们中的许多(但不是我想与COM的那些)是在名为的 Winerror.h中

在(某些版本)的Visual Studio中, 'Tools' 菜单下,你可能会发现一个名为 'Error Lookup...' 的菜单项。

NT状态

NT状态 *涵盖一系列设施
FACILITY_URT (0x013) *CLR 异常

H结果

FACILITY_NULL (0x000)
FACILITY_RPC (0x001)
FACILITY_DISPATCH (0x002)
FACILITY_RPC_STUBS (0x003)
FACILITY_USER (0x004) *多个库可以重复使用相同的错误代码
FACILITY_MCA_ERROR_CODE (0x005)
FACILITY_WIN32, 微软软件定义网络 (0x007) *标准 WINAPI 错误代码
FACILITY_WINDOWS (0x008)
设施_安全 (0x009)
设施_CERT (0x00B)
设施_互联网 (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)
设施_TPM_软件 (0x029)
设施_用户界面 (0x02A)
FACILITY_PLA 设施 (0x030)
FACILITY_FVE (0x031)
FACILITY_FWP (0x032)
FACILITY_WINRM (0x033)
设施_NDIS (0x034)
FACILITY_USERMODE_HYPERVISOR (0x035)
FACILITY_USERMODE_VIRTUALIZATION (0x037)
FACILITY_USERMODE_VOLMGR (0x038)
设施_BCD (0x039)
FACILITY_USERMODE_VHD (0x03A)
FACILITY_SDIAG (0x03C)
FACILITY_网络服务 (0x03D)
设施_WPN (0x03E)
FACILITY_MBN (0x054)
FACILITY_P2P (0x063)
FACILITY_BLUETOOTH_ATT (0x065)
设施_音频 (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)
设施_备份 (0x7FF)
FACILITY_NTDSB (0x800)
FACILITY_DIRECT3D10 (0x879)
FACILITY_DXGI (0x87A)
设施_DXGI_DDI (0x87B)
FACILITY_DIRECT3D11 (0x87C)
FACILITY_DWRITE (0x898)
FACILITY_D2D (0x899)
FACILITY_DEFRAG (0x900)
FACILITY_ONLINE_ID (0xA02)

错误检查

Bug 检查代码参考 *又名蓝屏

下面是在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();
        }
    }
}

下面是一个100%免费的在线工具“ MagnumDB ”为“神奇的数字数据库”,其中包含约350,000常量(整数,字符串的GUID等)从整体的Windows SDK文件(〜6000个文件)解析,您可以通过值和名称进行查询。免责声明:我写它经过多年的寻找常量,姓名,GUID的......

下面是结果 -1073741819 映射到3个不同的常数(在3个不同的文件时,最常见的是STATUS_ACCESS_VIOLATION定义的相同值,并且相同的含义)。

“在这里输入的图像描述”

和用于 -1073740777 这在STATUS_INVALID_CRUNTIME_PARAMETER定义winnt.h

“在这里输入的图像描述”

它支持整数,符号整数,无符号整数,十六进制符号,并且还原始文本搜索。它也知道了由操作定义的常量的值(如C2 = C1 + 1)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top