Compartilhar via


Função NetDfsMove (lmdfs.h)

Renomeia ou move um link do DFS.

Sintaxe

NET_API_STATUS NET_API_FUNCTION NetDfsMove(
  [in] LPWSTR OldDfsEntryPath,
  [in] LPWSTR NewDfsEntryPath,
  [in] ULONG  Flags
);

Parâmetros

[in] OldDfsEntryPath

Ponteiro para uma cadeia de caracteres que especifica o caminho de origem para a operação de movimentação. Esse valor deve ser um link dfs ou o prefixo de caminho de qualquer link dfs no namespace DFS.

[in] NewDfsEntryPath

Ponteiro para uma cadeia de caracteres que especifica o caminho de destino para a operação de movimentação. Esse valor deve ser um caminho ou um link dfs no mesmo namespace dfs.

[in] Flags

Um conjunto de sinalizadores que descrevem as ações a serem executadas ao mover o link.

DFS_MOVE_FLAG_REPLACE_IF_EXISTS (0x00000001)

Se o caminho de destino já for um link DFS existente, substitua-o como parte da operação de movimentação.

Valor retornado

Se a função for bem-sucedida, o valor retornado será NERR_Success.

Se a função falhar, o valor retornado será um código de erro do sistema. Para obter uma lista de códigos de erro, consulte Códigos de erro do sistema.

Comentários

A função NetDfsMove move convenientemente um link de um nome antigo para um novo. No passado, era necessário executar a ação não trivial de excluir um link incorreto ou antigo e criar um novo, o que se torna complicado quando o link tem um número significativo de destinos ou tem propriedades por destino (como prioridade). Também é comum que os administradores renomeiem ou movam links regularmente.

Os caminhos dfs fornecidos para NetDfsMove podem ser um link DFS real ou apenas um prefixo de caminho de link dfs. Curingas não são permitidos e apenas caminhos absolutos podem ser especificados. Caminhos relativos e sintaxe de nome de caminho especial (como "." ou "..") não são permitidos.

Quando um prefixo de caminho de link dfs é especificado em vez de um caminho DFS completo, a operação de movimentação é executada em todos os links DFS que contêm esse prefixo. Portanto, uma única chamada para NetDfsMove pode "mover" vários links. No entanto, o prefixo de caminho deve resolve para pelo menos um link DFS válido ou a operação de movimentação falhará.

Os exemplos a seguir demonstram diferentes operações de movimentação e os resultados.

    • Caminho antigo: \\MyDfsServer\MyDfsShare\dir1\dir2\link1
    • Novo caminho: \\MyDfsServer\MyDfsShare\dir1\dir2\link2
    Após a movimentação, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 é substituído por \\MyDfsServer\MyDfsShare\dir1\dir2\link2.
    • Caminho antigo: \\MyDfsServer\MyDfsShare\dir1\dir2\link1
    • Novo caminho: \\MyDfsServer\MyDfsShare\dir3\dir4\dir5\link2
    Após a movimentação, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 é substituído por \\MyDfsServer\MyDfsShare\dir3\dir4\dir5\link2. Observe que os componentes folha e não folha foram renomeado e que o número de componentes no novo caminho foi alterado.
    • Caminho antigo: \\MyDfsServer\MyDfsShare\dir1
    • Novo caminho: \\MyDfsServer\MyDfsShare\dir3
    Após a movimentação, todos os links prefixados com \\MyDfsServer\MyDfsShare\dir1 têm esse prefixo substituído por \\MyDfsServer\MyDfsShare\dir3. Portanto, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 e \\MyDfsServer\MyDfsShare\dir1\dir2\link2 agora são \\MyDfsServer\MyDfsShare\dir3\dir2\link1 e \\MyDfsServer\MyDfsShare\dir3\dir2\link1, respectivamente.
    • Caminho antigo: \\MyDfsServer\MyDfsShare\dir1
    • Novo caminho: \\MyDfsServer\MyDfsShare
    Após a movimentação, todos os links prefixados com \\MyDfsServer\MyDfsShare\dir1 têm esse prefixo substituído por \\MyDfsServer\MyDfsShare. Portanto, \\MyDfsServer\MyDfsShare\dir1\dir2\link1 e \\MyDfsServer\MyDfsShare\dir1\dir2\link2 agora são \\MyDfsServer\MyDfsShare\dir2\link1 e \\MyDfsServer\MyDfsShare\dir2\link1, respectivamente.
Se o novo caminho já tiver uma entrada existente, DFS_MOVE_FLAG_REPLACE_IF_EXISTS deverá ser especificado se o novo caminho deve substituir o antigo. Quando esse sinalizador é definido, o caminho colidido é excluído e substituído pelo novo link. Observe que qualquer operação que possa resultar potencialmente em links DFS que se sobreponham completamente falhará, independentemente de DFS_MOVE_FLAG_REPLACE_IF_EXISTS ser especificada ou não. Por exemplo:
  • Links existentes: \\MyDfsServer\MyDfsShare\dir1\link1, \\MyDfsServer\MyDfsShare\link3
  • Caminho antigo:\\MyDfsServer\MyDfsShare\dir1
  • Novo caminho: \\MyDfsServer\MyDfsShare\link3
Se a operação de movimentação tivesse permissão para ser bem-sucedida, o resultado seria dois links completamente sobrepostos: \\MyDfsServer\MyDfsShare\link3\link1 e \\MyDfsServer\MyDfsShare\link3. Portanto, a operação de movimentação deve falhar.

Com servidores DFS baseados em domínio, a operação de movimentação é atômica; ou seja, toda a operação é executada ou falha. No entanto, com servidores DFS autônomos, não há garantia de que a operação de movimentação seja atômica. Nessa situação, uma falha pode resultar em uma operação de movimentação parcialmente concluída e exigirá limpeza em nome do aplicativo de chamada.

Quando a operação de movimentação for bem-sucedida, é garantido que os metadados do DFS foram modificados com êxito. Isso não garante que os links dfs foram realmente criados nos destinos raiz ou que os links DFS podem ser criados no armazenamento dos destinos raiz.

Requisitos

   
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008, Windows Server 2008
Plataforma de Destino Windows
Cabeçalho lmdfs.h (inclua LmDfs.h, Lm.h)
Biblioteca Netapi32.lib
DLL Netapi32.dll

Confira também

Funções dfs (sistema de arquivos distribuído)

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede