Murakkab fayllarning ikkilik formati - Compound File Binary Format

Murakkab fayllarning ikkilik formati (CFBF), shuningdek, chaqirilgan Murakkab fayl, Murakkab hujjat formati,[1] yoki Kompozit hujjat fayli V2[2] (CDF), a birikma hujjat formati diskdagi bitta fayl ichida ko'plab fayllar va oqimlarni saqlash uchun. CFBF tomonidan ishlab chiqilgan Microsoft va Microsoft dasturidir MAQOMOTI tuzilgan saqlash.[3][4][5]

Microsoft boshqalar foydalanishi uchun formatni ochdi va u endi turli xil dasturlarda qo'llaniladi Microsoft Word va Microsoft Access biznes ob'ektlariga.[iqtibos kerak ] Shuningdek, u asosini tashkil etadi Murakkab mualliflik formati.[6]

Umumiy nuqtai

Eng sodda qilib aytganda, Murakkab Fayl Ikkilik formati bu konteyner bo'lib, unda saqlanishi mumkin bo'lgan narsalarga ozgina cheklovlar mavjud.

CFBF fayl tuzilishi a-ga o'xshashdir Yog ' fayl tizimi. Fayl qismlarga bo'linadi Sektorlar a bilan zanjirlangan Fayllarni ajratish jadvali (bir xil nomdagi fayl tizimi bilan adashmaslik kerak) har bir faylga tegishli sektorlar zanjirlarini o'z ichiga olgan, a Katalog zanjirning boshlang'ich sektori uchun Sektor identifikatori (SID) bo'lgan fayllar uchun ma'lumotlarni saqlaydi va hokazo.

Tuzilishi

CFBF fayli 512 baytlik sarlavha yozuvidan, so'ngra sarlavhada hajmi aniqlangan bir qator sektorlardan iborat. Adabiyotda Sektorlar uzunligi 512 yoki 4096 baytni tashkil qiladi, garchi bu format hajmi (128, 256, 512, 1024 va boshqalar) 128-baytdan yuqoriroq sohalarni qo'llab-quvvatlashga qodir bo'lsa-da. 128-ning pastki chegarasi Katalog Sektorida bitta katalog yozuvini kiritish uchun zarur bo'lgan minimal hisoblanadi.[muvofiq? ]

CFBFda mavjud bo'lishi mumkin bo'lgan bir nechta sektor turlari mavjud:

  • Fayllarni taqsimlash jadvali (FAT) sektori - FAT FAT / FAT32 fayl tizimlarida bo'lgani kabi, sektor indekslari zanjirlarini ham o'z ichiga oladi.
  • MiniFAT Sektorlari - FATga o'xshash, ammo Mini-Stream ichida mini-sektorlar zanjirlarini saqlaydi
  • Ikkita bilvosita FAT (DIFAT) sektori - FAT sektori indekslari zanjirlarini o'z ichiga oladi
  • Katalog sektori - katalog yozuvlarini o'z ichiga oladi
  • Oqim sektori - o'zboshimchalik bilan fayl ma'lumotlarini o'z ichiga oladi
  • Range Lock Sector - katta faylning bayt oralig'idagi blokirovka maydonini o'z ichiga oladi

Sarlavha va har bir sektor turi uchun quyida batafsilroq ma'lumot berilgan.

CFBF Header formati

CFBF sarlavhasi faylning dastlabki 512 baytini va faylning qolgan qismini sharhlash uchun zarur bo'lgan ma'lumotlarni egallaydi. Quyidagi C-Style tuzilish deklaratsiyasida (AAFA ning past darajadagi konteyner spetsifikatsiyasidan olingan) CFBF sarlavhasi a'zolari va ularning maqsadi ko'rsatilgan:

 typedef imzosiz uzoq ULONG;    // 4 bayt typedef imzosiz qisqa USHORT;  // 2 bayt typedef qisqa OFFSET;           // 2 bayt typedef ULONG BO'LIM;             // 4 bayt typedef ULONG FSINDEX;          // 4 bayt typedef USHORT FSOFFSET;        // 2 bayt typedef USHORT WCHAR;           // 2 bayt typedef ULONG DFSIGNATURE;      // 4 bayt typedef imzosiz char BAYT;     // 1 bayt typedef imzosiz qisqa So'z;    // 2 bayt typedef imzosiz uzoq DWORD;    // 4 bayt typedef ULONG SID;              // 4 bayt typedef GUID CLSID;             // 16 bayt tuzilmaviy StructuredStorageHeader { // [boshidan (bayt), uzunlik (bayt) dan ofset]     BAYT _abSig[8];             // [00H, 08] {0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1,                                 // joriy versiyasi uchun 0x1a, 0xe1}     CLSID _clsid;               // [08H, 16] zaxiralangan nolga teng bo'lishi kerak (WriteClassStg /                                 // GetClassFile root katalogining identifikatoridan foydalanadi)     USHORT _uMinorVersion;      // [18H, 02] formatining kichik versiyasi: 33 is                                 // mos yozuvlar orqali amalga oshiriladi     USHORT _uDllVersion;        // [1AH, 02] dll / formatining asosiy versiyasi: 3 uchun                                 // 512 baytli sektorlar, 4 KB uchun 4 KB     USHORT _uByteOrder;         // [1CH, 02] 0xFFFE: Intelning bayt tartibini bildiradi     USHORT _uSectorShift;       // [1EH, 02] ikkilamchi quvvatdagi tarmoqlar hajmi;                                 // odatda 512 baytli sektorlarni ko'rsatuvchi 9     USHORT _uMiniSectorShift;   // [20H, 02] ikkilamchi quvvatdagi mini-sektorlarning hajmi;                                 // odatda 64 baytli mini-sektorlarni ko'rsatuvchi 6 ta     USHORT _usReservation;         // [22H, 02] saqlangan, nol bo'lishi kerak     ULONG _ulReserve1;         // [24H, 04] saqlangan, nol bo'lishi kerak     FSINDEX _csectDir;          // 512 baytli sektorlar uchun [28H, 04] nol bo'lishi kerak,                                 // kataloglar zanjiridagi SECTlar soni 4 KB                                 // sektorlar     FSINDEX _csectFat;          // [2CH, 04] FAT zanjiridagi SECTs soni     BO'LIM _sectDirStart;         // [30H, 04] kataloglar zanjiridagi birinchi SECT     DFSIGNATURE _ishora;     // [34H, 04] bitimlar uchun ishlatiladigan imzo; kerak                                 // nolga teng. Malumotni amalga oshirish                                 // operatsiyalarni qo'llab-quvvatlamaydi     ULONG _ulMiniSectorCutoff;  // [38H, 04] mini oqim uchun maksimal o'lcham;                                 // odatda 4096 bayt     BO'LIM _sectMiniFatStart;     // [3CH, 04] MiniFAT zanjiridagi birinchi SECT     FSINDEX _csectMiniFat;      // [40H, 04] MiniFAT zanjiridagi SECTs soni     BO'LIM _sectDifStart;         // [44H, 04] DIFAT zanjiridagi birinchi SECT     FSINDEX _csectDif;          // [48H, 04] DIFAT zanjiridagi SECTs soni     BO'LIM _sectFat[109];         // [4CH, 436] birinchi 109 FAT sektorining BO'LIMLARI };

