다음을 통해 공유


NetConnectionEnum 함수(lmshare.h)

서버의 공유 리소스에 대한 모든 연결 또는 특정 컴퓨터에서 설정된 모든 연결을 나열합니다. 이 연결을 사용하는 사용자가 두 명 이상인 경우 동일한 연결에 대해 둘 이상의 구조를 가져올 수 있지만 다른 사용자 이름을 사용할 수 있습니다.

구문

NET_API_STATUS NET_API_FUNCTION NetConnectionEnum(
  [in]      LMSTR   servername,
  [in]      LMSTR   qualifier,
  [in]      DWORD   level,
  [out]     LPBYTE  *bufptr,
  [in]      DWORD   prefmaxlen,
  [out]     LPDWORD entriesread,
  [out]     LPDWORD totalentries,
  [in, out] LPDWORD resume_handle
);

매개 변수

[in] servername

함수를 실행할 원격 서버의 DNS 또는 NetBIOS 이름을 지정하는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL이면 로컬 컴퓨터가 사용됩니다.

_WIN32_WINNT 또는 FORCE_UNICODE 정의된 경우 이 문자열은 유니코드입니다.

[in] qualifier

관심 있는 연결에 대한 공유 이름 또는 컴퓨터 이름을 지정하는 문자열에 대한 포인터입니다. 공유 이름인 경우 해당 공유 이름에 대한 모든 연결이 나열됩니다. 컴퓨터 이름(예: 두 개의 백슬래시 문자로 시작)인 경우 NetConnectionEnum 은 해당 컴퓨터에서 지정된 서버로의 모든 연결을 나열합니다.

_WIN32_WINNT 또는 FORCE_UNICODE 정의된 경우 이 문자열은 유니코드입니다.

[in] level

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

의미
0
연결 식별자를 반환합니다. bufptr 매개 변수는 CONNECTION_INFO_0 구조체의 배열에 대한 포인터입니다.
1
연결 식별자 및 연결 정보를 반환합니다. bufptr 매개 변수는 CONNECTION_INFO_1 구조체의 배열에 대한 포인터입니다.

[out] bufptr

정보를 수신하는 버퍼의 주소에 대한 포인터입니다. 이 데이터의 형식은 수준 매개 변수의 값에 따라 달라집니다.

이 버퍼는 시스템에서 할당되며 NetApiBufferFree 함수를 사용하여 해제해야 합니다. 함수가 ERROR_MORE_DATA 실패하더라도 버퍼를 해제해야 합니다.

[in] prefmaxlen

반환된 데이터의 기본 최대 길이(바이트)를 지정합니다. MAX_PREFERRED_LENGTH 지정하는 경우 함수는 데이터에 필요한 메모리 양을 할당합니다. 이 매개 변수에 다른 값을 지정하면 함수가 반환하는 바이트 수를 제한할 수 있습니다. 버퍼 크기가 모든 항목을 보유하기에 충분하지 않은 경우 함수는 ERROR_MORE_DATA 반환합니다. 자세한 내용은 네트워크 관리 함수 버퍼 및 네트워크관리 함수 버퍼 길이를 참조하세요.

[out] entriesread

실제로 열거된 요소 수를 받는 값에 대한 포인터입니다.

[out] totalentries

현재 다시 시작 위치에서 열거될 수 있는 총 항목 수를 수신하는 값에 대한 포인터입니다. 애플리케이션은 이 값을 힌트로만 고려해야 합니다.

[in, out] resume_handle

기존 연결 검색을 계속하는 데 사용되는 다시 시작 핸들이 포함된 값에 대한 포인터입니다. 핸들은 첫 번째 호출에서 0이어야 하며 후속 호출의 경우 변경되지 않은 상태로 유지되어야 합니다. 이 매개 변수가 NULL이면 다시 시작 핸들이 저장되지 않습니다.

반환 값

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

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

설명

NetConnectionEnum 함수를 성공적으로 실행하려면 관리자, 서버 또는 인쇄 연산자 또는 Power User 그룹 멤버 자격이 필요합니다.

예제

다음 코드 샘플에서는 NetConnectionEnum 함수를 호출하여 공유 리소스에 대한 연결을 나열하는 방법을 보여 줍니다. 샘플은 NetConnectionEnum을 호출하여 정보 수준 1(CONNECTION_INFO_1)을 지정합니다. 반환할 항목이 있는 경우 coni1_usernameconi1_netname 멤버의 값을 출력합니다. 반환할 항목이 없으면 샘플에서 적절한 메시지를 출력합니다. 마지막으로 코드 샘플은 정보 버퍼에 할당된 메모리를 해제합니다.

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <lm.h>
#include <stdio.h>
#pragma comment(lib, "Netapi32.lib")

void wmain(int argc, wchar_t *argv[ ])
{
   DWORD res, i, er = 0, tr = 0, resume = 0;
   PCONNECTION_INFO_1 p,b;
   LPTSTR lpszServer = NULL, lpszShare = NULL;

   if(argc<2)
      wprintf(L"Syntax: %s [ServerName] ShareName | \\\\ComputerName\n", argv[0]);
   else
   {
      //
      // The server is not the default local computer.
      //
      if(argc>2)
         lpszServer=argv[1];
      //
      // ShareName is always the last argument.
      //
      lpszShare=argv[argc - 1];
      //
      // Call the NetConnectionEnum function,
      //  specifying information level 1.
      //
      res=NetConnectionEnum(lpszServer, lpszShare, 1, (LPBYTE *) &p, MAX_PREFERRED_LENGTH, &er, &tr, &resume);
      //
      // If no error occurred,
      //
      if(res == 0)
      {
         //
         // If there were any results,
         //
         if(er>0)
         {
            b=p;
            //
            // Loop through the entries; print user name and network name.
            //
            for(i=0;i<er;i++)
            {
               printf("%S\t%S\n", b->coni1_username,b->coni1_netname);
               b++;
            }
            // Free the allocated buffer.
            //
            NetApiBufferFree(p);
         }
         // Otherwise, print a message depending on whether 
         //  the qualifier parameter was a computer (\\ComputerName)
         //  or a share (ShareName).
         //
         else
         {
            if(lpszShare[0]=='\\')  
               printf("No connection to %S from %S\n", 
                  (lpszServer == NULL)?TEXT("LocalMachine"):lpszServer, lpszShare);
            else                       
               printf("No one connected to %S\\%S\n",
                  (lpszServer == NULL)?TEXT("\\\\LocalMachine"):lpszServer,lpszShare);
         }        
      }
      //
      // Otherwise, print the error.
      //
      else
         printf("Error: %d\n",res);
   }
   return;
}

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 lmshare.h(Lm.h 포함)
라이브러리 Netapi32.lib
DLL Netapi32.dll

참고 항목

CONNECTION_INFO_0

CONNECTION_INFO_1

네트워크 관리 함수

네트워크 관리 개요

네트워크 공유 함수