Composto arquivo formato binário - Compound File Binary Format
Composto Formato de arquivo binário (CFBF), também chamado de composto de arquivo , formato de documento composto , ou Composite Document File V2 Document (CDF), é um composto formato de arquivo de documento para armazenar vários arquivos e córregos dentro de um único arquivo em um disco. CFBF é desenvolvido pela Microsoft e é uma implementação do Microsoft COM armazenamento estruturado .
Microsoft abriu o formato para uso por outras pessoas e agora é usado em uma variedade de programas de Microsoft Word e Microsoft Access para Business Objects. Também forma a base da Advanced Format Authoring .
Conteúdo
visão global
Na sua forma mais simples, o Composto de arquivo binário Format é um recipiente, com pouca restrição sobre o que pode ser armazenado dentro dele.
A estrutura do arquivo CFBF vagamente se assemelha a um FAT sistema de arquivos . O arquivo é dividido em setores que são encadeados com um File Allocation Table (para não ser confundido com o sistema de mesmo nome do arquivo) que contém cadeias de setores relacionados com cada arquivo, um diretório contém informações para arquivos contidos com um ID Sector (SID) para o sector inicial de uma cadeia e assim por diante.
Estrutura
O arquivo CFBF consiste em um registro de cabeçalho de 512 bytes seguido por uma série de setores cujo tamanho é definido no cabeçalho. A literatura define Sectores para ser de 512 ou 4096 bytes de comprimento, embora o formato é potencialmente capaz de suportar os sectores que variam em tamanho de 128 bytes para cima em potências de 2 (128, 256, 512, 1024, etc.). O limite mínimo de 128 é o mínimo necessário para atender a uma única entrada de diretório em um setor Directory.
Existem vários tipos de setor que podem estar presentes em um CFBF:
- File Allocation Table (FAT) Sector - contém cadeias de índices sectoriais tanto como um FAT faz nos sistemas de arquivos FAT / FAT32
- Setores MiniFAT - semelhante ao FAT, mas armazenar cadeias de mini-setores dentro do Mini-Stream
- FAT (DIFAT) Sector duas vezes indireta - contém cadeias de índices sectoriais FAT
- Sector Directory - contém entradas de diretório
- Sector Stream - contém dados arquivo arbitrário
- Faixa Bloqueio Setor - contém a área de bloqueio do byte-range de um arquivo grande
Mais detalhes são dados a seguir para o cabeçalho e cada tipo de sector.
formato CFBF Header
O CFBF Header ocupa os primeiros 512 bytes do arquivo e informações necessárias para interpretar o resto do arquivo. A declaração de estrutura C-Estilo abaixo (extraída a partir do AAFA de baixo nivel Recipiente Especificação) mostra os membros do cabeçalho CFBF e o seu objectivo:
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) Setores
Quando tomados em conjunto como um único fluxo a coleção de setores FAT definir o status e articulação de todos os setores no arquivo. Cada entrada na FAT tem 4 bytes de comprimento e contem o número de sector do sector seguinte numa cadeia FAT ou um dos seguintes valores especiais:
- FREESECT (0xFFFFFFFF) - denota um setor não utilizado
- ENDOFCHAIN (0xFFFFFFFE) - marca o último setor em uma cadeia FAT
- FATSECT (0xFFFFFFFD) - marca um setor usado para armazenar parte do FAT
- DIFSECT (0xfffffffc) - marca um setor usado para armazenar parte do DIFAT
Sector gama de bloqueio
O bloqueio Sector Faixa deve existir em arquivos maiores que 2GB de tamanho, e não deve existir em arquivos menores que 2 GB. The Lock Sector Faixa deve conter o 0x7FFFFF00 intervalo de bytes para 0x7FFFFFFF no arquivo. Esta área é reservada pela implementação COM da Microsoft para armazenar informações para acesso simultâneo bloqueio byte-range.
Glossário
- FAT File Allocation Table, também conhecido como -: SAT - Allocation Table Sector
- DIFAT - Double-Indirect File Allocation Table
- Cadeia FAT - um grupo de entradas FAT que indicam os setores atribuídos a um córrego no arquivo
- Fluxo - um arquivo virtual, que ocupa um número de setores dentro da CFBF
- Setor - A unidade de alocação dentro do CFBF, geralmente 512 ou 4096 bytes de comprimento
Veja também
Referências
links externos
- "Microsoft File Format Composto Document" (PDF) . OpenOffice.org descrição CFBF . Retirado 2006-05-22 .
- "Advanced Authoring formatação de baixo nível Container Specification" (PDF) . Microsoft versão de especificação armazenamento estruturado 3 (PDF) . Retirado 2006-05-22 .