Шаг 71 - Отрываем поток OpenStream()

Для того, чтобы работать с файлами в хранилище необходимо открыть поток (файл):

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;
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.