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 方法 (包括 QueryInterface、 AddRef 和 Release) 不得占用额外的内存或文件句柄。要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | objidl.h |
Library | Uuid.lib |
DLL | Ole32.dll |
另请参阅
IPersistStorage::HandsOffStorage