Função MoveFileWithProgressA (winbase.h)
Move um arquivo ou diretório, incluindo seus filhos. Você pode fornecer uma função de retorno de chamada que recebe notificações de progresso.
Para executar essa operação como uma operação transacionada, use a função MoveFileTransacted.
Sintaxe
BOOL MoveFileWithProgressA(
[in] LPCSTR lpExistingFileName,
[in, optional] LPCSTR lpNewFileName,
[in, optional] LPPROGRESS_ROUTINE lpProgressRoutine,
[in, optional] LPVOID lpData,
[in] DWORD dwFlags
);
Parâmetros
[in] lpExistingFileName
O nome do arquivo ou diretório existente no computador local.
Se dwFlags especificar MOVEFILE_DELAY_UNTIL_REBOOT, o arquivo não poderá existir em um compartilhamento remoto porque as operações atrasadas são executadas antes que a rede esteja disponível.
Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres de largura, acrescente "\\?\" ao caminho. Para obter mais informações, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.
Ponta
A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de arquivos de nomenclatura, caminhos e namespaces para obter detalhes.
[in, optional] lpNewFileName
O novo nome do arquivo ou diretório no computador local.
Ao mover um arquivo, lpNewFileName pode estar em um volume ou sistema de arquivos diferente. Se lpNewFileName estiver em outra unidade, você deverá definir o sinalizador MOVEFILE_COPY_ALLOWED em dwFlags.
Ao mover um diretório, lpExistingFileName e lpNewFileName devem estar na mesma unidade.
Se dwFlags especificar MOVEFILE_DELAY_UNTIL_REBOOT e lpNewFileName NULL, MoveFileWithProgress registrará lpExistingFileName a ser excluído quando o sistema for reiniciado. A função falhará se não puder acessar o registro para armazenar as informações sobre a operação de exclusão. Se lpExistingFileName se referir a um diretório, o sistema removerá o diretório na reinicialização somente se o diretório estiver vazio.
Por padrão, o nome é limitado a MAX_PATH caracteres. Para estender esse limite para 32.767 caracteres de largura, acrescente "\\?\" ao caminho. Para obter mais informações, consulte Arquivos de Nomenclatura, Caminhos e Namespaces.
Ponta
A partir do Windows 10, versão 1607, você pode optar por remover a limitação de MAX_PATH sem acrescentar "\\?\". Consulte a seção "Limitação máxima do comprimento do caminho" de arquivos de nomenclatura, caminhos e namespaces para obter detalhes.
[in, optional] lpProgressRoutine
Um ponteiro para um CopyProgressRoutine função de retorno de chamada que é chamada sempre que outra parte do arquivo é movida. A função de retorno de chamada pode ser útil se você fornecer uma interface do usuário que exibe o progresso da operação. Esse parâmetro pode ser NULL.
[in, optional] lpData
Um argumento a ser passado para a função CopyProgressRoutine de retorno de chamada. Esse parâmetro pode ser NULL.
[in] dwFlags
As opções de movimentação. Esse parâmetro pode ser um ou mais dos valores a seguir.
Valor de retorno
Se a função for bem-sucedida, o valor retornado não será zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Ao mover um arquivo entre volumes, se lpProgressRoutine retornar PROGRESS_CANCEL devido ao usuário cancelar a operação, MoveFileWithProgress retornará zero e GetLastError retornará ERROR_REQUEST_ABORTED. O arquivo existente é deixado intacto.
Ao mover um arquivo entre volumes, se lpProgressRoutine retornar PROGRESS_STOP devido ao usuário interromper a operação, MoveFileWithProgress retornará zero e GetLastError retornará ERROR_REQUEST_ABORTED. O arquivo existente é deixado intacto.
Observações
A função MoveFileWithProgress coordena sua operação com o serviço de acompanhamento de link, para que as fontes de link possam ser rastreadas à medida que são movidas.
Para excluir ou renomear um arquivo, você deve ter permissão de exclusão no arquivo ou excluir a permissão filho no diretório pai. Se você configurar um diretório com todo o acesso, exceto excluir e excluir filho e as ACLs de novos arquivos forem herdadas, você poderá criar um arquivo sem poder excluí-lo. No entanto, você pode criar um arquivo e obterá todo o acesso solicitado no identificador retornado a você no momento em que criar o arquivo. Se você solicitou a permissão de exclusão no momento em que criou o arquivo, poderá excluir ou renomear o arquivo com esse identificador, mas não com qualquer outro.
No Windows 8 e no Windows Server 2012, essa função é compatível com as tecnologias a seguir.
Tecnologia | Suportado |
---|---|
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 | Sim |
TFO (Failover Transparente) do SMB 3.0 | Sim |
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) | Sim |
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) | Sim |
ReFS (Sistema de Arquivos Resiliente) | Sim |
CsvFs farão E/S redirecionada para arquivos compactados.
Nota
O cabeçalho winbase.h define MoveFileWithProgress como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | winbase.h (inclua Windows.h) |
biblioteca | Kernel32.lib |
de DLL |
Kernel32.dll |