stringtranslate.com

Formato binario de archivo compuesto

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 secuencias 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] El formato de archivo se utiliza para almacenar objetos de almacenamiento y objetos de secuencia en una estructura jerárquica dentro de un solo archivo. [6]

Microsoft ha abierto el formato para que lo utilicen otros y ahora se utiliza en una variedad de programas, desde Microsoft Word y Microsoft Access hasta Business Objects. [ cita requerida ] También forma la base del formato de creación avanzado . [ 7 ]

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 archivo CFBF se parece vagamente a un sistema de archivos FAT . El archivo está dividido en sectores que están encadenados entre sí mediante 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 que contiene información de los archivos incluidos con un identificador de sector (SID) para el sector inicial de una cadena, etc.

Estructura

El archivo CFBF consta de un registro de encabezado de 512 bytes seguido de una serie de sectores cuyo tamaño se define en el encabezado. La literatura define los sectores como de 512 o 4096 bytes de longitud, aunque el formato es potencialmente capaz de soportar sectores que van desde 128 bytes en adelante en potencias de 2 (128, 256, 512, 1024, etc.). El límite inferior de 128 es el mínimo requerido para que quepa una sola entrada de directorio en un sector de directorio. [ ¿ relevante? ]

Existen varios tipos de sectores que pueden estar presentes en un CFBF:

A continuación se ofrecen más detalles sobre 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 necesaria para interpretar el resto del archivo. La declaración de estructura de estilo C que aparece a continuación (extraída de la Especificación de contenedores de bajo nivel de 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 es // escrito por implementación de referencia USHORT _uDllVersion ; // [1AH,02] versión principal de la dll/formato: 3 para // sectores de 512 bytes, 4 para sectores de 4 KB USHORT _uByteOrder ; // [1CH,02] 0xFFFE: indica ordenamiento de bytes de Intel USHORT _uSectorShift ; // [1EH,02] tamaño de los sectores en potencia de dos; // normalmente 9, lo que indica sectores de 512 bytes USHORT _uMiniSectorShift ; // [20H,02] tamaño de los minisectores en potencia de dos; // normalmente 6, lo que 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 sectores de 4 KB FSINDEX _csectFat ; // [2CH,04] número de SECT en la cadena FAT SECT _sectDirStart ; // [30H,04] primer 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 stream; // típicamente 4096 bytes SECT _sectMiniFatStart ; // [3CH,04] primer SECT en la cadena MiniFAT FSINDEX _csectMiniFat ; // [40H,04] número de SECT en la cadena MiniFAT SECT _sectDifStart ; // [44H,04] primer SECT en la cadena DIFAT FSINDEX _csectDif ; // [48H,04] número de SECT en la cadena DIFAT SECT _sectFat [ 109 ]; // [4CH,436] los SECT de los primeros 109 sectores FAT };                                                                        

Sectores de la tabla de asignación de archivos (FAT)

Cuando se toman en conjunto como un flujo único, la colección de sectores FAT define el estado y el vínculo de cada sector en el archivo. Cada entrada en la FAT tiene una longitud de 4 bytes y contiene el número de sector del siguiente sector en una cadena FAT o uno de los siguientes valores especiales:

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 de 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 simultáneo.

Glosario

Véase también

Referencias

  1. ^ "Apache POI – POIFS". Proyecto POI. Archivado desde el original el 26 de abril de 2011. Consultado el 10 de mayo de 2011 .
  2. ^ "Cómo convertir documentos entre formatos de archivo de LibreOffice y Microsoft Office en Linux". Archivado desde el original el 21 de septiembre de 2019 . Consultado el 25 de noviembre de 2016 .
  3. ^ "Archivos compuestos (Windows)". Biblioteca Microsoft Developers Network (MSDN) – COM SDK . Microsoft Corporation. 20 de noviembre de 2008. Consultado el 23 de septiembre de 2009 .
  4. ^ "Contenedores: archivos compuestos". Biblioteca Microsoft Developers Network (MSDN): documentación de Visual Studio 2008. Microsoft Corporation . Consultado el 23 de septiembre de 2009 .
  5. ^ "Comprender los archivos compuestos". Biblioteca Microsoft Developers Network (MSDN) – ActiveDirectory Rights Management . 25 de junio de 2009. Consultado el 23 de septiembre de 2009 .
  6. ^ "Formato de archivo binario de Microsoft Compound File, versión 4". www.loc.gov . 28 de enero de 2020 . Consultado el 13 de junio de 2024 .
  7. ^ Asociación AMW (anteriormente Asociación AAF) Archivado el 15 de agosto de 2000 en Wayback Machine.

Enlaces externos