Compartilhar via


Função NetDfsEnum (lmdfs.h)

Enumera os namespaces do DFS (Sistema de Arquivos Distribuído) hospedados em um servidor ou links DFS de um namespace hospedado por um servidor.

Sintaxe

NET_API_STATUS NET_API_FUNCTION NetDfsEnum(
  [in]      LPWSTR  DfsName,
  [in]      DWORD   Level,
  [in]      DWORD   PrefMaxLen,
  [out]     LPBYTE  *Buffer,
  [out]     LPDWORD EntriesRead,
  [in, out] LPDWORD ResumeHandle
);

Parâmetros

[in] DfsName

Ponteiro para uma cadeia de caracteres que especifica o caminho UNC (Convenção de Nomenclatura Universal) da raiz ou link do DFS.

Quando você especifica o nível de informações 200 (DFS_INFO_200), esse parâmetro é o nome de um domínio. Quando você especifica o nível de informações 300 (DFS_INFO_300), esse parâmetro é o nome de um servidor.

Para todos os outros níveis, a cadeia de caracteres pode estar em uma das quatro formas a seguir:

Servername\DfsName

ou

Servername\DfsName\link_path

em que ServerName é o nome do servidor de destino raiz que hospeda o namespace dfs autônomo; Dfsname é o nome do namespace do DFS; e link_path é um link do DFS.

A cadeia de caracteres também pode ser dos seguintes formulários:

Domainname\DomainName\DomDfsName

ou

Domainname\DomDfsName\link_path

em que DomainName é o nome do domínio que hospeda a raiz DFS baseada em domínio; DomDfsName é o nome do namespace do DFS; e link_path é um link do DFS.

Você pode preceder a cadeia de caracteres com barras invertidas (\), mas elas não são necessárias. Este parâmetro é necessário.

[in] Level

Especifica o nível de informações da solicitação. Esse parâmetro pode usar um dos valores a seguir.

1

Retorne o nome da raiz dfs e todos os links na raiz. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_1 .

2

Retorne o nome, o comentário, status e o número de destinos para a raiz do DFS e todos os links na raiz. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_2 .

3

Retorne o nome, o comentário, status, o número de destinos e as informações sobre cada destino para a raiz do DFS e todos os links na raiz. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_3 .

4

Retorne o nome, o comentário, o status, o GUID, o tempo limite, o número de destinos e as informações sobre cada destino para a raiz do DFS e todos os links na raiz. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_4 .

5

Retorne o nome, status, GUID, tempo limite, sinalizadores de propriedade, tamanho dos metadados e número de destinos para uma raiz dfs e todos os links na raiz. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_5 .

6

Retorne o nome, status, GUID, tempo limite, sinalizadores de propriedade, tamanho dos metadados, informações de destino do DFS para uma raiz ou link e uma lista de destinos dfs. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_6 .

8

Retorne o nome, status, GUID, tempo limite, sinalizadores de propriedade, tamanho dos metadados, número de destinos e descritores de segurança de ponto de nova análise de link para uma raiz DFS e todos os links na raiz. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_8 .

9

Retorne o nome, status, GUID, tempo limite, sinalizadores de propriedade, tamanho dos metadados, informações de destino do DFS, descritores de segurança de ponto de nova análise de link e uma lista de destinos dfs para uma raiz ou link. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_9 .

200

Retorne a lista de namespaces DFS baseados em domínio no domínio. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_200 .

300

Retornar os namespaces DFS autônomos e baseados em domínio hospedados por um servidor. O parâmetro Buffer aponta para uma matriz de estruturas de DFS_INFO_300 .

[in] PrefMaxLen

Especifica o número de bytes que devem ser retornados por essa função no buffer de estrutura de informações. Se esse parâmetro for MAX_PREFERRED_LENGTH, a função alocará a quantidade de memória necessária para os dados. Para obter mais informações, consulte a seção Comentários a seguir. Esse parâmetro será ignorado se você especificar o nível 200 ou o nível 300.

[out] Buffer

Ponteiro para um buffer que recebe as estruturas de informações solicitadas. O formato desses dados depende do valor do parâmetro Level . Esse buffer é alocado pelo sistema e deve ser liberado usando a função NetApiBufferFree .

[out] EntriesRead

Ponteiro para um valor que recebe o número real de entradas retornadas na resposta.

[in, out] ResumeHandle

