El formato binario de archivo compuesto (CFBF), también llamado archivo compuesto , formato de documento compuesto , [1] o archivo de documento compuesto V2 [2] (CDF), es un formato de archivo de documento compuesto para almacenar numerosos archivos y flujos dentro de un solo archivo en un disco. CFBF es desarrollado por Microsoft y es una implementación de Microsoft COM Structured Storage . [3] [4] [5]
Microsoft ha abierto el formato para que lo usen otros y ahora se usa en una variedad de programas, desde Microsoft Word y Microsoft Access hasta Business Objects. [ cita requerida ] También forma la base del formato de autoría avanzada . [6]
Descripción general
En su forma más simple, el formato binario de archivo compuesto es un contenedor, con pocas restricciones sobre lo que se puede almacenar dentro de él.
Una estructura de archivos CFBF se parece vagamente a un sistema de archivos FAT . El archivo se divide en sectores que están encadenados junto con una tabla de asignación de archivos (que no debe confundirse con el sistema de archivos del mismo nombre) que contiene cadenas de sectores relacionados con cada archivo, un directorio contiene información para archivos contenidos con un ID de sector (SID) para el sector inicial de una cadena y así sucesivamente.
Estructura
El archivo CFBF consta de un registro de encabezado de 512 bytes seguido de varios sectores cuyo tamaño se define en el encabezado. La literatura define los sectores como 512 o 4096 bytes de longitud, aunque el formato es potencialmente capaz de soportar sectores que varían en tamaño desde 128 bytes hacia arriba en potencias de 2 (128, 256, 512, 1024, etc.). El límite inferior de 128 es el mínimo necesario para que quepa una sola entrada de directorio en un sector de directorio. [ relevante? ]
Hay varios tipos de sectores que pueden estar presentes en un CFBF:
- Sector de tabla de asignación de archivos (FAT): contiene cadenas de índices de sector de manera similar a como lo hace un FAT en los sistemas de archivos FAT / FAT32
- Sectores MiniFAT: similar al FAT pero almacenando cadenas de mini-sectores dentro del Mini-Stream
- Sector FAT doblemente indirecto (DIFAT): contiene cadenas de índices del sector FAT
- Sector de directorio: contiene entradas de directorio
- Stream Sector: contiene datos de archivos arbitrarios
- Sector de bloqueo de rango: contiene el área de bloqueo de rango de bytes de un archivo grande
A continuación se proporcionan más detalles para el encabezado y cada tipo de sector.
Formato de encabezado CFBF
El encabezado CFBF ocupa los primeros 512 bytes del archivo y la información requerida para interpretar el resto del archivo. La declaración de estructura de estilo C a continuación (extraída de la Especificación de contenedor de bajo nivel de la AAFA) muestra los miembros del encabezado CFBF y su propósito:
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 { // [desplazamiento desde el inicio (bytes), longitud (bytes)] BYTE _abSig [ 8 ]; // [00H, 08] {0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, // 0x1a, 0xe1} para la versión actual CLSID _clsid ; // [08H, 16] reservado debe ser cero (WriteClassStg / // GetClassFile usa el ID de clase del directorio raíz) USHORT _uMinorVersion ; // [18H, 02] versión secundaria del formato: 33 // se escribe mediante la implementación de referencia USHORT _uDllVersion ; // [1AH, 02] versión principal del formato dll /: 3 para // sectores de 512 bytes, 4 para sectores de 4 KB USHORT _uByteOrder ; // [1CH, 02] 0xFFFE: indica el orden de bytes de Intel USHORT _uSectorShift ; // [1EH, 02] tamaño de los sectores en potencia de dos; // normalmente 9 indica sectores de 512 bytes USHORT _uMiniSectorShift ; // [20H, 02] tamaño de los minisectores en potencias de dos; // normalmente 6 indica minisectores de 64 bytes USHORT _usReserved ; // [22H, 02] reservado, debe ser cero ULONG _ulReserved1 ; // [24H, 04] reservado, debe ser cero FSINDEX _csectDir ; // [28H, 04] debe ser cero para sectores de 512 bytes, // número de SECT en la cadena de directorios para 4 KB // sectores FSINDEX _csectFat ; // [2CH, 04] número de SECT en la cadena FAT SECT _sectDirStart ; // [30H, 04] primera SECT en la cadena de directorios DFSIGNATURE _signature ; // [34H, 04] firma utilizada para transacciones; debe // ser cero. La implementación de referencia // no admite transacciones ULONG _ulMiniSectorCutoff ; // [38H, 04] tamaño máximo para un mini flujo; // normalmente 4096 bytes SECT _sectMiniFatStart ; // [3CH, 04] primera SECT en la cadena MiniFAT FSINDEX _csectMiniFat ; // [40H, 04] número de SECT en la cadena MiniFAT SECT _sectDifStart ; // [44H, 04] primera SECT en la cadena DIFAT FSINDEX _csectDif ; // [48H, 04] número de SECT en la cadena DIFAT SECT _sectFat [ 109 ]; // [4CH, 436] las SECT de los primeros 109 sectores FAT };
Sectores de la tabla de asignación de archivos (FAT)
Cuando se toman en conjunto como una sola secuencia, la colección de sectores FAT define el estado y el enlace de cada sector en el archivo. Cada entrada en FAT tiene 4 bytes de longitud y contiene el número de sector del siguiente sector en una cadena FAT o uno de los siguientes valores especiales:
- FREESECT (0xFFFFFFFF): denota un sector no utilizado
- ENDOFCHAIN (0xFFFFFFFE): marca el último sector de una cadena FAT
- FATSECT (0xFFFFFFFD): marca un sector utilizado para almacenar parte de la FAT
- DIFSECT (0xFFFFFFFC): marca un sector utilizado para almacenar parte del DIFAT
Sector de bloqueo de rango
El sector de bloqueo de rango debe existir en archivos de más de 2 GB de tamaño y no debe existir en archivos de menos de 2 GB. El sector de bloqueo de rango debe contener el rango de bytes 0x7FFFFF00 a 0x7FFFFFFF en el archivo. Esta área está reservada por la implementación COM de Microsoft para almacenar información de bloqueo de rango de bytes para acceso concurrente.
Glosario
- FAT - Tabla de asignación de archivos, también conocida como: SAT - Tabla de asignación de sectores
- DIFAT - Tabla de asignación de archivos de doble indirecta
- Cadena FAT : un grupo de entradas FAT que indican los sectores asignados a una secuencia en el archivo.
- Stream : un archivo virtual que ocupa varios sectores dentro del CFBF
- Sector : la unidad de asignación dentro del CFBF, generalmente 512 o 4096 bytes de longitud
Ver también
Referencias
- ^ "Apache POI - POIFS" . Proyecto POI. Archivado desde el original el 26 de abril de 2011 . Consultado el 10 de mayo de 2011 .
- ^ "Cómo convertir documentos entre los formatos de archivo LibreOffice y Microsoft Office en Linux" . Archivado desde el original el 21 de septiembre de 2019 . Consultado el 25 de noviembre de 2016 .
- ^ "Archivos compuestos (Windows)" . Biblioteca de Microsoft Developers Network (MSDN) - COM SDK . Corporación Microsoft. 20 de noviembre de 2008 . Consultado el 23 de septiembre de 2009 .
- ^ "Contenedores: archivos compuestos" . Biblioteca de Microsoft Developers Network (MSDN): documentación de Visual Studio 2008 . Microsoft Corporation . Consultado el 23 de septiembre de 2009 .
- ^ "Entender los archivos compuestos" . Biblioteca de Microsoft Developers Network (MSDN) - ActiveDirectory Rights Management . 25 de junio de 2009 . Consultado el 23 de septiembre de 2009 .
- ^ Asociación AMW (anteriormente Asociación AAF) Archivado el 15 de agosto de 2000 en Wayback Machine
enlaces externos
- "[MS-CFB]: formato de archivo binario de archivo compuesto" . Microsoft . Consultado el 6 de julio de 2019 .
- "Formato de archivo de documento compuesto de Microsoft" (PDF) . Descripción CFBF de OpenOffice.org . Consultado el 22 de mayo de 2006 .
- "Especificación de contenedor de bajo nivel de formato de creación avanzada" (PDF) . Especificación de Microsoft Structured Storage versión 3 (PDF) . Archivado desde el original (PDF) el 9 de agosto de 2011 . Consultado el 22 de mayo de 2006 .
- "Formato de archivo binario de archivo compuesto de Microsoft, versión 3" . Biblioteca del Congreso, sitio web de formatos digitales . Consultado el 6 de julio de 2019 .