NetDfsEnum 함수(lmdfs.h)

서버에서 호스트되는 DFS(분산 파일 시스템) 네임스페이스 또는 서버에서 호스트하는 네임스페이스의 DFS 링크를 열거합니다.

구문

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
);

매개 변수

[in] DfsName

DFS 루트 또는 링크의 UNC(범용 명명 규칙) 경로를 지정하는 문자열에 대한 포인터입니다.

정보 수준 200(DFS_INFO_200)을 지정하면 이 매개 변수는 도메인의 이름입니다. 정보 수준 300(DFS_INFO_300)을 지정하면 이 매개 변수는 서버의 이름입니다.

다른 모든 수준의 경우 문자열은 다음 네 가지 양식 중 하나일 수 있습니다.

Servername\DfsName

또는

Servername\DfsName\link_path

여기서 ServerName 은 독립 실행형 DFS 네임스페이스를 호스트하는 루트 대상 서버의 이름입니다. Dfsname 은 DFS 네임스페이스의 이름입니다. link_path DFS 링크입니다.

문자열은 다음 형식일 수도 있습니다.

Domainname\DomainName\DomDfsName

또는

Domainname\DomDfsName\link_path

여기서 DomainName 은 도메인 기반 DFS 루트를 호스트하는 도메인의 이름입니다. DomDfsName 은 DFS 네임스페이스의 이름입니다. link_path DFS 링크입니다.

문자열 앞에 백슬라이시(\)를 사용할 수 있지만 필수는 아닙니다. 이 매개 변수는 필수입니다.

[in] Level

요청의 정보 수준을 지정합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

1

DFS 루트의 이름과 루트 아래의 모든 링크를 반환합니다. Buffer 매개 변수는 DFS_INFO_1 구조체의 배열을 가리킵니다.

2

DFS 루트 및 루트 아래의 모든 링크에 대한 이름, 주석, 상태 및 대상 수를 반환합니다. Buffer 매개 변수는 DFS_INFO_2 구조체의 배열을 가리킵니다.

3

DFS 루트 및 루트 아래의 모든 링크에 대한 이름, 주석, 상태, 대상 수 및 각 대상에 대한 정보를 반환합니다. Buffer 매개 변수는 DFS_INFO_3 구조체의 배열을 가리킵니다.

4

DFS 루트 및 루트 아래의 모든 링크에 대한 이름, 주석, 상태, GUID, 제한 시간, 대상 수 및 각 대상에 대한 정보를 반환합니다. Buffer 매개 변수는 DFS_INFO_4 구조체의 배열을 가리킵니다.

5

이름, 상태, GUID, 제한 시간, 속성 플래그, 메타데이터 크기 및 DFS 루트 및 루트 아래의 모든 링크에 대한 대상 수를 반환합니다. Buffer 매개 변수는 DFS_INFO_5 구조체의 배열을 가리킵니다.

6

이름, 상태, GUID, 제한 시간, 속성 플래그, 메타데이터 크기, 루트 또는 링크에 대한 DFS 대상 정보 및 DFS 대상 목록을 반환합니다. Buffer 매개 변수는 DFS_INFO_6 구조체의 배열을 가리킵니다.

8

DFS 루트 및 루트 아래의 모든 링크에 대한 이름, 상태, GUID, 제한 시간, 속성 플래그, 메타데이터 크기, 대상 수 및 링크 재분석 지점 보안 설명자를 반환합니다. Buffer 매개 변수는 DFS_INFO_8 구조체의 배열을 가리킵니다.

9

이름, 상태, GUID, 제한 시간, 속성 플래그, 메타데이터 크기, DFS 대상 정보, 링크 재분석 지점 보안 설명자 및 루트 또는 링크에 대한 DFS 대상 목록을 반환합니다. Buffer 매개 변수는 DFS_INFO_9 구조체의 배열을 가리킵니다.

200

도메인의 도메인 기반 DFS 네임스페이스 목록을 반환합니다. Buffer 매개 변수는 DFS_INFO_200 구조체의 배열을 가리킵니다.

300

