NetShareAdd 函数 (lmshare.h)

共享服务器资源。

语法

NET_API_STATUS NET_API_FUNCTION NetShareAdd(
  [in]  LMSTR   servername,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

parameters

[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
级别 参数指定的值无效。
ERROR_INVALID_NAME
字符或文件系统名称无效。
ERROR_INVALID_PARAMETER
指定的参数无效。
NERR_DuplicateShare
共享名称已在此服务器上使用。
NERR_RedirectedPath
操作对重定向的资源无效。 指定的设备名称将分配给共享资源。
NERR_UnknownDevDir
设备或目录不存在。

注解

此函数仅适用于 SMB) 共享 (服务器消息块。 对于其他类型的共享(例如分布式文件系统 (DFS) 或 WebDAV 共享),请使用支持所有类型的共享的 Windows 网络 (WNet) 函数

只有管理员、系统操作员或 Power Users 本地组的成员才能通过调用 NetShareAdd 函数添加文件共享。 打印操作员可以添加打印机共享。

如果要对 Active Directory 进行编程,则可以调用某些 Active Directory 服务接口 (ADSI) 方法来实现通过调用网络管理共享函数可以实现的相同功能。 有关详细信息,请参阅 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)
Library Netapi32.lib
DLL Netapi32.dll

另请参阅

NetServerTransportAddEx

NetShareDel

NetShareDelEx

NetShareSetInfo

网络管理功能

网络管理概述

网络共享函数

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503