Método IStorage::MoveElementTo (objidl.h)

El método MoveElementTo copia o mueve un substorage o un flujo de este objeto de almacenamiento a otro objeto de almacenamiento.

Sintaxis

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

Parámetros

[in] pwcsName

Puntero a una cadena Unicode terminada en null de caracteres anchos que contiene el nombre del elemento en este objeto de almacenamiento que se va a mover o copiar.

[in] pstgDest

Puntero de IStorage al objeto de almacenamiento de destino.

[in] pwcsNewName

Puntero a una cadena unicode terminada en null de caracteres anchos que contiene el nuevo nombre del elemento en su nuevo objeto de almacenamiento.

[in] grfFlags

Especifica si la operación debe ser un movimiento (STGMOVE_MOVE) o una copia (STGMOVE_COPY). Consulte la enumeración STGMOVE .

Valor devuelto

Este método puede devolver uno de estos valores.

Código devuelto Descripción
S_OK El objeto de almacenamiento se copió o movió correctamente.
E_PENDING Solo almacenamiento asincrónico: parte o todos los datos del elemento no están disponibles actualmente.
STG_E_ACCESSDENIED El objeto de almacenamiento de destino es un elemento secundario del objeto de almacenamiento de origen. O bien, el objeto de destino y el nombre del elemento son los mismos que el objeto de origen y el nombre del elemento. En otras palabras, no se puede mover un elemento a sí mismo.
STG_E_FILENOTFOUND El elemento con el nombre especificado no existe.
STG_E_FILEALREADYEXISTS El archivo especificado ya existe.
STG_E_INSUFFICIENTMEMORY No se completó la copia o el traslado debido a una falta de memoria.
STG_E_INVALIDFLAG El valor del parámetro grfFlags no es válido.
STG_E_INVALIDNAME No es un valor válido para pwcsName.
STG_E_INVALIDPOINTER El puntero especificado para el objeto de almacenamiento no era válido.
STG_E_INVALIDPARAMETER Uno de los parámetros no era válido.
STG_E_REVERTED El objeto de almacenamiento se ha invalidado mediante una operación de reversión encima de él en el árbol de transacciones.
STG_E_TOOMANYOPENFILES No se completó la copia o el traslado porque hay demasiados archivos abiertos.

Comentarios

El método IStorage::MoveElementTo suele ser el mismo que invocar el método IStorage::CopyTo en el elemento indicado y, a continuación, quitar el elemento de origen. En este caso, el método MoveElementTo solo usa las funciones disponibles públicamente del objeto de almacenamiento de destino para llevar a cabo el movimiento.

Si los objetos de almacenamiento de origen y destino tienen conocimientos especiales sobre la implementación del uno al otro (por ejemplo, podrían ser instancias diferentes de la misma implementación), este método se puede implementar de forma más eficaz.

Antes de llamar a este método, se debe cerrar el elemento que se va a mover y el almacenamiento de destino debe estar abierto. Además, el objeto de destino y el elemento no pueden ser el mismo nombre de objeto o elemento de almacenamiento que el origen del movimiento. Es decir, no se puede mover un elemento a sí mismo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objidl.h
Library Uuid.lib
Archivo DLL Ole32.dll

Consulte también

IStorage: implementación de archivos compuestos

IStorage::CopyTo

STGMOVE