This document specifies a new structure called the Microsoft Compound File Binary (CFB) file format, also known as the Object Linking and Embedding (OLE) or Component Object Model (COM) structured storage compound file implementation binary file format. This structure name can be shortened to compound file.
Traditional file systems encounter challenges when they attempt to store efficiently multiple kinds of objects in one document. A compound file provides a solution by implementing a simplified file system within a file. Structured storage defines how to treat a single file as a hierarchical collection of two types of objects -- storage objects and stream objects -- that behave as directories and files, respectively. This scheme is called structured storage. The purpose of structured storage is to reduce the performance penalties and overhead associated with storing separate objects in a flat file. The standard Windows COM implementation of OLE structured storage is called compound files.
Structured storage solves performance problems by eliminating the need to totally rewrite a file whenever a new object is added, or an existing object increases in size. The new data is written to the next available free location in the file, and the storage object updates an internal structure that maintains the locations of its storage objects and stream objects. At the same time, structured storage enables end users to interact and manage a compound file as if it were a single file rather than a nested hierarchy of separate objects. For example, a compound file can be copied, backed up, and emailed like a normal single file.
The following figure shows a simplified file system with multiple directories and files nested in a hierarchy. Similarly, a compound file is a single file that contains a nested hierarchy of storage and stream objects, with storage objects analogous to directories, and stream objects analogous to files.
Figure 1: Simplified file system hierarchy with multiple nested directories and files
Figure 2: Structured storage compound file hierarchy that contains nested storage objects and stream objects
Sections 1.7 and 2 of this specification are normative and can contain the terms MAY, SHOULD, MUST, MUST NOT, and SHOULD NOT as defined in RFC 2119. All other sections and examples in this specification are informative.