描述:
小弟用ISTORAGE创建了个名为“TEST”的ISTREAM,返回值显示成功了,
但我后来使用ISTORAGE.OPENSTREAM方法的时候为什么就是得不到名为TEST得STREAM呢?
哪位大哥知道快点告诉我亚,救命啊!
解决方案1:
给你一段我的代码:
IStorage *stg = 0;
IStream *stream = 0;
IStream *stream1 = 0;
HRESULT re = ::StgOpenStorage(L"c:\\my",NULL, STGM_SHARE_EXCLUSIVE | STGM_DIRECT | STGM_READWRITE,NULL,0,&stg);
if(FAILED(re))
{
std::cout<<"the file is a structured storage file";
}
else
{
re = stg->CreateStream(L"mystream",STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE,0,0,&stream1);
if(SUCCEEDED(re))
{
stream1->Release ();
}
re = stg->OpenStream(L"mystream",NULL,STGM_READWRITE | STGM_DIRECT | STGM_SHARE_EXCLUSIVE,0,&stream);
if(FAILED(re))
{
::GetLastError();
}
ULONG cb;
re = stream->Write(L"Hello",strlen("Hello"),&cb);
char s[256];
unsigned short olestr[256];
re = stream->Read(olestr,255,&cb);
wcstombs(s,olestr,255);
cout<<s<<endl;
stream->Release();
}
stg->Release();