Поделиться через


Метод IStorage::MoveElementTo (objidl.h)

Метод MoveElementTo копирует или перемещает вложенный журнал или поток из этого объекта хранилища в другой объект хранилища.

Синтаксис

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

Параметры

[in] pwcsName

Указатель на строку Юникода с широким символом, завершающуюся нулевым символом, которая содержит имя элемента в этом объекте хранилища для перемещения или копирования.

[in] pstgDest

Указатель IStorage на целевой объект хранилища.

[in] pwcsNewName

Указатель на строку Юникода с широким символом, завершающуюся null, которая содержит новое имя элемента в новом объекте хранилища.

[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
Header objidl.h
Библиотека Uuid.lib
DLL Ole32.dll

См. также раздел

IStorage — реализация составного файла

IStorage::CopyTo

STGMOVE