تنسيق الملف المركب الثنائي

تنسيق الملف الثنائي المركب (CFBF)، ويُسمى أيضًا الملف المركب ، أو تنسيق المستند المركب ، [ 1 ] أو ملف المستند المركب الإصدار الثاني [ 2 ] (CDF)، هو تنسيق ملف مستند مركب لتخزين العديد من الملفات والتدفقات ضمن ملف واحد على القرص. طُوّر CFBF بواسطة مايكروسوفت وهو تطبيق لتقنية التخزين المهيكل COM من مايكروسوفت . [ 3 ] [ 4 ] [ 5 ] يُستخدم هذا التنسيق لتخزين كائنات التخزين وكائنات التدفق في بنية هرمية ضمن ملف واحد. [ 6 ]

أتاحت مايكروسوفت استخدام هذا التنسيق للآخرين، ويُستخدم الآن في مجموعة متنوعة من البرامج، بدءًا من مايكروسوفت وورد ومايكروسوفت أكسس وصولًا إلى بزنس أوبجكتس. كما أنه يشكل أساس تنسيق التأليف المتقدم . [ 7 ]

ملخص

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

يشبه هيكل ملف CFBF إلى حد ما نظام ملفات FAT . يُقسّم الملف إلى قطاعات متصلة ببعضها بواسطة جدول تخصيص الملفات (لا ينبغي الخلط بينه وبين نظام الملفات الذي يحمل نفس الاسم) والذي يحتوي على سلاسل من القطاعات المرتبطة بكل ملف، ويحتوي الدليل على معلومات عن الملفات المضمنة مع معرّف القطاع (SID) للقطاع البادئ للسلسلة، وهكذا.

بناء

يتكون ملف CFBF من سجل رأس بحجم 512 بايت، يليه عدد من القطاعات التي يُحدد حجمها في الرأس. تُعرّف المراجع القطاعات إما بـ 512 أو 4096 بايت، مع أن التنسيق قادر نظريًا على دعم قطاعات يتراوح حجمها من 128 بايت فأكثر، بمضاعفات العدد اثنين (128، 256، 512، 1024، إلخ). الحد الأدنى وهو 128 بايت هو الحد الأدنى المطلوب لاستيعاب مدخل دليل واحد في قطاع الدليل.

توجد عدة أنواع من القطاعات التي قد تكون موجودة في ملف CFBF:

  • قطاع جدول تخصيص الملفات (FAT) - يحتوي على سلاسل من مؤشرات القطاعات، تمامًا كما هو الحال في نظامي الملفات FAT/FAT32.
  • قطاعات MiniFAT - مشابهة لقطاعات FAT ولكنها تخزن سلاسل من القطاعات المصغرة داخل Mini-Stream
  • قطاع الدهون غير المباشرة المزدوجة (DIFAT) – يحتوي على سلاسل من مؤشرات قطاع الدهون
  • قطاع الدليل – يحتوي على إدخالات الدليل
  • قطاع البث – يحتوي على بيانات ملفات عشوائية
  • قطاع قفل النطاق - يحتوي على منطقة قفل نطاق البايت لملف كبير

ستجد أدناه المزيد من التفاصيل حول العنوان وكل نوع من أنواع القطاعات.

تنسيق رأس CFBF

يشغل رأس ملف CFBF أول 512 بايت من الملف، ويحتوي على المعلومات اللازمة لتفسير بقية الملف. يوضح تعريف بنية الملف بأسلوب لغة C أدناه (المستخرج من مواصفات الحاويات منخفضة المستوى الصادرة عن AAFA) عناصر رأس ملف CFBF ووظائفها:

