佚名通过本文主要向大家介绍了爱数anyshare文档云,share,share是什么意思,华为share是什么意思,share666等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 为什么在创建复合文档的时候,标志位里面必须指定一个SHARE属性?
描述:
我必须把grfMode改成
DWORD grfMode = STGM_WRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE;
然后就能成功的创建一个复合文档了:
我的问题是: 为什么没有STGM_SHARE_EXCLUSIVE才可以呢?
我尝试发现STGM_SHARE_DENY_READ/STGM_SHARE_DENY_WRITE/STGM_SHARE_DENY_NONE都不能成功,只有EXCLUSIVE这个标识能成功。
MSDN上面似乎没有找到特别明确的解释啊。这是为什么呢?
解决方案1:
描述:
我只是要创建一个复合文档,如下的代码,运行的时候就会有ASSERT错误:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
IStorage* pStgOpen;
DWORD grfMode = STGM_WRITE | STGM_CREATE;
HRESULT ret=StgCreateDocfile(L"d:\\self\\Learn\\doc1.stg",grfMode,DWORD(),&pStgOpen);
ASSERT(SUCCEEDED(ret));
return 0;
}
我必须把grfMode改成
DWORD grfMode = STGM_WRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE;
然后就能成功的创建一个复合文档了:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
IStorage* pStgOpen;
DWORD grfMode = STGM_WRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE;
HRESULT ret=StgCreateDocfile(L"d:\\self\\Learn\\doc1.stg",grfMode,DWORD(),&pStgOpen);
ASSERT(SUCCEEDED(ret));
return 0;
}
我的问题是: 为什么没有STGM_SHARE_EXCLUSIVE才可以呢?
我尝试发现STGM_SHARE_DENY_READ/STGM_SHARE_DENY_WRITE/STGM_SHARE_DENY_NONE都不能成功,只有EXCLUSIVE这个标识能成功。
MSDN上面似乎没有找到特别明确的解释啊。这是为什么呢?
解决方案1:
看看ret的值是什么,第三个参数置零