NetShareAdd 함수(lmshare.h)
서버 리소스를 공유합니다.
구문
NET_API_STATUS NET_API_FUNCTION NetShareAdd(
[in] LMSTR servername,
[in] DWORD level,
[in] LPBYTE buf,
[out] LPDWORD parm_err
);
매개 변수
[in] servername
함수를 실행할 원격 서버의 DNS 또는 NetBIOS 이름을 지정하는 문자열에 대한 포인터입니다. 이 매개 변수가 NULL이면 로컬 컴퓨터가 사용됩니다.
[in] level
데이터의 정보 수준을 지정합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
리소스 이름, 형식 및 권한, 연결 수를 포함하여 공유 리소스에 대한 정보를 지정합니다. buf 매개 변수는 SHARE_INFO_2 구조를 가리킵니다. |
|
리소스 이름, 유형 및 사용 권한, 연결 수 및 기타 관련 정보를 포함하여 공유 리소스에 대한 정보를 지정합니다. buf 매개 변수는 SHARE_INFO_502 구조를 가리킵니다. |
|
리소스 이름, 유형 및 사용 권한, 연결 수 및 기타 관련 정보를 포함하여 공유 리소스에 대한 정보를 지정합니다. buf 매개 변수는 SHARE_INFO_503 구조를 가리킵니다. |
[in] buf
데이터를 지정하는 버퍼에 대한 포인터입니다. 이 데이터의 형식은 수준 매개 변수의 값에 따라 달라집니다. 자세한 내용은 네트워크 관리 함수 버퍼를 참조하세요.
[out] parm_err
ERROR_INVALID_PARAMETER 오류를 일으키는 공유 정보 구조의 첫 번째 멤버의 인덱스를 수신하는 값에 대한 포인터입니다. 이 매개 변수가 NULL이면 인덱스가 오류로 반환되지 않습니다. 자세한 내용은 NetShareSetInfo 함수를 참조하세요.
반환 값
함수가 성공하면 반환 값이 NERR_Success.
함수가 실패하면 반환 값은 다음 오류 코드 중 하나일 수 있습니다.
반환 코드 | 설명 |
---|---|
|
사용자는 요청한 정보에 대한 액세스 권한이 없습니다. |
|
level 매개 변수에 대해 지정된 값이 잘못되었습니다. |
|
문자 또는 파일 시스템 이름이 잘못되었습니다. |
|
지정된 매개 변수가 잘못되었습니다. |
|
공유 이름은 이 서버에서 이미 사용 중입니다. |
|
리디렉션된 리소스에 대해 작업이 유효하지 않습니다. 지정된 디바이스 이름이 공유 리소스에 할당됩니다. |
|
디바이스 또는 디렉터리가 없습니다. |
설명
이 함수는 SMB(서버 메시지 블록) 공유에만 적용됩니다. DFS(분산 파일 시스템) 또는 WebDAV 공유와 같은 다른 유형의 공유의 경우 모든 유형의 공유 를 지원하는 WNet(Windows 네트워킹) 함수를 사용합니다.
관리자, 시스템 운영자 또는 Power Users 로컬 그룹의 구성원만 NetShareAdd 함수에 대한 호출을 사용하여 파일 공유를 추가할 수 있습니다. 인쇄 연산자는 프린터 공유를 추가할 수 있습니다.
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 플래그를 지정해야 합니다.
예제
다음 코드 샘플에서는 NetShareAdd 함수 호출을 사용하여 네트워크 리소스를 공유하는 방법을 보여 줍니다. 코드 샘플은 SHARE_INFO_2 구조체의 멤버를 채우고 NetShareAdd를 호출하여 정보 수준 2를 지정합니다. 이러한 플랫폼은 공유 수준 보안을 지원하지 않으므로 암호가 필요하지 않습니다.
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")
void wmain( int argc, TCHAR *argv[ ])
{
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD parm_err = 0;
if(argc<2)
printf("Usage: NetShareAdd server\n");
else
{
//
// Fill in the SHARE_INFO_2 structure.
//
p.shi2_netname = TEXT("TESTSHARE");
p.shi2_type = STYPE_DISKTREE; // disk drive
p.shi2_remark = TEXT("TESTSHARE to test NetShareAdd");
p.shi2_permissions = 0;
p.shi2_max_uses = 4;
p.shi2_current_uses = 0;
p.shi2_path = TEXT("C:\\");
p.shi2_passwd = NULL; // no password
//
// Call the NetShareAdd function,
// specifying level 2.
//
res=NetShareAdd(argv[1], 2, (LPBYTE) &p, &parm_err);
//
// If the call succeeds, inform the user.
//
if(res==0)
printf("Share created.\n");
// Otherwise, print an error,
// and identify the parameter in error.
//
else
printf("Error: %u\tparmerr=%u\n", res, parm_err);
}
return;
}
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | lmshare.h(Lm.h 포함) |
라이브러리 | Netapi32.lib |
DLL | Netapi32.dll |