typedef unsigned long ULONG ; // 4 بايت typedef unsigned short USHORT ; // 2 بايت typedef short OFFSET ; // 2 بايت typedef ULONG SECT ; // 4 بايت typedef ULONG FSINDEX ; // 4 بايت typedef USHORT FSOFFSET ; // 2 بايت typedef USHORT WCHAR ; // 2 بايت typedef ULONG DFSIGNATURE ; // 4 بايت typedef unsigned char BYTE ; // 1 بايت typedef unsigned short WORD ; // 2 بايت typedef unsigned long DWORD ; // 4 بايت typedef ULONG SID ; // 4 بايت typedef GUID CLSID ; // 16 بايتstruct StructuredStorageHeader { // [الإزاحة من البداية (بايت)، الطول (بايت)] BYTE _abSig [ 8 ]; // [00H,08] {0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, // 0x1a, 0xe1} للإصدار الحالي CLSID _clsid ; // [08H,16] يجب أن يكون هذا الحقل المحجوز صفرًا (WriteClassStg/ // GetClassFile يستخدم معرف فئة الدليل الجذر) USHORT _uMinorVersion ; // [18H,02] الإصدار الثانوي للتنسيق: 33 // مكتوب بواسطة التنفيذ المرجعي USHORT _uDllVersion ; // [1AH,02] الإصدار الرئيسي لملف dll/التنسيق: 3 لقطاعات 512 بايت، 4 لقطاعات 4 كيلوبايت USHORT _uByteOrder ; // [1CH,02] 0xFFFE: يشير إلى ترتيب البايتات في Intel USHORT _uSectorShift ; // [1EH,02] حجم القطاعات بمضاعفات العدد 2؛ // عادةً 9، مما يشير إلى قطاعات بحجم 512 بايت USHORT _uMiniSectorShift ; // [20H,02] حجم القطاعات المصغرة بمضاعفات العدد 2؛ // عادةً 6، مما يشير إلى قطاعات مصغرة بحجم 64 بايت USHORT _usReserved ; // [22H,02] محجوز، يجب أن يكون صفرًا ULONG _ulReserved1 ; // [24H,04] محجوز، يجب أن يكون صفرًا FSINDEX _csectDir ; // [28H,04] يجب أن يكون صفرًا لقطاعات بحجم 512 بايت، // عدد القطاعات في سلسلة الدليل لقطاعات بحجم 4 كيلوبايت // FSINDEX _csectFat ; // [2CH,04] عدد القطاعات (SECTs) في سلسلة FAT، القطاع _sectDirStart ؛ // [30H,04] أول قطاع (SECT) في سلسلة الدليل، DFSIGNATURE _signature ؛ // [34H,04] التوقيع المستخدم للمعاملات؛ يجب أن يكون // صفرًا. لا يدعم التنفيذ المرجعي // المعاملات، ULONG _ulMiniSectorCutoff ؛ // [38H,04] الحد الأقصى لحجم دفق البيانات المصغر؛ // عادةً 4096 بايت، القطاع _sectMiniFatStart ؛ // [3CH,04] أول قطاع (SECT) في سلسلة MiniFAT، FSINDEX _csectMiniFat ؛ // [40H,04] عدد القطاعات (SECTs) في سلسلة MiniFAT، القطاع _sectDifStart ؛ // [44H,04] أول قطاع (SECT) في سلسلة DIFAT، FSINDEX _csectDif ؛ // [48H,04] عدد القطاعات (SECTs) في سلسلة DIFAT، SECT_sectFat [ 109 ] ; // [4CH,436] قطاعات SECTs لأول 109 قطاعات FAT };

تشبه البايتات الأربعة الأولى من التوقيع ( 0xD0CF11E0) بصريًا الأحرف "DOCFILE". [ 8 ]

قطاعات جدول تخصيص الملفات (FAT)