서버에서 호스트하는 독립 실행형 및 도메인 기반 DFS 네임스페이스를 반환합니다. Buffer 매개 변수는 DFS_INFO_300 구조체의 배열을 가리킵니다.

[in] PrefMaxLen

정보 구조 버퍼에서 이 함수에서 반환해야 하는 바이트 수를 지정합니다. 이 매개 변수가 MAX_PREFERRED_LENGTH 경우 함수는 데이터에 필요한 메모리 양을 할당합니다. 자세한 내용은 아래 설명 부분을 참조하십시오. 수준 200 또는 수준 300을 지정하면 이 매개 변수는 무시됩니다.

[out] Buffer

요청된 정보 구조를 수신하는 버퍼에 대한 포인터입니다. 이 데이터의 형식은 Level 매개 변수의 값에 따라 달라집니다. 이 버퍼는 시스템에서 할당되며 NetApiBufferFree 함수를 사용하여 해제해야 합니다.

[out] EntriesRead

응답에 반환된 실제 항목 수를 수신하는 값에 대한 포인터입니다.

[in, out] ResumeHandle

이 함수에 대한 단일 호출에서 반환할 수 있는 것보다 많은 데이터를 사용할 수 있는 경우 열거를 계속하는 데 사용할 핸들이 포함된 값에 대한 포인터입니다. 핸들은 첫 번째 호출에서 0이어야 하며 후속 호출의 경우 변경되지 않은 상태로 유지되어야 합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

함수가 성공하면 반환 값이 NERR_Success.

더 이상 항목을 열거할 수 없는 경우 반환 값이 ERROR_NO_MORE_ITEMS.

함수가 실패하면 반환 값은 시스템 오류 코드입니다. 오류 코드 목록은 시스템 오류 코드를 참조하세요.

설명

NetDfsEnum 함수를 사용하기 위해 특별한 그룹 멤버 자격이 필요하지 않습니다.

ResumeHandle 매개 변수가 0으로 설정된 NetDfsEnum 함수를 호출하여 열거형을 시작합니다. 열거형 작업을 계속하려면 NetDfsEnum에 대한 이전 호출에서 반환된 ResumeHandle을 사용하여 이 함수를 호출합니다. 이 함수가 ERROR_NO_MORE_ITEMS 반환하지 않으면 이 API에 대한 후속 호출은 나머지 링크를 반환합니다. ERROR_NO_MORE_ITEMS 반환되면 사용 가능한 모든 DFS 링크가 검색됩니다.

NetDfsEnum 함수는 정보 구조 버퍼에 필요한 메모리를 할당합니다. PrefMaxLen 매개 변수에 금액을 지정하면 함수가 반환하는 메모리가 제한됩니다. 그러나 NetDfsEnum 함수가 할당하는 메모리의 실제 크기는 지정한 양보다 클 수 있습니다. 자세한 내용은 네트워크 관리 함수 버퍼 길이를 참조하세요.

DFS 네임스페이스에 대한 동시 업데이트 가능성이 있으므로 호출자는 열거형 작업을 다시 열거할 때 반환되는 결과의 완전성 또는 고유성을 가정해서는 안 됩니다.

예제

다음 코드 샘플에서는 NetDfsEnum 함수를 호출하여 명명된 DFS 루트에 DFS 링크를 나열하는 방법을 보여 줍니다. 샘플은 NetDfsEnum을 호출하여 정보 수준 3( DFS_INFO_3)을 지정합니다. 샘플 코드는 항목을 반복하고 DFS 링크에서 참조하는 각 호스트 서버의 검색된 데이터 및 상태 출력합니다. 마지막으로 샘플은 정보 버퍼에 할당된 메모리를 해제합니다.

#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;
}

요구 사항

   
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 lmdfs.h(LmDfs.h, Lm.h 포함)
라이브러리 Netapi32.lib
DLL Netapi32.dll

참고 항목

DFS_INFO_1

DFS_INFO_2

DFS_INFO_200

DFS_INFO_3

DFS_INFO_300

DFS_INFO_4

DFS_INFO_5

DFS_INFO_6

DFS(분산 파일 시스템) 함수

NetDfs추가

NetDfsRemove

네트워크 관리 함수

네트워크 관리 개요