IStorage::OpenStream 方法 (objidl.h)
OpenStream 方法以指定的访问模式打开此存储对象中的现有流对象。
语法
HRESULT OpenStream(
[in] const OLECHAR *pwcsName,
[in] void *reserved1,
[in] DWORD grfMode,
[in] DWORD reserved2,
[out] IStream **ppstm
);
参数
[in] pwcsName
指向宽字符 null 结尾的 Unicode 字符串的指针,该字符串包含要打开的流的名称。 000 到 01f 字符(用作流/存储名称的第一个字符)保留供 OLE 使用。 这是复合文件限制,而不是结构化存储限制。
[in] reserved1
保留供将来使用;必须为 NULL。
[in] grfMode
指定要分配给开放流的访问模式。 有关可能值的详细信息和说明,请参阅 STGM 常量。 在复合文件实现中调用此方法时,所选的其他模式必须至少指定STGM_SHARE_EXCLUSIVE。
[in] reserved2
留待将来使用;必须为零。
[out] ppstm
指向 IStream 指针变量的指针,该变量接收指向新打开的流对象的接口指针。 如果发生错误,必须将 *ppstm 设置为 NULL。
返回值
此方法可以返回其中一个值。
返回代码 | 说明 |
---|---|
S_OK | 已成功打开流。 |
E_PENDING | 仅异步存储:部分或全部流数据当前不可用。 |
STG_E_ACCESSDENIED | 没有足够的权限打开流。 |
STG_E_FILENOTFOUND | 具有指定名称的流不存在。 |
STG_E_INSUFFICIENTMEMORY | 由于内存不足,流未打开。 |
STG_E_INVALIDFLAG | 为 grfMode 参数指定的值不是有效的 STGM 常量值。 |
STG_E_INVALIDFUNCTION | 不支持 grfMode 参数中的指定标志组合;例如,在没有 STGM_SHARE_EXCLUSIVE 标志的情况下调用此方法时。 |
STG_E_INVALIDNAME | pwcsName 的值无效。 |
STG_E_INVALIDPOINTER | 为流对象指定的指针无效。 |
STG_E_INVALIDPARAMETER | 其中一个参数无效。 |
STG_E_REVERTED | 存储对象在事务树中的上方还原操作已失效。 |
STG_E_TOOMANYOPENFILES | 由于打开的文件太多,因此未打开流。 |
注解
IStorage::OpenStream 以 grfMode 中指定的访问模式打开此存储对象中的现有流对象。 grfMode 中可以授予的权限有一些限制。 例如,对此存储对象的权限限制对其流的权限。 通常,对流的访问限制需要比其父存储上的访问限制更严格。 必须使用STGM_SHARE_EXCLUSIVE打开复合文件流。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | objidl.h |
Library | Uuid.lib |
DLL | Ole32.dll |