NetSessionGetInfo 함수(lmshare.h)

특정 서버와 워크스테이션 간에 설정된 세션에 대한 정보를 검색합니다.

구문

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

매개 변수

[in] servername

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

[in] UncClientName

정보를 반환할 컴퓨터 세션의 이름을 지정하는 문자열에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다. 자세한 내용은 NetSessionEnum을 참조하세요.

[in] username

세션 정보를 반환할 사용자의 이름을 지정하는 문자열에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] level

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

의미
0
세션을 설정한 컴퓨터의 이름을 반환합니다.

bufptr 매개 변수는 SESSION_INFO_0 구조를 가리킵니다.

1
컴퓨터의 이름, 사용자 이름 및 컴퓨터의 파일, 파이프 및 디바이스 열기를 반환합니다.

bufptr 매개 변수는 SESSION_INFO_1 구조를 가리킵니다.

2
수준 1에 대해 표시된 정보 외에도 클라이언트 유형과 사용자가 세션을 설정한 방법을 반환합니다.

bufptr 매개 변수는 SESSION_INFO_2 구조를 가리킵니다.

10
컴퓨터의 이름을 반환합니다. 사용자의 이름입니다. 세션에 대한 활성 및 유휴 시간입니다.

bufptr 매개 변수는 SESSION_INFO_10 구조를 가리킵니다.

[out] bufptr

데이터를 수신하는 버퍼에 대한 포인터입니다. 이 데이터의 형식은 수준 매개 변수의 값에 따라 달라집니다. 자세한 내용은 네트워크 관리 함수 버퍼 및 네트워크관리 함수 버퍼 길이를 참조하세요.

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

반환 값

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

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

반환 코드 설명
ERROR_ACCESS_DENIED
사용자는 요청한 정보에 대한 액세스 권한이 없습니다.
ERROR_INVALID_LEVEL
level 매개 변수에 지정된 값이 잘못되었습니다.
ERROR_INVALID_PARAMETER
지정된 매개 변수가 잘못되었습니다.
ERROR_NOT_ENOUGH_MEMORY
사용 가능한 메모리가 부족합니다.
NERR_ClientNameNotFound
컴퓨터 이름을 가진 세션이 없습니다.
NERR_InvalidComputer
컴퓨터 이름이 잘못되었습니다.
NERR_UserNotFound
사용자 이름을 찾을 수 없습니다.

설명

관리자 또는 서버 운영자 로컬 그룹의 멤버만 수준 1 또는 수준 2에서 NetSessionGetInfo 함수를 성공적으로 실행할 수 있습니다. 수준 0 또는 수준 10 호출에는 특별한 그룹 멤버 자격이 필요하지 않습니다.

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

멤버 서버 또는 워크스테이션의 정보 수준 1 또는 2에서 이 함수를 호출하는 경우 인증된 모든 사용자가 정보를 볼 수 있습니다.

예제

다음 코드 샘플에서는 NetSessionGetInfo 함수 호출을 사용하여 세션에 대한 정보를 검색하는 방법을 보여 줍니다. 샘플은 NetSessionGetInfo를 호출하여 정보 수준 10( SESSION_INFO_10)을 지정합니다. 호출이 성공하면 코드는 세션에 대한 정보를 출력합니다. 마지막으로 샘플은 정보 버퍼에 할당된 메모리를 해제합니다.

#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 = 10;
   LPSESSION_INFO_10 pBuf = NULL;
   LPTSTR pszServerName = NULL;
   LPTSTR pszUNCClientName = NULL;
   LPTSTR pszUserName = NULL;
   NET_API_STATUS nStatus;
   //
   // Check command line arguments.
   //
   if (argc == 3)
   {
      pszUNCClientName = argv[1];
      pszUserName = argv[2];
   }
   else if (argc == 4)
   {
      pszServerName = argv[1];
      pszUNCClientName = argv[2];
      pszUserName = argv[3];
   }
   else
   {
      wprintf(L"Usage: %s [\\\\ServerName] \\\\ClientName UserName\n", argv[0]);
      exit(1);
   }
   //
   // Call the NetSessionGetInfo function, specifying level 10.
   //
   nStatus = NetSessionGetInfo(pszServerName,
                               pszUNCClientName,
                               pszUserName,
                               dwLevel,
                               (LPBYTE *)&pBuf);
   //
   // If the call succeeds,
   //
   if (nStatus == NERR_Success)
   {
      if (pBuf != NULL)
      {
         //
         // Print the session information. 
         //
         wprintf(L"\n\tClient: %s\n", pBuf->sesi10_cname);
         wprintf(L"\tUser:   %s\n", pBuf->sesi10_username);
         printf("\tActive: %d\n", pBuf->sesi10_time);
         printf("\tIdle:   %d\n", pBuf->sesi10_idle_time);
      }
   }
   //
   // Otherwise, indicate a 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 XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 lmshare.h(Lm.h 포함)
라이브러리 Netapi32.lib
DLL Netapi32.dll

참고 항목

NetSessionDel

NetSessionEnum

네트워크 관리 함수

네트워크 관리 개요

SESSION_INFO_0

SESSION_INFO_1

SESSION_INFO_10

SESSION_INFO_2

세션 함수