Fayllarni taqsimlash jadvali (FAT) sektorlari

Yagona oqim sifatida yig'ilganda FAT sektorlari to'plami fayldagi har bir sektorning holati va bog'lanishini belgilaydi. FATdagi har bir yozuv uzunligi 4 baytni tashkil etadi va FAT zanjiridagi keyingi sektorning sektor raqamini yoki quyidagi maxsus qiymatlardan birini o'z ichiga oladi:

  • FREESECT (0xFFFFFFFF) - foydalanilmagan sektorni bildiradi
  • ENDOFCHAIN ​​(0xFFFFFFFE) - FAT zanjiridagi so'nggi sektorni belgilaydi
  • FATSECT (0xFFFFFFFD) - FATning bir qismini saqlash uchun ishlatiladigan sektorni belgilaydi
  • DIFSECT (0xFFFFFFFC) - DIFATning bir qismini saqlash uchun ishlatiladigan sektorni belgilaydi

Range Lock sektori

The Range Lock sektori hajmi 2 Gb dan katta bo'lgan fayllarda va 2 Gb dan kichik hajmdagi fayllarda bo'lmasligi kerak. Range Lock Sector faylda 0x7FFFFF00 dan 0x7FFFFFFF bayt oralig'ini o'z ichiga olishi kerak. Ushbu maydon bir vaqtning o'zida kirish uchun bayt oralig'idagi blokirovka ma'lumotlarini saqlash uchun Microsoft-ning MAQOMOTI dasturida saqlangan.

Lug'at

  • Yog ' - Fayllarni ajratish jadvali, shuningdek quyidagicha tanilgan: SAT - sektorni taqsimlash jadvali
  • DIFAT - Ikkita bilvosita fayllarni taqsimlash jadvali
  • FAT zanjiri - faylda Oqim uchun ajratilgan sektorlarni ko'rsatadigan FAT yozuvlari guruhi
  • Oqim - CFBF tarkibidagi bir qator tarmoqlarni egallagan virtual fayl
  • Sektor - odatda 512 yoki 4096 bayt uzunlikdagi CFBF ichida ajratish birligi

Shuningdek qarang

Adabiyotlar

  1. ^ "Apache POI - POIFS". POI loyihasi. Arxivlandi asl nusxasi 2011 yil 26 aprelda. Olingan 10 may 2011.
  2. ^ "Linuxda LibreOffice va Microsoft Office fayl formatlari o'rtasida hujjatlarni qanday o'zgartirish mumkin". Arxivlandi asl nusxasi 2019 yil 21 sentyabrda. Olingan 25 noyabr 2016.
  3. ^ "Murakkab fayllar (Windows)". Microsoft Developers Network (MSDN) kutubxonasi - COM SDK. Microsoft korporatsiyasi. 20 noyabr 2008 yil. Olingan 23 sentyabr 2009.
  4. ^ "Konteynerlar: Murakkab fayllar". Microsoft Developers Network (MSDN) kutubxonasi - Visual Studio 2008 hujjatlari. Microsoft korporatsiyasi. Olingan 23 sentyabr 2009.
  5. ^ "Murakkab fayllarni tushunib oling". Microsoft Developers Network (MSDN) kutubxonasi - ActiveDirectory Rights Management. 2009 yil 25 iyun. Olingan 23 sentyabr 2009.
  6. ^ AMW assotsiatsiyasi (avvalgi AAF assotsiatsiyasi) Arxivlandi 2000 yil 15-avgustda Orqaga qaytish mashinasi

Tashqi havolalar