Hare.ru @ Коллективный разум / Hare.ru @ Дикое место

Архив hare.ru 
Мысли, конвертированные в текст

Концептуальные работы


Все статьи раздела

Доступ к данным V7 из других систем. Работа с Compound-файлами.

Денис Абросимов (где-то в 2001)

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.

Формат:

    WINOLEAPI StgOpenStorage(
    const WCHAR *pwcsName,
    IStorage *pstgPriority,
    DWORD grfMode,
    SNB snbExclude,
    DWORD reserved,
    IStorage **ppstgOpen
    );
Параметры:
  • pwcsName – Указатель на файл, содержащий storage. Параметр игнорируется, если pStgPriority не NULL.
  • pstgPriority – Обычно NULL. Используется для повторного открытия при наличии интерфейса Istorage.
  • grfMode – Режим доступа к storage.
  • snbExclude – Обычно NULL, но может использоваться для исключения объектов из хранилища.
  • reserved – Для возможного использования в будущем. Пока – ноль.
  • ppstgOpen – Интерфейс IStorage, который возвращается при удачном вызове.
Итак, откроем наш MD-файл. Программу Compound Extractor можно скачать вот отсюда.
Исходный текст программы можно найти вот здесь.

В результате программа извлекает на свет божий нужный нам stream-файл.

Более подробно о функциях работы с compound-файлами можно узнать в MSDN, а по-русски – на http://www.firststeps.ru/.

Партнеры:


Также может быть интересно:

Канал Россия 1 на http://spbtvonline.ru/
   
 Сайт поддерживается за счет партнеров:
:::... Сайт содержит архив двух версий hare.ru Карта сайта