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
指定数据的信息级别。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
指定有关共享资源的信息,包括资源的名称、类型和权限以及连接数。 buf 参数指向SHARE_INFO_2结构。 |
|
指定有关共享资源的信息,包括资源名称、类型和权限、连接数以及其他相关信息。 buf 参数指向SHARE_INFO_502结构。 |
|
指定有关共享资源的信息,包括资源名称、类型和权限、连接数以及其他相关信息。 buf 参数指向SHARE_INFO_503结构。 |
[in] buf
指向指定数据的缓冲区的指针。 此数据的格式取决于 级别 参数的值。 有关详细信息,请参阅 网络管理功能缓冲区。
[out] parm_err
指向一个值的指针,该值接收导致 ERROR_INVALID_PARAMETER 错误的共享信息结构的第一个成员的索引。 如果此参数为 NULL,则错误时不会返回索引。 有关详细信息,请参阅 NetShareSetInfo 函数。
返回值
如果函数成功,则返回值 NERR_Success。
如果函数失败,则返回值可能是以下错误代码之一。
返回代码 | 说明 |
---|---|
|
用户无权访问请求的信息。 |
|
为 级别 参数指定的值无效。 |
|
字符或文件系统名称无效。 |
|
指定的参数无效。 |
|
共享名称已在此服务器上使用。 |
|
操作对重定向的资源无效。 指定的设备名称将分配给共享资源。 |
|
设备或目录不存在。 |
注解
此函数仅适用于 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 |