다음을 통해 공유


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

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

의미
2
리소스 이름, 형식 및 권한, 연결 수를 포함하여 공유 리소스에 대한 정보를 지정합니다. buf 매개 변수는 SHARE_INFO_2 구조를 가리킵니다.
502
리소스 이름, 유형 및 사용 권한, 연결 수 및 기타 관련 정보를 포함하여 공유 리소스에 대한 정보를 지정합니다. buf 매개 변수는 SHARE_INFO_502 구조를 가리킵니다.
503
리소스 이름, 유형 및 사용 권한, 연결 수 및 기타 관련 정보를 포함하여 공유 리소스에 대한 정보를 지정합니다. buf 매개 변수는 SHARE_INFO_503 구조를 가리킵니다.

[in] buf

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

[out] parm_err

ERROR_INVALID_PARAMETER 오류를 일으키는 공유 정보 구조의 첫 번째 멤버의 인덱스를 수신하는 값에 대한 포인터입니다. 이 매개 변수가 NULL이면 인덱스가 오류로 반환되지 않습니다. 자세한 내용은 NetShareSetInfo 함수를 참조하세요.

반환 값

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

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

반환 코드 설명
ERROR_ACCESS_DENIED
사용자는 요청한 정보에 대한 액세스 권한이 없습니다.
ERROR_INVALID_LEVEL
level 매개 변수에 대해 지정된 값이 잘못되었습니다.
ERROR_INVALID_NAME
문자 또는 파일 시스템 이름이 잘못되었습니다.
ERROR_INVALID_PARAMETER
지정된 매개 변수가 잘못되었습니다.
NERR_DuplicateShare
공유 이름은 이 서버에서 이미 사용 중입니다.
NERR_RedirectedPath
리디렉션된 리소스에 대해 작업이 유효하지 않습니다. 지정된 디바이스 이름이 공유 리소스에 할당됩니다.
NERR_UnknownDevDir
디바이스 또는 디렉터리가 없습니다.

설명

이 함수는 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

참고 항목

NetServerTransportAddEx

NetShareDel

NetShareDelEx

NetShareSetInfo

네트워크 관리 함수

네트워크 관리 개요

네트워크 공유 함수

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503