IRootStorage::SwitchToFile 方法 (objidl.h)

SwitchToFile 方法将与存储对象关联的当前文件复制到新文件中。 然后,新文件将用于存储对象和任何未提交的更改。

语法

HRESULT SwitchToFile(
  LPOLESTR pszFile
);

参数

pszFile

指向以 null 结尾的字符串的指针,该字符串指定新文件的文件名。 它不能是现有文件的名称。 如果 为 NULL,此方法将创建一个具有唯一名称的临时文件,你可以调用 IStorage::Stat 来检索临时文件的名称。

返回值

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

返回代码 说明
S_OK 已成功复制文件。
STG_E_MEDIUMFULL 由于存储设备上的空间不足,文件未复制。
STG_E_ACCESSDENIED 未复制该文件,因为调用方无权访问存储设备。
STG_E_INVALIDPOINTER 由于 pszFile 指针无效,因此未复制该文件。
STG_E_FILEALREADYEXISTS 未复制该文件,因为 pszFile) 的新文件名 (指向现有文件。

注解

IRootStorage::SwitchToFile 方法复制与存储对象关联的文件。 COM 容器调用 SwitchToFile ,以在内存不足的情况下对文件执行完全保存。 通常,只有在正常的完全保存操作 (,即保存到临时文件、删除原始文件、重命名临时文件) 失败并出现E_OUTOFMEMORY错误之后,才会执行此操作。

如果存储对象或其中包含的任何内容已封送到另一个进程,则调用 SwitchToFile 方法是错误的。 在调用 SwitchToFile 之前,容器必须为已加载或正在运行的存储对象中的任何元素调用 IPersistStorage::HandsOffStorage 方法。 HandsOffStorage 方法强制元素释放其存储指针并进入关闭存储模式。 容器还必须释放指向此根存储中包含的流或存储的所有指针。 完成完整保存操作后,容器会将包含的元素返回到正常存储模式。

实施者说明

如果要实现自己的存储对象, 则 IRootStorage 方法 (包括 QueryInterfaceAddRefRelease) 不得占用额外的内存或文件句柄。

要求

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

另请参阅

IPersistStorage::HandsOffStorage

IPersistStorage::SaveCompleted

IStorage::Commit

IStorage::Stat