IStorage::MoveElementTo 方法 (objidl.h)

MoveElementTo 方法将子存储或流从此存储对象复制或移动到另一个存储对象。

语法

HRESULT MoveElementTo(
  [in] const OLECHAR *pwcsName,
  [in] IStorage      *pstgDest,
  [in] const OLECHAR *pwcsNewName,
  [in] DWORD         grfFlags
);

参数

[in] pwcsName

指向以 null 结尾的宽字符 Unicode 字符串的指针,该字符串包含要移动或复制的此存储对象中元素的名称。

[in] pstgDest

指向目标存储对象的 IStorage 指针。

[in] pwcsNewName

指向以 null 结尾的宽字符 unicode 字符串的指针,该字符串包含其新存储对象中元素的新名称。

[in] grfFlags

指定操作是移动 (STGMOVE_MOVE) 还是复制 (STGMOVE_COPY) 。 请参阅 STGMOVE 枚举。

返回值

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

返回代码 说明
S_OK 已成功复制或移动存储对象。
E_PENDING 仅限异步存储:元素的部分或全部数据当前不可用。
STG_E_ACCESSDENIED 目标存储对象是源存储对象的子级。 或者,目标对象和元素名称与源对象和元素名称相同。 换句话说,不能将元素移动到自身。
STG_E_FILENOTFOUND 具有指定名称的元素不存在。
STG_E_FILEALREADYEXISTS 指定的文件已存在。
STG_E_INSUFFICIENTMEMORY 由于内存不足,复制或移动未完成。
STG_E_INVALIDFLAG grfFlags 参数的值无效。
STG_E_INVALIDNAME pwcsName 的值无效。
STG_E_INVALIDPOINTER 为存储对象指定的指针无效。
STG_E_INVALIDPARAMETER 其中一个参数无效。
STG_E_REVERTED 事务树中存储对象上方的还原操作已失效。
STG_E_TOOMANYOPENFILES 复制或移动未完成,因为打开的文件太多。

注解

IStorage::MoveElementTo 方法通常与在指示的元素上调用 IStorage::CopyTo 方法,然后删除源元素相同。 在这种情况下, MoveElementTo 方法仅使用目标存储对象的公开可用函数来执行移动。

如果源和目标存储对象对彼此的实现有特殊了解, (它们可以是同一实现) 的不同实例,则可以更有效地实现此方法。

在调用此方法之前,必须关闭要移动的元素,并且必须打开目标存储。 此外,目标对象和元素不能与移动源相同的存储对象/元素名称。 也就是说,不能将元素移动到自身。

要求

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

另请参阅

IStorage - 复合文件实现

IStorage::CopyTo

STGMOVE