ما الذي يمكن أن يكون سبب خطأ Windows ERROR_DISK_FULL (112) عند فتح دفق بيانات بديل NTFS؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

يكتب تطبيقي بعض وحدات البايت من البيانات إلى دفق بيانات بديل.يعمل هذا بشكل جيد على جميع الأجهزة باستثناء جهاز واحد (Windows Server 2003 SP2).بدلاً من ذلك، إرجاع CreateFile ERROR_DISK_FULL عندما أحاول إنشاء دفق بيانات بديل (في الدليل الجذر).لا أجد سبباً لهذه النتيجة، لأن...

  • هناك مساحة كبيرة على محرك الأقراص هذا.

  • محرك الأقراص بتنسيق NTFS (بسبب GetVolumeInformation).

  • يدعم محرك الأقراص تدفقات بيانات التنس (بسبب getVolumeInformation).

يحرر:يمكنني تقديم المزيد من المعلومات حول السبب لا يكون:لقد أضفت العديد من التدفقات على نظام اختبار ولم يُظهر الخطأ وتساءلت عما إذا كان الخطأ قد يحدث.لم يحدث ذلك.بدلاً من ذلك، بعد حوالي 2000 تدفق بأسماء ملفات طويلة، حدث خطأ آخر واستمر:1450 (ERROR_NO_SYSTEM_RESOURCES).

يحرر:فيما يلي مثال لأحد أسماء الملفات المستخدمة:

char szStreamFileName[] = "C:\\:abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnoqrstuvwxyz012345";

يحرر:يستخدم عميلنا بعض برامج مكافحة الفيروسات الخاصة بالشركة من Avira على هذا الخادم.ربما هذا هو السبب (يمكن إساءة استخدام تدفقات البيانات البديلة بواسطة البرامج الضارة).

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

المحلول

بعد فتح تذكرة دعم في MS، أعلم أن هناك مجموعة علامات للقراءة فقط والتي يمكن للمرء فقط تعيينها (وإعادة ضبطها) باستخدام وظائف Windows غير الموثقة.لا أحد يعرف من قام بوضع هذه العلامة ولماذا، لكنني أرسلت إليهم صورة لمحرك الأقراص (بعد أن حصلت على الجهاز من عميلنا) وهكذا اكتشفوا الأمر.ليس لدينا سوى حل بديل في تطبيقنا (نستخدم موقعًا آخر إذا اكتشفنا هذا الخطأ).وفي الوقت نفسه، نعلم أن بعض عملائنا يواجهون هذه المشكلة.

نصائح أخرى

هل هناك أي ملفات مضغوطة/احتياطية أو تدفقات بيانات بديلة؟

غالبًا ما تتلقى تطبيقات النسخ الاحتياطي أخطاء ERROR_DISK_FULL أثناء محاولة عمل نسخة احتياطية من الملفات المضغوطة، وهذا يسبب قدرًا كبيرًا من الارتباك عندما لا يزال هناك عدة غيغابايت من المساحة الحرة على محرك الأقراص.قد تحدث مشكلات أخرى أيضًا عند نسخ الملفات المضغوطة.الهدف من هذه المدونة هو منح القارئ فهمًا أكثر شمولاً لما يحدث بالفعل عند ضغط ملفات NTFS.

من فهم ضغط NTFS

مجرد لقطة عمياء، ولكن هل تم تحديد الحقوق بشكل صحيح؟

مجرد احتمال آخر..

هل قمت بفحص عدد الملفات المفتوحة حاليًا في نظام التشغيل لديك؟دعم نظام التشغيل كحد أقصى.عدد مؤشرات الملفات المحجوزة بعد هذا التقرير ERROR_DISK_FULL أو ERROR_NO_SYSTEM_RESOURCES.

والاحتمال الثاني...الدليل الجذر محدود بعدد الملفات.على ما أذكر 512 ملفًا في الإصدارات الأقدم من نظام التشغيل.لكن NTFS يدعم عدد غير محدود من الملفات في الجذر!

قد ترغب في رؤية شيء من هذا القبيل مراقب عملية Sysinternal تلتقط الأداة المساعدة عند محاولة إنشاء هذا الملف - فهي تعرض رموز الإرجاع لواجهات برمجة التطبيقات المختلفة المتضمنة في مكدس الإدخال/الإخراج وقد يمنحك أحدها فكرة عن سبب إرجاع 112 إليك.نأمل أن يكون مستوى التفاصيل في ProcMon كافيًا - إذا لم يكن الأمر كذلك، أتخيل أن هناك مرافق أخرى أكثر تفصيلاً لتتبع الإدخال/الإخراج لنظام التشغيل Windows (لكنني لا أعرفها من أعلى رأسي)

اسم الملف الذي تعطيه هو

char szStreamFileName[] = "C:\\:abcdefghijklm...

يبدأ بـ

C:\\:

هل هذا خطأ مطبعي في المنشور، أم أن هناك بالفعل نقطتين بعد الشرطة المائلة؟أعتقد أن هذا اسم ملف غير قانوني.

إذا حاولت نسخ ملف أكبر من 2 جيجابايت من نظام ملفات آخر (NTFS) إلى FAT / FAT32 والذي يبلغ حده 2 جيجابايت، فقد ترى هذا الخطأ.

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