رموز أخطاء Windows
اعرف معنى رمز خطأ Windows: رموز Win32 التي تعيدها GetLastError، وقيم HRESULT مثل 0x80070005، وقيم NTSTATUS مثل 0xC0000005، ورموز الشاشة الزرقاء. تقبل الأداة القيمة بالنظام الست عشري أو العشري، أو الاسم الرمزي، أو جزءًا من نص الرسالة، وتقسّم HRESULT إلى حقوله.
أمثلة:

الأسماء والأوصاف © Microsoft Corporation، مأخوذة من ملفات الرأس في Windows SDK ومن وثائق Microsoft Learn المنشورة بترخيص CC BY 4.0. تُعرض الأوصاف بلغتك عندما تكون Microsoft قد ترجمتها.رموز أخطاء النظام في Microsoft Learn

الأخطاء الشائعة

Windows Update وعمليات التثبيت والملفات

البرامج التي لا تُفتح أو تُغلق

الشاشات الزرقاء (bug checks)

كيف يعمل

يبلّغ Windows عن الأخطاء بأرقام من أربع عائلات مختلفة. رموز Win32، مثل 5 أو 1603، هي التي تعيدها GetLastError. أما قيم HRESULT، مثل 0x80070005، فهي الخاصة بـ COM وWindows Update وبرامج التثبيت. وقيم NTSTATUS، مثل 0xC0000005، تأتي من النواة وتظهر عند إغلاق برنامج. ورموز bug check، مثل 0xD1، هي الخاصة بالشاشات الزرقاء. تبحث الأداة في العائلات الأربع معًا، بالأسماء والنصوص التي تنشرها Microsoft في Windows SDK.

تحمل كثير من قيم HRESULT بداخلها رمز Win32 أو قيمة NTSTATUS. وعندما تحمل القيمة FACILITY_WIN32، مثل 0x80070005، تعرض الأداة أيضًا رمز Win32 الذي تتضمنه ووصفه، وهو الذي يشرح الخطأ فعلًا. كما تفصل بتات القيمة: الخطورة، وfacility الذي يدل على المكوّن الذي أنتجها، والرمز داخل هذا الـ facility.

أمثلة

0x80070005FACILITY_WIN32 (7) · 5 → ERROR_ACCESS_DENIEDتحمل قيمة HRESULT التي تبدأ بـ 0x8007 رمز Win32 في أرقامها الأربعة الأخيرة: 0x0005 هو 5، أي تم رفض الوصول.
-10737418190xC0000005 · STATUS_ACCESS_VIOLATIONيعرض عارض الأحداث ورموز خروج العمليات القيمة غالبًا كرقم عشري بإشارة. وهي نفس قيمة NTSTATUS لانتهاك الوصول.
16030x80070643 · ERROR_INSTALL_FAILUREينتهي Windows Installer بالرمز 1603 عند فشل التثبيت، ويبلّغ Windows Update عن الخطأ نفسه بصيغة HRESULT هي 0x80070643.

حالات الاستخدام

  • فهم خطأ في Windows Update أو Microsoft Store أو برنامج تثبيت قبل البحث عن الحل.
  • تحويل رمز خروج عملية أو القيمة التي يعرضها عارض الأحداث إلى اسم الثابت.
  • تحديد bug check الخاص بشاشة زرقاء انطلاقًا من رمز الإيقاف.
  • إيجاد قيمة ثابت مثل ERROR_ACCESS_DENIED أو E_INVALIDARG أثناء البرمجة باستخدام واجهة Windows البرمجية.
  • الاطلاع على النص الإنجليزي الأصلي لخطأ يظهر مترجمًا، للبحث عنه في المنتديات والوثائق.

الأسئلة الشائعة

لماذا يظهر الرقم نفسه كخطأين مختلفين؟

تُرقّم كل عائلة رموزها على حدة. فالقيمة 0x7B هي خطأ Win32 رقم 123 (اسم ملف غير صحيح)، وهي أيضًا bug check باسم INACCESSIBLE_BOOT_DEVICE في الشاشة الزرقاء. يحدد السياق أيهما المقصود: إن ظهرت في شاشة زرقاء فهي bug check، وإن أعادها برنامج أو أمر فهي Win32.

كيف يُحوَّل رمز Win32 إلى HRESULT؟

بالماكرو HRESULT_FROM_WIN32: يؤخذ الرمز بالنظام الست عشري ويُوضع أمامه 0x8007، فيُضبط بت الخطأ على 1 وfacility الخاص بـ WIN32 على 7. يصبح الرمز 5 هو 0x80070005، ويصبح 1603، أي 0x643، هو 0x80070643. وللعودة يُؤخذ آخر أربعة أرقام.

لماذا يظهر رقم سالب؟

في قيم HRESULT وNTSTATUS الخاصة بالأخطاء يكون البت الأعلى 1، لذلك تظهر كأعداد سالبة عند عرضها كأعداد صحيحة بإشارة. القيمة -2147024891 هي 0x80070005، والقيمة -1073741819 هي 0xC0000005. تقبل الأداة الصيغتين.

لماذا بعض الأوصاف بالإنجليزية؟

الأوصاف المترجمة هي التي تنشرها Microsoft في Microsoft Learn لرموز Win32. أما نصوص HRESULT وNTSTATUS ورموز Win32 التي لم تترجمها Learn إلى لغتك فتُعرض بالإنجليزية كما وردت في Windows SDK.

ماذا أفعل إذا لم يظهر الرمز؟

يمكن للبرامج تعريف رموزها الخاصة، خاصة تلك التي يكون فيها البت C مساويًا 1 أو التي تستخدم facility ليس من Windows، وهذه لا تظهر في SDK. في هذه الحالة، انظر إلى الـ facility الذي تعرضه الأداة لمعرفة المكوّن الذي أنتج الخطأ، وابحث عن الرمز في وثائق ذلك المنتج.