Structure of an OLE storage
An OLE storage is a repository of OLE data. A storage is like the
directory structure on a disk. It can be an OLE object and can contain
other OLE objects, each contained within the storage, or within a
substorage within the storage. The substorages can be separate OLE
objects — unrelated pieces like the files in a directory — or they can
form a larger OLE object, such as a document that includes pictures as
shown in the following figure.
Figure: OLE storage structure

A storage or substorage that contains an OLE object has
identifying information that tags it as belonging to a particular server
application. Below that level, the individual parts should be
manipulated only by that server application. You can open a storage that
is a server’s object to extract an object within the storage, but you
should not change the storage.
A storage that is an OLE object has presentation information for
the object. OLE does not need to start the server in order to display
the object, because a rendering is part of the storage.
A storage might not contain an OLE object — it might exist simply
to contain other storages. In this case, you cannot open the storage in
a control (because there would be no object to insert).