学习IPersist的时候用ATL写了一个可持续性组件,但是用客户端打开的流进行存储的时候发生了0x80030005错误,是决绝访问吧,怎么解决呢~?

解决方案 »

  1.   

    客户端是这么打开流的: hr= ::StgOpenStorage(
    L"C:\\test.stg",
    NULL,
    STGM_READ | STGM_SHARE_EXCLUSIVE,
    NULL,
    NULL,
    &pstg
    );
    if(FAILED(hr)) cout<<"没能打开stg"<<endl;
    pstg->OpenStream(
    L"test",NULL,STGM_READ|STGM_SHARE_EXCLUSIVE,NULL,&pstm);
    if(FAILED(hr)) cout<<"没打开流"<<endl;组件的save/laod:STDMETHODIMP CApp::Save(IStream *pStm, BOOL fClearDirty)
    {
    // TODO: Add your implementation code here
    if(fClearDirty) m_IsDirty=0;
    HRESULT hr=pStm->Write(&m_Value,sizeof(long),NULL);
    if(FAILED(hr)) cout<<"SAVE Error"<<hr<<endl;
    return hr;
    }STDMETHODIMP CApp::Load(IStream *pStm)
    {
    // TODO: Add your implementation code here HRESULT hr=pStm->Read(&m_Value,sizeof(long),NULL);
    if(FAILED(hr)) cout<<"Load Error"<<hr<<endl;
    return hr;
    }
      

  2.   

    能把完整代码发给我?我帮你调一下
    [email protected]