COM Structured Storage (variously also known as ''
COM structured storage'' or ''
OLE
OLE, Ole or Olé may refer to:
* Olé, a cheering expression used in Spain
* Ole (name), a male given name, includes a list of people named Ole
* Overhead lines equipment, used to transmit electrical energy to trams, trolleybuses or trains
Co ...
structured storage'') is a technology developed by
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
as part of its
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
for storing hierarchical data within a single file. Strictly speaking, the term ''structured storage'' refers to a set of COM
interfaces
Interface or interfacing may refer to:
Academic journals
* ''Interface'' (journal), by the Electrochemical Society
* '' Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Linguistics''
* '' Inter ...
that a conforming implementation must provide, and not to a specific implementation, nor to a specific
file format (in fact, a structured storage implementation need not store its data in a file at all). In addition to providing a hierarchical structure for data, structured storage may also provide a limited form of
transactional support for data access. Microsoft provides an implementation that supports transactions, as well as one that does not (called ''simple-mode'' storage, the latter implementation is limited in other ways as well, although it performs better).
Structured storage is widely used in
Microsoft Office
Microsoft Office, MS Office, or simply Office, is an office suite and family of client software, server software, and services developed by Microsoft. The first version of the Office suite, announced by Bill Gates on August 1, 1988, at CO ...
applications, although newer releases (starting with
Office 2007
Microsoft Office 2007 (codenamed Office 12) is an office suite for Windows, developed and published by Microsoft. It was officially revealed on March 9, 2006 and was the 12th version of Microsoft Office. It was released to manufacturing on Novemb ...
) use the
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
-based
Office Open XML
Office Open XML (also informally known as OOXML) is a zipped, XML-based file format developed by Microsoft for representing spreadsheets, charts, presentations and word processing documents. Ecma International standardized the initial version ...
by default. It is also an important part of both COM and the related Object Linking and Embedding (OLE) technologies. Other notable applications of structured storage include
SQL Server, the Windows shell, and many third-party
CAD programs.
Motivation
Structured storage addresses some inherent difficulties of storing multiple data objects within a single file. One difficulty arises when an object persisted in the file changes in size due to an update. If the application that is reading/writing the file expects the objects in the file to remain in a certain order, everything following that object's representation in the file may need to be shifted backward to make room if the object grows, or forward to fill in the space left over if the object shrinks. If the file is large, this could result in a costly operation. Of course, there are many possible solutions to this difficulty, but often the application programmer does not want to deal with low level details such as binary file formats.
Structured storage provides an abstraction known as a ''stream'', represented by the interface
IStream
. A stream is conceptually very similar to a file, and the
IStream
interface provides methods for reading and writing similar to file input/output. A stream could reside in
memory
Memory is the faculty of the mind by which data or information is encoded, stored, and retrieved when needed. It is the retention of information over time for the purpose of influencing future action. If past events could not be remembe ...
, within a file, within another stream, etc., depending on the implementation. Another important abstraction is that of a ''storage'', represented by the interface
IStorage
. A storage is conceptually very similar to a
directory on a
file system. Storages can contain streams, as well as other storages.
If an application wishes to persist several data objects to a file, one way to do so would be to open an
IStorage
that represents the contents of that file and save each of the objects within a single
IStream
. One way to accomplish the latter is through the standard COM interface
IPersistStream
. OLE depends heavily on this model to embed objects within documents.
Format
Microsoft's implementation uses a file format known as ''compound files'', and all of the widely deployed structured storage implementations read and write this format. Compound files use a
FAT
In nutrition science, nutrition, biology, and chemistry, fat usually means any ester of fatty acids, or a mixture of such chemical compound, compounds, most commonly those that occur in living beings or in food.
The term often refers specif ...
-like structure to represent storages and streams. Chunks of the file, known as ''sectors'' (these may or may not correspond to sectors of the underlying file system), are allocated as needed to add new streams and to increase the size of existing streams. If streams are deleted or shrink, leaving unallocated sectors, those sectors can be reused for new streams.
The following applications use the OLE Structured Storage (Compound Document Format)
*
Microsoft Office
Microsoft Office, MS Office, or simply Office, is an office suite and family of client software, server software, and services developed by Microsoft. The first version of the Office suite, announced by Bill Gates on August 1, 1988, at CO ...
97–
2003
2003 was designated by the United Nations as the International Year of Fresh water, Freshwater.
In 2003, a Multi-National Force – Iraq, United States-led coalition 2003 invasion of Iraq, invaded Iraq, starting the Iraq War.
Demographic ...
documents:
**
Word
A word is a basic element of language that carries semantics, meaning, can be used on its own, and is uninterruptible. Despite the fact that language speakers often have an intuitive grasp of what a word is, there is no consensus among linguist ...
documents (.DOC, .DOT)
**
Excel spreadsheets (.XLS, .XLT)
**
PowerPoint presentations (.PPT, .POT)
**
Publisher
Publishing is the activities of making information, literature, music, software, and other content, physical or digital, available to the public for sale or free of charge. Traditionally, the term publishing refers to the creation and distribu ...
files (.PUB)
**
Visio files (.VSD)
**
Project
A project is a type of assignment, typically involving research or design, that is carefully planned to achieve a specific objective.
An alternative view sees a project managerially as a sequence of events: a "set of interrelated tasks to be ...
files (.MPP)
**
Microsoft PhotoDraw files (.MIX)
**
Microsoft Outlook
Microsoft Outlook is a personal information manager software system from Microsoft, available as a part of the Microsoft 365 software suites. Primarily popular as an email client for businesses, Outlook also includes functions such as Calendari ...
files (.MSG)
*
Windows Installer
Windows Installer (msiexec.exe, previously known as Microsoft Installer, List of Microsoft codenames, codename Darwin) is a software component and application programming interface (API) of Microsoft Windows used for the Installation (computer ...
files (.MSI, .MSP, .MST)
*
Microsoft Picture It!
Microsoft Picture It! is a discontinued photo editing application created by Microsoft. Microsoft acquired the intellectual property rights and full U.S. trade registration from RomTech, later renamed eGames, and released Version 1.0 of the app ...
/
Microsoft Digital Image
Microsoft Digital Image was a digital image editing program created by Microsoft. It was a successor to Microsoft Picture It!
Microsoft Digital Image came in three different editions: ''Digital Image Standard'', which offered tools for editing im ...
files (.MIX)
* Internet Explorer RSS Feeds Windows RSS Platform files (.feed-ms)
* Windows 7 StickyNotes (.SNT)
* Windows 7 jumplists files
*
Thumbs.db
* Microsoft SQL 2000 Server
DTS packages
* Autodesk Revit
* Autodesk Inventor
*
FlashPix
*
Altium Designer
Native Structured Storage
During the
beta testing
Software testing is the act of checking whether software satisfies expectations.
Software testing can provide objective, independent information about the quality of software and the risk of its failure to a user or sponsor.
Software test ...
phase of
Windows 2000
Windows 2000 is a major release of the Windows NT operating system developed by Microsoft, targeting the server and business markets. It is the direct successor to Windows NT 4.0, and was Software release life cycle#Release to manufacturing (RT ...
, it included a feature titled Native Structured Storage (NSS) for storage of Structured Storage documents (like the binary
Microsoft Office
Microsoft Office, MS Office, or simply Office, is an office suite and family of client software, server software, and services developed by Microsoft. The first version of the Office suite, announced by Bill Gates on August 1, 1988, at CO ...
formats and the
thumbs.db
file
Windows Explorer
File Explorer, previously known as Windows Explorer, is a file manager application and default desktop environment that is included with releases of the Microsoft Windows operating system from Windows 95 onwards. It provides a graphical user i ...
uses to cache thumbnails) with each ''Stream'' that makes up a document stored in a separate
NTFS
NT File System (NTFS) (commonly called ''New Technology File System'') is a proprietary journaling file system developed by Microsoft in the 1990s.
It was developed to overcome scalability, security and other limitations with File Allocation Tabl ...
data stream
In connection-oriented communication, a data stream is the transmission of a sequence of digitally encoded signals to convey information. Typically, the transmitted symbols are grouped into a series of packets.
Data streaming has become u ...
. It included utilities that automatically split up the streams in a regular Structured Storage document into NTFS data streams and vice versa. However, the feature was withdrawn after Beta 3 due to incompatibilities with other OS components, and any NSS files automatically converted to the single data stream format.
Implementations
* For Microsoft .NET:
*
OpenMCDF– Free .NET component for accessing OLE structured storage files,
MPL licensed.
*For Linux:
*
GNOME Structured File Library– Can read Microsoft structured storage files.
*
POLE
* Cross platform C++ for Window/MacOSX/Linux:
*
POLE v3 and up
* For Java:
*
– Java implementation of the OLE 2 Compound Document format, part of
Apache POI.
* For Perl:
*
LAOLA Binary Structures* For JavaScript:
*
js-cfb– JavaScript implementation of the OLE 2 Compound Document format.
* For Python:
*
compoundfiles– Python implementation of the Microsoft Compound File Binary (CFB) format.
References
External links
*
Open Specifications: Compound File Binary File Format{{Windows Components
Microsoft application programming interfaces
Computer file formats