Для того, чтобы работать с файлами в хранилище необходимо открыть поток (файл):
HRESULT OpenStream ( const WCHAR *pwcsName, //указатель на имя открываемого потка void *reserved1, //зарезирвированно NULL DWORD grfMode, //режим доступа DWORD reserved2, //зарезирвированно 0 IStream **ppstm //указатель на поток );
Как всегда ошибок и кодов возврата может быть много. Если все нормально, то S_OK.
Пример открытия потока:
#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_READWRITE | STGM_SHARE_EXCLUSIVE ,NULL,0,&pIStorage); if (!FAILED(rez)) { HRESULT hresult; LPSTREAM stream=NULL; hresult = pIStorage->OpenStream(L"MyFile", NULL, STGM_READWRITE|STGM_DIRECT|STGM_SHARE_EXCLUSIVE,0, &stream); if (!FAILED(hresult)) { cout << "ok open file" << endl; } else cout << "error open file" << endl; stream->Release(); pIStorage->Release(); } else cout << "Error open" << endl; return 0; }