NetShareGetInfo 함수(lmshare.h)
서버의 특정 공유 리소스에 대한 정보를 검색합니다.
구문
NET_API_STATUS NET_API_FUNCTION NetShareGetInfo(
[in] LMSTR servername,
[in] LMSTR netname,
[in] DWORD level,
[out] LPBYTE *bufptr
);
매개 변수
[in] servername
함수를 실행할 원격 서버의 DNS 또는 NetBIOS 이름을 지정하는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL이면 로컬 컴퓨터가 사용됩니다.
[in] netname
정보를 반환할 공유의 이름을 지정하는 문자열에 대한 포인터입니다.
[in] level
데이터의 정보 수준을 지정합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
공유 이름을 반환합니다. bufptr 매개 변수는 SHARE_INFO_0 구조를 가리킵니다. |
|
리소스의 이름 및 유형 및 리소스와 연결된 주석을 포함하여 공유 리소스에 대한 정보를 반환합니다. bufptr 매개 변수는 SHARE_INFO_1 구조를 가리킵니다. |
|
리소스 이름, 유형 및 권한, 암호 및 연결 수를 포함하여 공유 리소스에 대한 정보를 반환합니다. bufptr 매개 변수는 SHARE_INFO_2 구조를 가리킵니다. |
|
리소스의 이름 및 형식과 리소스와 연결된 주석을 반환합니다. bufptr 매개 변수는 SHARE_INFO_501 구조를 가리킵니다. |
|
리소스 이름, 유형 및 사용 권한, 연결 수 및 기타 관련 정보를 포함하여 공유 리소스에 대한 정보를 반환합니다. bufptr 매개 변수는 SHARE_INFO_502 구조를 가리킵니다. |
|
리소스 이름, 유형 및 권한, 연결 수 및 기타 관련 정보를 포함하여 공유 리소스에 대한 정보를 지정합니다. buf 매개 변수는 SHARE_INFO_503 구조를 가리킵니다. 이 구조체의 shi503_servername 멤버가 "*"인 경우 구성된 서버 이름이 없습니다.
Windows Server 2003 및 Windows XP: 이 정보 수준은 지원되지 않습니다. |
|
공유가 Dfs 트리 구조의 루트 볼륨인지 여부를 나타내는 값을 반환합니다. bufptr 매개 변수는 SHARE_INFO_1005 구조를 가리킵니다. |
[out] bufptr
데이터를 수신하는 버퍼에 대한 포인터입니다. 이 데이터의 형식은 수준 매개 변수의 값에 따라 달라집니다. 자세한 내용은 네트워크 관리 함수 버퍼를 참조하세요.
이 버퍼는 시스템에서 할당되며 NetApiBufferFree 함수를 사용하여 해제해야 합니다.
반환 값
함수가 성공하면 반환 값이 NERR_Success.
함수가 실패하면 반환 값은 다음 오류 코드 중 하나일 수 있습니다.
반환 코드 | 설명 |
---|---|
|
사용자는 요청한 정보에 대한 액세스 권한이 없습니다. |
|
level 매개 변수에 지정된 값이 잘못되었습니다. |
|
지정된 매개 변수가 잘못되었습니다. |
|
사용 가능한 메모리가 부족합니다. |
|
공유 이름이 없습니다. |
설명
이 함수는 SMB(서버 메시지 블록) 공유에만 적용됩니다. DFS(분산 파일 시스템) 또는 WebDAV 공유와 같은 다른 유형의 공유의 경우 모든 유형의 공유 를 지원하는 WNet(Windows 네트워킹) 함수를 사용합니다.
대화형 사용자(컴퓨터에 로컬로 로그온한 사용자)의 경우 NetShareGetInfo 함수를 실행하기 위해 특별한 그룹 멤버 자격이 필요하지 않습니다. 비대화형 사용자의 경우 수준 2, 502 및 503에서 NetShareEnum 함수를 성공적으로 실행하려면 관리자, 전원 사용자, 인쇄 연산자 또는 서버 운영자 그룹 멤버 자격이 필요합니다. 수준 0 또는 수준 1 호출에는 특별한 그룹 멤버 자격이 필요하지 않습니다.
Windows Server 2003 및 Windows XP: 수준 2 및 502에서 NetShareGetInfo 함수를 성공적으로 실행하려면 모든 사용자, 관리자, 전원 사용자, 인쇄 연산자 또는 서버 운영자 그룹 멤버 자격이 필요합니다.
Active Directory를 프로그래밍하는 경우 특정 ADSI(Active Directory Service Interface) 메서드를 호출하여 네트워크 관리 공유 함수를 호출하여 달성할 수 있는 동일한 기능을 달성할 수 있습니다. 자세한 내용은 IADsFileShare를 참조하세요.
level 매개 변수에 대해 503을 지정한 경우 SHARE_INFO_503 구조체의 shi503_servername 멤버에 지정된 원격 서버가 NetServerTransportAddEx 함수를 사용하여 전송 프로토콜에 바인딩되어야 합니다. NetServerTransportAddEx 호출에서 수준 매개 변수에 대해 2 또는 3을 지정해야 하며 전송 프로토콜의 SERVER_TRANSPORT_INFO_2 구조에서 SVTI2_SCOPED_NAME 플래그를 지정해야 합니다.
예제
다음 코드 샘플에서는 NetShareGetInfo 함수 호출을 사용하여 특정 공유 리소스에 대한 정보를 검색하는 방법을 보여 줍니다. 샘플은 NetShareGetInfo를 호출하여 정보 수준 502( SHARE_INFO_502)를 지정합니다. 호출이 성공하면 코드는 검색된 데이터를 출력합니다. 또한 샘플은 IsValidSecurityDescriptor 함수를 호출하여 shi502_security_descriptor 멤버의 유효성을 검사합니다. 마지막으로 샘플은 정보 버퍼에 할당된 메모리를 해제합니다.
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "Advapi32.lib")
void wmain( int argc, TCHAR *lpszArgv[ ])
{
PSHARE_INFO_502 BufPtr;
NET_API_STATUS res;
LPTSTR lpszServer = NULL, lpszShare;
//
// Check command line arguments.
//
switch(argc)
{
case 3:
lpszServer = lpszArgv[2];
case 2:
lpszShare = lpszArgv[1];
break;
default:
printf("Usage: NetShareGetInfo sharename <servername>\n");
return;
}
//
// Call the NetShareGetInfo function, specifying level 502.
//
if((res = NetShareGetInfo (lpszServer,lpszShare,502,(LPBYTE *) &BufPtr)) == ERROR_SUCCESS)
{
//
// Print the retrieved data.
//
printf("%S\t%S\t%u\n",BufPtr->shi502_netname, BufPtr->shi502_path, BufPtr->shi502_current_uses);
//
// Validate the value of the
// shi502_security_descriptor member.
//
if (IsValidSecurityDescriptor(BufPtr->shi502_security_descriptor))
printf("It has a valid Security Descriptor.\n");
else
printf("It does not have a valid Security Descriptor.\n");
//
// Free the allocated memory.
//
NetApiBufferFree(BufPtr);
}
else
printf("Error: %ld\n",res);
return;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | lmshare.h(Lm.h 포함) |
라이브러리 | Netapi32.lib |
DLL | Netapi32.dll |