다음을 통해 공유


NetServerGetInfo 함수(lmserver.h)

NetServerGetInfo 함수는 지정된 서버에 대한 현재 구성 정보를 검색합니다.

구문

NET_API_STATUS NET_API_FUNCTION NetServerGetInfo(
  [in]  LMSTR  servername,
  [in]  DWORD  level,
  [out] LPBYTE *bufptr
);

매개 변수

[in] servername

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

[in] level

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

의미
100
서버 이름 및 플랫폼 정보를 반환합니다. bufptr 매개 변수는 SERVER_INFO_100 구조를 가리킵니다.
101
서버 이름, 형식 및 관련 소프트웨어를 반환합니다. bufptr 매개 변수는 SERVER_INFO_101 구조를 가리킵니다.
102
서버 이름, 형식, 연결된 소프트웨어 및 기타 특성을 반환합니다. bufptr 매개 변수는 SERVER_INFO_102 구조를 가리킵니다.

[out] bufptr

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

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

반환 값

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

함수가 실패하면 반환 값은 다음 오류 코드 중 하나일 수 있습니다.

반환 코드 설명
ERROR_ACCESS_DENIED
5
사용자는 요청한 정보에 대한 액세스 권한이 없습니다.
ERROR_INVALID_LEVEL
124
level 매개 변수에 대해 지정된 값이 잘못되었습니다.
ERROR_INVALID_PARAMETER
87
지정한 매개 변수가 잘못되었습니다.
ERROR_NOT_ENOUGH_MEMORY
8
사용 가능한 메모리가 부족합니다.
NERR_ServerNotStarted
2114
서버 서비스가 시작되지 않았습니다.

설명

관리자 또는 서버 운영자 로컬 그룹 또는 인쇄 또는 서버 운영자 그룹 멤버 자격이 있는 그룹 그룹만 수준 102에서 NetServerGetInfo 함수를 성공적으로 실행할 수 있습니다. 수준 100 또는 수준 101 호출에는 특별한 그룹 멤버 자격이 필요하지 않습니다.

Active Directory를 프로그래밍하는 경우 특정 ADSI(Active Directory Service Interface) 메서드를 호출하여 네트워크 관리 서버 함수를 호출하여 달성할 수 있는 동일한 기능을 달성할 수 있습니다. 자세한 내용은 IADsComputer를 참조하세요.

예제

다음 코드 샘플에서는 NetServerGetInfo 함수 호출을 사용하여 서버에 대한 현재 구성 정보를 검색하는 방법을 보여 줍니다. 샘플은 NetServerGetInfo를 호출하여 정보 수준 101(SERVER_INFO_101)을 지정합니다. 호출이 성공하면 코드는 서버 유형을 식별하려고 시도합니다. 마지막으로 샘플은 정보 버퍼에 할당된 메모리를 해제합니다.

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")

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

int wmain(int argc, wchar_t *argv[])
{
   DWORD dwLevel = 101;
   LPSERVER_INFO_101 pBuf = NULL;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;

   if (argc > 2)
   {
      fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
      exit(1);
   }
   // The server is not the default local computer.
   //
   if (argc == 2)
      pszServerName = (LPTSTR) argv[1];
   //
   // Call the NetServerGetInfo function, specifying level 101.
   //
   nStatus = NetServerGetInfo(pszServerName,
                              dwLevel,
                              (LPBYTE *)&pBuf);
   //
   // If the call succeeds,
   //
   if (nStatus == NERR_Success)
   {
      //
      // Check for the type of server.
      //
      if ((pBuf->sv101_type & SV_TYPE_DOMAIN_CTRL) ||
         (pBuf->sv101_type & SV_TYPE_DOMAIN_BAKCTRL) ||
         (pBuf->sv101_type & SV_TYPE_SERVER_NT))
         printf("This is a server\n");
      else
         printf("This is a workstation\n");
   }
   //
   // Otherwise, print the system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated memory.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

   return 0;
}

요구 사항

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

참고 항목

NetRemoteComputerSupports

NetServerSetInfo

네트워크 관리 함수

네트워크 관리 개요

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

서버 함수