Открывается хранилище как обычный файл, только с большим количеством настроек:
HRESULT StgOpenStorage ( const WCHAR *pwcsName, //имя IStorage *pstgPriority, //используется для повторного открытия при //наличии интерфейса Istorage, обычно NULL DWORD grfMode, //режим доступа SNB snbExclude, //Обычно NULL, но может использоваться для //исключения объектов из хранилища DWORD reserved, //Всегда 0 (зарезервирован) IStorage **ppstgOpen //Интерфейс IStorage, который //возвращается при удачном вызове );
Пример. В данном примере мы открываем уже созданное хранилище. Создали мы его в шаге "Шаг 59 - Корневое хранилище - создание".
#include "stdafx.h" #include "windows.h" #include "ole2.h" #include "iostream.h" int main(int argc, char* argv[]) { OLECHAR filename[20]; wcscpy(filename,L"test.stg"); LPSTORAGE pIStorage=NULL; HRESULT rez; rez=StgOpenStorage(filename,NULL, STGM_READ| STGM_SHARE_EXCLUSIVE, NULL,0,&pIStorage); if (!FAILED(rez)) { cout << "Ok open" << endl; lpStorage->Release(); } else cout << "Error open" << endl; return 0; }