Binary Format for sammensatt fil - Compound File Binary Format
Compound File Binary Format (CFBF), også kalt Compound File , Compound Document format , eller Composite Document File V2 Document (CDF), er et sammensatt dokumentfilformat for lagring av mange filer og strømmer i en enkelt fil på en disk. CFBF er utviklet av Microsoft og er en implementering av Microsoft COM Structured Storage .
Microsoft har åpnet formatet for bruk av andre, og det brukes nå i en rekke programmer fra Microsoft Word og Microsoft Access til Business Objects. Det danner også grunnlaget for Advanced Authoring Format .
innhold
Oversikt
På det enkleste er Compound File Binary Format en beholder, med liten begrensning på hva som kan lagres i det.
En CFBF-filstruktur ligner løst et FAT- filsystem . Filen er delt inn i sektorer som er lenket sammen med en filtildelingstabell (ikke å ta feil av filsystemet med samme navn) som inneholder kjeder med sektorer relatert til hver fil. En katalog inneholder informasjon om inneholdte filer med en sektor-ID (SID) for startsektoren i en kjede og så videre.
Struktur
CFBF-filen består av en 512-byte header-post fulgt av et antall sektorer hvis størrelse er definert i overskriften. Litteraturen definerer sektorer til å være enten 512 eller 4096 byte i lengde, selv om formatet potensielt er i stand til å støtte sektorer i størrelse fra 128-byte og oppover med krefter på 2 (128, 256, 512, 1024, etc.) Den nedre grensen på 128 er minimum som kreves for å passe til en enkelt katalogoppføring i en katalogsektor.
Det er flere typer sektorer som kan være til stede i en CFBF:
- File Allocation Table (FAT) sektor - inneholder kjeder med sektorindekser omtrent som en FAT gjør i FAT / FAT32-filsystemene
- MiniFAT-sektorer - ligner på FAT, men lagrer kjeder med minisektorer i Mini-Stream
- Dobbel-indirekte FAT (DIFAT) sektor - inneholder kjeder med FAT-sektorindekser
- Katalogsektor - inneholder katalogoppføringer
- Stream Sector - inneholder vilkårlige fildata
- Range Lock Sector - inneholder låsområdet til byteområdet i en stor fil
Mer detalj er gitt nedenfor for overskriften og hver sektortype.
CFBF Header-format
CFBF-overskriften opptar de første 512 byte av filen og informasjonen som kreves for å tolke resten av filen. C-Style-strukturdeklarasjonen nedenfor (hentet fra AAFAs Low-Level Container Specification) viser medlemmene av CFBF-overskriften og deres formål:
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
};
FAT-sektorer (File Allocation Table)
Når samlingen av FAT-sektorer er samlet som en enkelt strøm, definerer status og kobling for hver sektor i filen. Hver oppføring i FAT er fire byte i lengde og inneholder sektornummer for den neste sektoren i en FAT-kjede eller en av følgende spesialverdier:
- FREESECT (0xFFFFFFFF) - angir en ubrukt sektor
- ENDOFCHAIN (0xFFFFFFFE) - markerer den siste sektoren i en FAT-kjede
- FATSECT (0xFFFFFFFD) - markerer en sektor som brukes til å lagre deler av FAT
- DIFSECT (0xFFFFFFFC) - markerer en sektor som brukes til å lagre deler av DIFAT
Range Lock Sector
The Range Lock Sector må eksistere i filer større enn 2 GB i størrelse, og må ikke eksisterer i filer som er mindre enn 2 GB. Range Lock Sector må inneholde byteområdet 0x7FFFFF00 til 0x7FFFFFFF i filen. Dette området er reservert av Microsofts COM-implementering for lagring av låsinformasjon om byteområde for samtidig tilgang.
Ordliste
- FAT - File Allocation Table, også kjent som: SAT - Sector Allocation Table
- DIFAT - Dobbelt-indirekte filtildelingstabell
- FAT Chain - en gruppe FAT-oppføringer som indikerer sektorene som er tildelt en Stream i filen
- Stream - en virtuell fil som okkuperer en rekke sektorer i CFBF
- Sektor - tildelingsenheten i CFBF, vanligvis 512 eller 4096 Bytes i lengde
Se også
referanser
Eksterne linker
- "Microsoft Compound Document File Format" (PDF) . OpenOffice.org CFBF beskrivelse . Hentet 2006-05-22 .
- "Advanced Authoring Format Low-Level Container Specification" (PDF) . Microsoft Structured Storage versjon 3-spesifikasjon (PDF) . Hentet 2006-05-22 .