Metodo IStorage::MoveElementTo (objidl.h)

Il metodo MoveElementTo copia o sposta un sottostorage o un flusso da questo oggetto di archiviazione a un altro oggetto di archiviazione.

Sintassi

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

Parametri

[in] pwcsName

Puntatore a una stringa Unicode con terminazione Null di caratteri wide contenente il nome dell'elemento in questo oggetto di archiviazione da spostare o copiare.

[in] pstgDest

Puntatore IStorage all'oggetto di archiviazione di destinazione.

[in] pwcsNewName

Puntatore a una stringa Unicode con terminazione Null a caratteri wide che contiene il nuovo nome per l'elemento nel nuovo oggetto di archiviazione.

[in] grfFlags

Specifica se l'operazione deve essere uno spostamento (STGMOVE_MOVE) o una copia (STGMOVE_COPY). Vedere l'enumerazione STGMOVE .

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK L'oggetto di archiviazione è stato copiato o spostato correttamente.
E_PENDING Solo archiviazione asincrona: parte o tutti i dati dell'elemento non sono attualmente disponibili.
STG_E_ACCESSDENIED L'oggetto di archiviazione di destinazione è un elemento figlio dell'oggetto di archiviazione di origine. In alternativa, l'oggetto di destinazione e il nome dell'elemento sono uguali all'oggetto di origine e al nome dell'elemento. In altre parole, non è possibile spostare un elemento in se stesso.
STG_E_FILENOTFOUND L'elemento con il nome specificato non esiste.
STG_E_FILEALREADYEXISTS Il file specificato esiste già.
STG_E_INSUFFICIENTMEMORY La copia o lo spostamento non è stata completata a causa di una mancanza di memoria.
STG_E_INVALIDFLAG Il valore per il parametro grfFlags non è valido.
STG_E_INVALIDNAME Valore non valido per pwcsName.
STG_E_INVALIDPOINTER Il puntatore specificato per l'oggetto di archiviazione non è valido.
STG_E_INVALIDPARAMETER Uno dei parametri non è valido.
STG_E_REVERTED L'oggetto di archiviazione è stato invalidato da un'operazione di ripristino sopra di essa nell'albero delle transazioni.
STG_E_TOOMANYOPENFILES La copia o lo spostamento non è stata completata perché sono presenti troppi file aperti.

Commenti

Il metodo IStorage::MoveElementTo equivale in genere a richiamare il metodo IStorage::CopyTo sull'elemento indicato e quindi rimuovere l'elemento di origine. In questo caso, il metodo MoveElementTo usa solo le funzioni disponibili pubblicamente dell'oggetto di archiviazione di destinazione per eseguire lo spostamento.

Se gli oggetti di archiviazione di origine e di destinazione hanno conoscenze speciali sull'implementazione dell'un'altra (ad esempio, essere istanze diverse della stessa implementazione), questo metodo può essere implementato in modo più efficiente.

Prima di chiamare questo metodo, l'elemento da spostare deve essere chiuso e l'archiviazione di destinazione deve essere aperta. Inoltre, l'oggetto di destinazione e l'elemento non possono essere lo stesso nome di oggetto/elemento di archiviazione dell'origine dello spostamento. Ciò significa che non è possibile spostare un elemento in se stesso.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objidl.h
Libreria Uuid.lib
DLL Ole32.dll

Vedi anche

IStorage - Implementazione di file composti

IStorage::CopyTo

STGMOVE