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 |