Frage

In einer früheren Frage, fragte ich, was es bedeutete, wenn mein Programm ein unbekannter Wert wie zurückgegeben

-1073741819

Nun, jetzt ist ich einen weiteren großen Rückgabewert bekommen,

-1073740777

Und ich würde gerne wissen, ob es eine Liste aller dieser Werte ist und was sie bedeuten sopmewhere?

War es hilfreich?

Lösung

Generell werden Sie bessere Suchergebnisse erhalten, wenn Sie die Fehlernummer in hex ausdrucken, statt unterzeichnet Dezimalform.

Zum Beispiel Ihres erster Fehler ist -1073741819, die auch von 0xC0000005 in hex dargestellt werden können. Dies ist ein „Zugriffsverletzung“ Fehler wie Google werden Ihnen schnell sagen.

Andere Tipps

Da das Windows-Fehlercode-System erweiterbar ist, gibt es keinen einzigen Ort all mögliche Windows-Fehlercodes nachschlagen. Allerdings können Sie beginnen mit:

  • Studieren Sie die Struktur der COM-Fehlercodes . Manchmal wissen, welche Einrichtung aus einem Fehler kommt, kann Ihnen helfen, zu entdecken, was Header-Datei es kommt.
  • Visual Studio, seit mindestens 2003 enthält ein ERRLOOK Werkzeug . Versuchen Sie, dass zuerst, wenn Sie Visual Studio verwenden.
  • Viele der Codes, die Sie in trefft sind Winerror.h . Ich habe einen Link zu MSDN enthalten, die den Inhalt dieser Header-Datei enthält. Oder Sie können nach Nummer an der Fehlercodeliste schauen auf diese Seite.
  • Im Idealfall wissen Sie, welche Funktion den Code zurück, und dann können Sie die Funktion auf MSDN-Lookup und Blick auf alle möglichen Rückgabewerte. Natürlich müssen Sie Winerror.h oder eine andere Header-Datei beziehen sich die tatsächlichen Werte zu erhalten.
  • Sie können find (wie Unix grep) im Include Verzeichnis der Plattform SDK entweder für den Hexadezimalwert des gesamten Fehlercode oder den Dezimalwert von nur den Codeabschnitt - das heißt, die unteren 16 Bits. Verwenden Sie HRESULT_CODE zu extrahieren, dass. Sehen Sie sich die Struktur der COM-Fehlercodes oben.
  • Es gibt ein paar Fehler-Lookup-Tools, wo Sie in einem Wert einfügen können und es sieht es in seiner Datenbank und erfahren Sie, was es bedeutet. Schauen Sie hier und hier .
  • Google. Verwenden Sie den vollständigen Hex-Wert. Manchmal werden Sie sehr nützliche Informationen finden, oder zumindest Hinweise.

Nun gibt es ein paar von ihnen hier,

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

Aber wenn ich ein wie Ihr Beispiel bekomme ich nur Google die Nummer.

Viele von ihnen (aber nicht, dass ich die auf COM bezogen ist) ist in einer Header-Datei mit dem Namen winerror.h .

(einige Versionen von) Visual Studio unter dem 'Tools' Menü, könnten Sie einen Menüpunkt finden namens 'Error Lookup...'.

NTSTATUS

NTSTATUS * umfasst eine Reihe von Einrichtungen
FACILITY_URT (0x013) * CLR Ausnahmen

HRESULTS

FACILITY_NULL (0x000)
FACILITY_RPC (0x001)
FACILITY_DISPATCH (0x002)
FACILITY_RPC_STUBS (0x003)
FACILITY_USER (0x004) * mehrere Bibliotheken können den gleichen Fehlercode wieder verwenden
FACILITY_MCA_ERROR_CODE (0x005)
FACILITY_WIN32 , MSDN (0x007) * Standard WINAPI Fehlercodes
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 Checks

Bug Check Code Referenz * aka Blue Screens

Hier ist eine Klasse in C# zu helfen, die Fehlercodes konvertieren 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();
        }
    }
}

Hier ist ein 100% kostenloses Online-Tool " MagnumDB " für "magische Zahl Datenbank", die etwa 350.000 enthalten Konstanten (ganze Zahlen, Strings, guids, etc.) aus den gesamten Windows SDK-Dateien (~ 6.000 Dateien) analysiert, dass Sie von Wert und namentlich abfragen. Disclaimer: Ich schrieb es nach Jahren der Konstanten für die Suche, Name, guids ...

Hier ist das Ergebnis für -1073741819 , die 3 verschiedene Konstanten Karten ( in 3 verschiedenen Dateien definiert mit dem gleichen Wert und der gleichen Bedeutung), wobei die gängigste STATUS_ACCESS_VIOLATION.

Und für -1073740777 das ist STATUS_INVALID_CRUNTIME_PARAMETER in winnt.h definiert.

Es unterstützt ganze Zahlen, signiert ganze Zahlen, ganze Zahlen ohne Vorzeichen, hexadezimale Schreibweise, und auch rohe Textsuche. Er kennt auch den Wert der Konstanten, die durch Operationen (wie c2 = c1 + 1).

definiert sind,
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top