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 |