Доступ к данным V7 из других систем. Работа с Compound-файлами.
Compaund-файл представляет из себя хранилище OLE-документов, что-то вроде архива. Он состоит из корневого storage – файла, который может содержать другие storage и stream'ы – объекты (по русски, соответственно, папки и файлы). В MFC Compaund-файлы поддерживаются классами COleStreamFile и ColeDocument.
В качестве места складирования данных Compaund-файлы используются в основном в поделках Микрософта – Excel, Word, Power Point. Видимо, чтобы не отстать от лидера софтостроения, отечественные девелоперы из незабвенной фирмы 1С для своего бухгалтерского детища избрали такой же способ хранения информации.
Compaund-файл включает в себя три составляющие – stream-объекты, storage-объекты и ILockBytes-объекты. Как я уже упоминал, storage – это директории, хранящие в своих недрах stream'ы. LockBytes – это некая прослойка между storage и физической файловой системой.
Итак, получим доступ к содержимому Compaund'а на примере некоего файла с загадочным расширением md. Для этого воспользуемся функцией StgOpenStorage – функцией открытия корневого storage. Внутренние storage можно открыть, используя родительский метод Istorage::OpenStorage.