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

O método MoveElementTo copia ou move um substorage ou fluxo desse objeto de armazenamento para outro objeto de armazenamento.

Sintaxe

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

Parâmetros

[in] pwcsName

Ponteiro para uma cadeia de caracteres Unicode terminada em nulo largo que contém o nome do elemento neste objeto de armazenamento a ser movido ou copiado.

[in] pstgDest

Ponteiro IStorage para o objeto de armazenamento de destino.

[in] pwcsNewName

Ponteiro para uma cadeia de caracteres unicode terminada em nulo largo que contém o novo nome do elemento em seu novo objeto de armazenamento.

[in] grfFlags

Especifica se a operação deve ser uma movimentação (STGMOVE_MOVE) ou uma cópia (STGMOVE_COPY). Consulte a enumeração STGMOVE .

Retornar valor

Esse método pode retornar um desses valores.

Código de retorno Descrição
S_OK O objeto de armazenamento foi copiado ou movido com êxito.
E_PENDING Somente armazenamento assíncrono: parte ou todos os dados do elemento estão indisponíveis no momento.
STG_E_ACCESSDENIED O objeto de armazenamento de destino é um filho do objeto de armazenamento de origem. Ou, o objeto de destino e o nome do elemento são os mesmos que o objeto de origem e o nome do elemento. Em outras palavras, você não pode mover um elemento para si mesmo.
STG_E_FILENOTFOUND O elemento com o nome especificado não existe.
STG_E_FILEALREADYEXISTS O arquivo especificado já existe.
STG_E_INSUFFICIENTMEMORY A cópia ou movimentação não foi concluída devido à falta de memória.
STG_E_INVALIDFLAG O valor do parâmetro grfFlags não é válido.
STG_E_INVALIDNAME Não é um valor válido para pwcsName.
STG_E_INVALIDPOINTER O ponteiro especificado para o objeto de armazenamento não era válido.
STG_E_INVALIDPARAMETER Um dos parâmetros não era válido.
STG_E_REVERTED O objeto de armazenamento foi invalidado por uma operação de reverter acima dele na árvore de transações.
STG_E_TOOMANYOPENFILES A cópia ou movimentação não foi concluída porque há muitos arquivos abertos.

Comentários

O método IStorage::MoveElementTo normalmente é o mesmo que invocar o método IStorage::CopyTo no elemento indicado e, em seguida, remover o elemento de origem. Nesse caso, o método MoveElementTo usa apenas as funções disponíveis publicamente do objeto de armazenamento de destino para realizar a movimentação.

Se os objetos de armazenamento de origem e de destino tiverem conhecimento especial sobre a implementação uns dos outros (eles podem, por exemplo, ser instâncias diferentes da mesma implementação), esse método pode ser implementado com mais eficiência.

Antes de chamar esse método, o elemento a ser movido deve ser fechado e o armazenamento de destino deve estar aberto. Além disso, o objeto de destino e o elemento não podem ser o mesmo nome de objeto/elemento de armazenamento que a origem da movimentação. Ou seja, você não pode mover um elemento para si mesmo.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho objidl.h
Biblioteca Uuid.lib
DLL Ole32.dll

Confira também

IStorage – Implementação de arquivo composto

IStorage::CopyTo

STGMOVE