Ponteiro para um valor que contém um identificador a ser usado para continuar uma enumeração quando mais dados estiverem disponíveis do que podem ser retornados em uma única chamada para essa função. O identificador deve ser zero na primeira chamada e deixado inalterado para chamadas subsequentes. Para obter mais informações, consulte a seção Comentários a seguir.

Valor retornado

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

Se não houver mais entradas disponíveis para serem enumeradas, o valor retornado será ERROR_NO_MORE_ITEMS.

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

Nenhuma associação de grupo especial é necessária para usar a função NetDfsEnum .

Chame a função NetDfsEnum com o parâmetro ResumeHandle definido como zero para iniciar a enumeração. Para continuar a operação de enumeração, chame essa função com ResumeHandle retornado pela chamada anterior para NetDfsEnum. Se essa função não retornar ERROR_NO_MORE_ITEMS, as chamadas subsequentes para essa API retornarão os links restantes. Depois que ERROR_NO_MORE_ITEMS é retornado, todos os links dfs disponíveis foram recuperados.

A função NetDfsEnum aloca a memória necessária para o buffer de estrutura de informações. Se você especificar um valor no parâmetro PrefMaxLen , ele restringirá a memória retornada pela função. No entanto, o tamanho real da memória alocada pela função NetDfsEnum pode ser maior do que a quantidade especificada. Para obter informações adicionais, consulte Comprimentos do buffer de função de gerenciamento de rede.

Devido à possibilidade de atualizações simultâneas para o namespace do DFS, o chamador não deve assumir a integridade ou a exclusividade dos resultados retornados ao retomar uma operação de enumeração.

Exemplos

O exemplo de código a seguir demonstra como listar os links do DFS em uma raiz DFS nomeada com uma chamada para a função NetDfsEnum . O exemplo chama NetDfsEnum, especificando o nível de informações 3 ( DFS_INFO_3). O código de exemplo percorre as entradas e imprime os dados recuperados e o status de cada servidor host referenciado pelo link do DFS. Por fim, o exemplo libera a memória alocada para o buffer de informações.

#include <windows.h>
#include <lm.h>
#include <lmdfs.h>
#include <stdio.h>

#pragma comment(lib, "Netapi32.lib")

void wmain(int argc, wchar_t *argv[ ])
{
    PDFS_INFO_3 pData, p;
    PDFS_STORAGE_INFO ps;
    DWORD er = 0, hResume = 0, res, i, j;

    if(argc < 2)
        wprintf(L"Syntax: %s \\\\DfsName\n", argv[0]);
    else
    {
        //
        // Call the NetDfsEnum function, specifying level 3.
        //
        res = NetDfsEnum(argv[1], 3, MAX_PREFERRED_LENGTH, (LPBYTE *) &pData, &er, &hResume);

        // Call NetDfsEnum until all available entries are returned.
        // NetDfsEnum will return ERROR_NO_MORE_ITEMS when all entries 
        // have been obtained.
        while (res == ERROR_SUCCESS)
        {
            p = pData;
            //
            // Loop through the entries; print the data.
            //
            for(i = 1; i <= er; i++)
            {
                printf("%-30S%u\n", p->EntryPath, p->NumberOfStorages);
                ps = p->Storage;
                //
                // Loop through each target.
                //
                for(j = 1; j <= p->NumberOfStorages; j++)
                {
                    //
                    // Print the status (Offline/Online) and the name 
                    // of each target referenced by the DFS link.
                    //
                    printf("    %S  ", (ps->State == DFS_STORAGE_STATE_OFFLINE) ? TEXT("Offline"):TEXT("Online "));
                    printf("\\\\%S\\%S\n", ps->ServerName, ps->ShareName);
                    ps++;
                }
                p++;
            }
            // Free the allocated buffer.
            //
            NetApiBufferFree(pData);


            res = NetDfsEnum(argv[1], 3, MAX_PREFERRED_LENGTH, (LPBYTE *) &pData, &er, &hResume);
        }


        if (res == ERROR_NO_MORE_ITEMS)
        {
            // the last of the entries have been processed.
            res = ERROR_SUCCESS;
            printf("Enumeration done\n");
        } 
        else 
        {
            // an error occurred.
            printf("Error: %u\n", res);
        }
    }
    return;
}

Requisitos

   
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte 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

DFS_INFO_1

DFS_INFO_2

DFS_INFO_200

DFS_INFO_3

DFS_INFO_300

DFS_INFO_4

DFS_INFO_5

DFS_INFO_6

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

NetDfsAdd

NetDfsRemove

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede