Összetett fájl bináris formátuma - Compound File Binary Format
Az Összetett fájl bináris formátuma (CFBF), más néven Összetett fájl , Összetett dokumentum formátum vagy Összetett dokumentum fájl V2 dokumentum (CDF) egy összetett dokumentum fájl formátum számos fájl és adatfolyam tárolására egyetlen fájlon belül a lemezen. A CFBF-et a Microsoft fejlesztette ki, és a Microsoft COM strukturált tárolójának megvalósítása .
A Microsoft megnyitotta a formátumot mások számára, és mostantól számos programban használják, a Microsoft Word-től és a Microsoft Access- től az üzleti objektumokig. Ez képezi az Advanced Authoring Format alapját is .
tartalom
Áttekintés
A legegyszerűbb, hogy az Összetett fájl bináris formátuma egy tároló, kevés korlátozással a benne tárolható elemekre.
A CFBF fájlszerkezet lazán hasonlít a FAT fájlrendszerre . A fájlt ágazatokra osszák fel, amelyeket egy fájl-elosztási táblával (nem tévesztendő össze az azonos nevű fájlrendszerrel) együtt láncolva, amely az egyes fájlokhoz kapcsolódó szektorok láncait tartalmazza, egy könyvtár információkat tartalmaz a szektor azonosítóval rendelkező fájlokról (SID) a lánc kezdő szektorához és így tovább.
Szerkezet
A CFBF fájl egy 512 bájtos fejlécrekordból áll, amelyet számos olyan szektor követ, amelyek méretét a fejléc meghatározza. Az irodalom meghatározza, hogy az ágazatok akár 512, akár 4096 bájt hosszúak lehetnek, bár a formátum potenciálisan képes támogatni az 128 bájtot felfelé mutató ágazatokat 2-es teljesítményben (128, 256, 512, 1024 stb.). A 128 alsó határ a minimum, amely ahhoz szükséges, hogy egyetlen címjegyzékbejegyzés szerepeljen a címtárszektorban.
Többféle ágazat létezik a CFBF-ben:
- File Allocation Table (FAT) szektor - tartalmazza az ágazati indexek láncolatait, ugyanúgy, mint a FAT a FAT / FAT32 fájlrendszerekben.
- MiniFAT szektorok - hasonlóak a FAT-hez, de a mini-szektorok láncát tárolják a Mini-Streamben
- Kettős-közvetett FAT (DIFAT) szektor - a FAT szektor indexek láncolatait tartalmazza
- Directory Sector - könyvtári bejegyzéseket tartalmaz
- Patak szektor - tetszőleges fájl adatokat tartalmaz
- Range Lock Sector - egy nagy fájl byte-tartományú zárolási területét tartalmazza
Az alábbiakban részletezzük a fejlécet és az egyes szektor típusokat.
CFBF fejléc formátum
A CFBF fejléc elfoglalja a fájl első 512 bájtját és a fájl többi részének értelmezéséhez szükséges információkat. Az alábbi C-Style szerkezeti nyilatkozat (az AAFA alacsony szintű konténer specifikációjából származik) megmutatja a CFBF fejléc tagjait és céljaikat:
typedef unsigned long ULONG; // 4 Bytes
typedef unsigned short USHORT; // 2 Bytes
typedef short OFFSET; // 2 Bytes
typedef ULONG SECT; // 4 Bytes
typedef ULONG FSINDEX; // 4 Bytes
typedef USHORT FSOFFSET; // 2 Bytes
typedef USHORT WCHAR; // 2 Bytes
typedef ULONG DFSIGNATURE; // 4 Bytes
typedef unsigned char BYTE; // 1 Byte
typedef unsigned short WORD; // 2 Bytes
typedef unsigned long DWORD; // 4 Bytes
typedef ULONG SID; // 4 Bytes
typedef GUID CLSID; // 16 Bytes
struct StructuredStorageHeader { // [offset from start (bytes), length (bytes)]
BYTE _abSig[8]; // [00H,08] {0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1,
// 0x1a, 0xe1} for current version
CLSID _clsid; // [08H,16] reserved must be zero (WriteClassStg/
// GetClassFile uses root directory class id)
USHORT _uMinorVersion; // [18H,02] minor version of the format: 33 is
// written by reference implementation
USHORT _uDllVersion; // [1AH,02] major version of the dll/format: 3 for
// 512-byte sectors, 4 for 4 KB sectors
USHORT _uByteOrder; // [1CH,02] 0xFFFE: indicates Intel byte-ordering
USHORT _uSectorShift; // [1EH,02] size of sectors in power-of-two;
// typically 9 indicating 512-byte sectors
USHORT _uMiniSectorShift; // [20H,02] size of mini-sectors in power-of-two;
// typically 6 indicating 64-byte mini-sectors
USHORT _usReserved; // [22H,02] reserved, must be zero
ULONG _ulReserved1; // [24H,04] reserved, must be zero
FSINDEX _csectDir; // [28H,04] must be zero for 512-byte sectors,
// number of SECTs in directory chain for 4 KB
// sectors
FSINDEX _csectFat; // [2CH,04] number of SECTs in the FAT chain
SECT _sectDirStart; // [30H,04] first SECT in the directory chain
DFSIGNATURE _signature; // [34H,04] signature used for transactions; must
// be zero. The reference implementation
// does not support transactions
ULONG _ulMiniSectorCutoff; // [38H,04] maximum size for a mini stream;
// typically 4096 bytes
SECT _sectMiniFatStart; // [3CH,04] first SECT in the MiniFAT chain
FSINDEX _csectMiniFat; // [40H,04] number of SECTs in the MiniFAT chain
SECT _sectDifStart; // [44H,04] first SECT in the DIFAT chain
FSINDEX _csectDif; // [48H,04] number of SECTs in the DIFAT chain
SECT _sectFat[109]; // [4CH,436] the SECTs of first 109 FAT sectors
};
File Allocation Table (FAT) szektorok
Egységes adatfolyamként véve a FAT szektorok gyűjteménye meghatározza a fájlban szereplő minden szektor állapotát és kapcsolódását. A FAT minden bejegyzésének 4 bájtja van, és tartalmazza a FAT-lánc következő szektorának szektorszámát vagy a következő speciális értékek egyikét:
- FREESECT (0xFFFFFFFF) - fel nem használt szektorot jelöl
- ENDOFCHAIN (0xFFFFFFFE) - jelzi a FAT lánc utolsó szektort
- FATSECT (0xFFFFFFFD) - egy szektort jelöl, amelyet a FAT egy részének tárolására használnak
- DIFSECT (0xFFFFFFFC) - egy szektort jelöl a DIFAT egy részének tárolására
Range Lock szektor
A Range Lock szektornak 2 GB-nál nagyobb fájlokban léteznie kell, és nem létezhet 2 GB-nál kisebb fájlokban. A Range Lock szektornak tartalmaznia kell a fájlban a 0x7FFFFF00 - 0x7FFFFFFF bájttartományt. Ezt a területet a Microsoft COM implementációja fenntartja bájttartományú zárolási információk egyidejű hozzáférés tárolására.
Szójegyzék
- FAT - File Allokációs Táblázat, más néven: SAT - Szektor Allokációs Táblázat
- DIFAT - Kettős-közvetett fájl allokációs táblázat
- FAT lánc - FAT bejegyzések csoportja, amelyek jelzik a fájlban lévő adatfolyamhoz hozzárendelt szektorokat
- Patak - virtuális fájl, amely számos ágazatot foglal el a CFBF-en belül
- Szektor - az elosztási egység a CFBF-en belül, általában 512 vagy 4096 bájt hosszú
Lásd még
Irodalom
Külső linkek
- "Microsoft összetett dokumentumfájl formátuma" (PDF) . OpenOffice.org CFBF leírás . Beérkezett 2006-05-22 .
- "Speciális szerzői formátum alacsony szintű tároló specifikáció" (PDF) . A Microsoft Strukturált Storage 3. verziójának specifikációja (PDF) . Beérkezett 2006-05-22 .