أين يمكنني العثور على قائمة بجميع رموز أخطاء Windows؟

StackOverflow https://stackoverflow.com/questions/1081276

  •  22-08-2019
  •  | 
  •  

سؤال

في سؤال سابق، سألت ماذا يعني عندما يقوم برنامجي بإرجاع قيمة غامضة مثل

-1073741819

حسنًا، الآن أحصل على قيمة عائد كبيرة أخرى،

-1073740777

وأود أن أعرف ما إذا كانت هناك قائمة بكل هذه القيم وماذا تعني في مكان ما؟

هل كانت مفيدة؟

المحلول

وعموما سوف تحصل على نتائج بحث أفضل إذا قمت بطباعة من رقم الخطأ في عرافة، بدلا من الشكل العشري الموقعة.

وعلى سبيل المثال، الخطأ الأول هو -1073741819 والتي يمكن أيضا أن يمثله 0xC0000005 في عرافة. هذا سوف خطأ "انتهاك وصول" كما جوجل اقول لك بسرعة.

نصائح أخرى

نظرًا لأن نظام رموز أخطاء Windows قابل للتوسيع، فلا يوجد مكان واحد للبحث عن كافة رموز أخطاء Windows المحتملة.ومع ذلك، يمكنك البدء بما يلي:

  • إدرس ال هيكل رموز خطأ COM.في بعض الأحيان، يمكن أن تساعدك معرفة المنشأة التي يأتي منها الخطأ في اكتشاف الملف الرأسي الذي يأتي منه.
  • يتضمن Visual Studio، منذ عام 2003 على الأقل، ملف ERRLOOK أداة.جرب ذلك أولاً إذا كنت تستخدم Visual Studio.
  • العديد من الرموز التي ستواجهها موجودة Winerror.h.لقد قمت بتضمين رابط إلى MSDN يحتوي على محتويات ملف الرأس هذا.أو يمكنك إلقاء نظرة على قائمة رمز الخطأ حسب الرقم الموجود هذا صفحة.
  • من الناحية المثالية، أنت تعرف ما هي الوظيفة التي أعادت الرمز، ثم يمكنك البحث عن الوظيفة على MSDN وإلقاء نظرة على جميع القيم المرجعة المحتملة.وبطبيعة الحال، سوف تحتاج إلى الرجوع إلى Winerror.h, أو ملف رأس آخر للحصول على القيم الفعلية.
  • أنت تستطيع find (مثل يونكس grep) في ال Include دليل النظام الأساسي SDK إما للقيمة السداسية لرمز الخطأ بالكامل، أو القيمة العشرية لقسم الكود فقط - أي الـ 16 بت الأقل.يستخدم HRESULT_CODE لاستخراج ذلك.راجع بنية رموز خطأ COM أعلاه.
  • هناك عدد قليل من أدوات البحث عن الأخطاء حيث يمكنك لصق قيمة والبحث عنها في قاعدة البيانات الخاصة بها وإخبارك بما تعنيه.ينظر هنا و هنا.
  • جوجل.استخدم القيمة السداسية الكاملة.في بعض الأحيان ستجد معلومات مفيدة للغاية، أو على الأقل أدلة.

وكذلك هناك حفنة منهم هنا،

http://msdn.microsoft.com/en -US / مكتبة / ms681381 (VS.85) .aspx اتصال

ولكن عندما أحصل على واحد مثل المثال الخاص بك أنا فقط جوجل الرقم.

وكثير منهم (ولكن لا أعتقد أن ما هو متعلق COM) هي في ملف رأس المسمى <لأ href = "http://msdn.microsoft.com/en-us/library/ms819772.aspx" يختلط = "noreferrer"> winerror.h .

في (بعض إصدارات) البصرية ستوديو، ضمن القائمة "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 و <لأ href = "http://msdn.microsoft. كوم / EN-US / مكتبة / cc231199.aspx "يختلط =" نوفولو "> 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();
        }
    }
}

وهنا هو 100٪ أداة مجانية على الانترنت " MagnumDB " ل "قاعدة بيانات الرقم السحري" الذي يحتوي على حوالي 350،000 الثوابت (أعداد صحيحة، السلاسل، المعرفات الفريدة العمومية، الخ) تحليله من كامل ملفات Windows SDK (~ 6000 الملفات)، والتي يمكنك الاستعلام من حيث القيمة وبالاسم. تنويه: أنا كتبت ذلك بعد سنوات من البحث عن الثوابت والأسماء والمعرفات الفريدة العمومية ...

وهنا هو نتيجة ل -1073741819 التي تقوم بتعيين إلى 3 ثوابت مختلفة ( مع نفس القيمة ونفس المعنى) المعرفة في 3 ملفات مختلفة، الكائن STATUS_ACCESS_VIOLATION الأكثر شيوعا.

ول -1073740777 وهو STATUS_INVALID_CRUNTIME_PARAMETER المحددة في winnt.h.

وقعت

وأنها تدعم صحيحة، صحيحة، صحيحة غير موقعة، تدوين ست عشري، وأيضا بحث النص الخام. فهو يعرف أيضا قيمة الثوابت التي تم تعريفها من قبل العمليات (مثل C2 = C1 + 1).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top