عند جمعها كتدفق واحد، تحدد مجموعة قطاعات جدول تخصيص الملفات (FAT) حالة كل قطاع في الملف وارتباطه. يبلغ طول كل مدخل في جدول تخصيص الملفات 4 بايتات، ويحتوي على رقم القطاع التالي في سلسلة جدول تخصيص الملفات أو إحدى القيم الخاصة التالية:

  • FREESECT ( 0xFFFFFFFF ) – يشير إلى قطاع غير مستخدم
  • نهاية السلسلة ( 0xFFFFFFFE ) - تشير إلى القطاع الأخير في سلسلة FAT
  • FATSECT ( 0xFFFFFFFD ) – يشير إلى قطاع يُستخدم لتخزين جزء من جدول تخصيص الملفات (FAT).
  • DIFSECT ( 0xFFFFFFFC ) – يشير إلى قطاع يُستخدم لتخزين جزء من DIFAT

نطاق قفل القطاع

يجب أن يكون قطاع قفل النطاق موجودًا في الملفات التي يزيد  حجمها عن 2 جيجابايت، ولا يجب أن يكون موجودًا في الملفات التي يقل حجمها عن 2  جيجابايت. يجب أن يحتوي قطاع قفل النطاق على نطاق البايتات من 0x7FFFFF00 إلى 0x7FFFFFFF في الملف. هذه المساحة محجوزة من قِبل تطبيق COM الخاص بمايكروسوفت لتخزين معلومات قفل نطاق البايتات للوصول المتزامن.

مسرد المصطلحات

  • FAT - جدول تخصيص الملفات؛ يُعرف أيضًا باسم SAT - جدول تخصيص القطاعات
  • DIFAT – جدول تخصيص الملفات غير المباشر المزدوج
  • سلسلة FAT - مجموعة من إدخالات FAT التي تشير إلى القطاعات المخصصة لتدفق في الملف
  • ملف افتراضي – ملف افتراضي يشغل عددًا من القطاعات داخل CFBF
  • القطاع – وحدة التخصيص داخل CFBF، وعادةً ما يكون طوله 512 أو 4096 بايت

انظر أيضاً

مراجع

  1. "Apache POI – POIFS" . مشروع POI. مؤرشف من الأصل بتاريخ 26 أبريل 2011. تم الاطلاع عليه بتاريخ 10 مايو 2011 .
  2. "كيفية تحويل المستندات بين تنسيقات ملفات LibreOffice وMicrosoft Office على نظام Linux" . مؤرشف من الأصل بتاريخ 21 سبتمبر 2019. تم الاطلاع عليه بتاريخ 25 نوفمبر 2016 .
  3. "الملفات المركبة (ويندوز)" . مكتبة شبكة مطوري مايكروسوفت (MSDN) - COM SDK . شركة مايكروسوفت. 20 نوفمبر 2008. تم الاطلاع عليه بتاريخ 23 سبتمبر 2009 .
  4. "الحاويات: الملفات المركبة" . مكتبة شبكة مطوري مايكروسوفت (MSDN) - وثائق Visual Studio 2008. شركة مايكروسوفت . تم الاطلاع عليه بتاريخ 23 سبتمبر 2009 .
  5. "فهم الملفات المركبة" . مكتبة شبكة مطوري مايكروسوفت (MSDN) - إدارة حقوق Active Directory . 25 يونيو 2009. تم الاطلاع عليه بتاريخ 23 سبتمبر 2009 .
  6. "تنسيق الملف الثنائي لملفات مايكروسوفت المركبة، الإصدار 4" . www.loc.gov . 28 يناير 2020. تم الاطلاع عليه بتاريخ 13 يونيو 2024 .
  7. جمعية AMW (المعروفة سابقًا باسم جمعية AAF) مؤرشفة في 15 أغسطس 2000 على موقع Wayback Machine
  8. غاري سي. كيسلر، دكتوراه، CCE، CISSP. "توقيعات الملفات" . www.garykessler.net . مؤرشف من الأصل في 12 نوفمبر 2022. تم الاطلاع عليه في 5 ديسمبر 2025. لاحظ التشابه بين D0 CF 11 E0 وكلمة "DOCFILE"!{{cite web}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط )