IStream::Commit 方法 (objidl.h)

Commit 方法可确保在事务处理模式下打开的流对象所做的任何更改都反映在父存储中。 如果流对象在直接模式下打开, 则 IStream::Commit 除了将所有内存缓冲区刷新到下一级存储对象之外,也不起作用。 流的 COM 复合文件实现不支持在事务处理模式下打开流。

语法

HRESULT Commit(
  [in] DWORD grfCommitFlags
);

参数

[in] grfCommitFlags

控制提交对流对象的更改的方式。 有关这些值的定义,请参阅 STGC 枚举。

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK 流对象的更改已成功提交到父级别。
E_PENDING 仅异步存储:当前部分或所有流的数据不可用。
STG_E_MEDIUMFULL 由于存储设备上缺少空间,提交操作失败。
STG_E_REVERTED 对象已被事务树中上述还原操作失效。

注解

Commit 方法可确保在事务处理模式下打开的流对象的更改反映在父存储中。 自流打开或上次提交以来对流的更改将反映到父存储对象。 如果父级在事务处理模式下打开,父级可能会在以后还原,将更改回滚到此流对象。 复合文件实现不支持以事务处理模式打开流,因此此方法除了刷新内存缓冲区之外,效果很少。 有关详细信息,请参阅 IStream - 复合文件实现

如果流在直接模式下打开,此方法可确保已将任何内存缓冲区刷新到基础存储对象。 这类似于传统文件系统中的刷新。

IStream 接口的实现是基础文件系统 API 的包装器时,IStream::Commit 方法在直接模式流上非常有用。 在这种情况下, IStream::Commit 将连接到文件系统的刷新调用。

要求

   
最低受支持的客户端 Windows 2000 专业版 [桌面应用|UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用|UWP 应用]
目标平台 Windows
标头 objidl.h
Library Uuid.lib
DLL Ole32.dll

请参阅

IStorage::Commit

IStream - 复合文件实现