NetShareSetInfo 函数 (lmshare.h)
设置共享资源的参数。
语法
NET_API_STATUS NET_API_FUNCTION NetShareSetInfo(
[in] LMSTR servername,
[in] LMSTR netname,
[in] DWORD level,
[in] LPBYTE buf,
[out] LPDWORD parm_err
);
parameters
[in] servername
指向字符串的指针,该字符串指定要对其执行函数的远程服务器的 DNS 或 NetBIOS 名称。 如果此参数为 NULL,则使用本地计算机。
[in] netname
指向一个字符串的指针,该字符串指定要设置其信息的共享的名称。
[in] level
指定数据的信息级别。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
指定有关共享资源的信息,包括资源的名称和类型以及与资源关联的注释。 buf 参数指向SHARE_INFO_1结构。 |
|
指定有关共享资源的信息,包括资源的名称、类型和权限、密码以及连接数。 buf 参数指向SHARE_INFO_2结构。 |
|
指定有关共享资源的信息,包括资源的名称和类型、所需权限、连接数和其他相关信息。 buf 参数指向SHARE_INFO_502结构。 |
|
指定共享资源的名称。 buf 参数指向SHARE_INFO_503结构。 NetShareSetInfo 函数会忽略此结构的所有成员(shi503_servername除外)。
Windows Server 2003 和 Windows XP: 不支持此信息级别。 |
|
指定与共享资源关联的注释。 buf 参数指向SHARE_INFO_1004结构。 |
|
指定一组描述共享资源的标志。 buf 参数指向SHARE_INFO_1005结构。 |
|
指定共享资源可以容纳的最大并发连接数。 buf 参数指向SHARE_INFO_1006结构。 |
|
指定与指定共享关联的 SECURITY_DESCRIPTOR 。 buf 参数指向SHARE_INFO_1501结构。 |
[in] buf
指向指定数据的缓冲区的指针。 此数据的格式取决于 级别 参数的值。 有关详细信息,请参阅 网络管理功能缓冲区。
[out] parm_err
指向一个值的指针,该值接收导致 ERROR_INVALID_PARAMETER 错误的共享信息结构第一个成员的索引。 如果此参数为 NULL,则错误时不会返回索引。 有关更多信息,请参见下面的“备注”部分。
返回值
如果函数成功,则返回值 NERR_Success。
如果函数失败,则返回值可能是以下错误代码之一。
返回代码 | 说明 |
---|---|
|
用户无权访问请求的信息。 |
|
为 级别 参数指定的值无效。 |
|
指定的参数无效。 有关更多信息,请参见下面的“备注”部分。 |
|
共享名称不存在。 |
注解
此函数仅适用于服务器消息块 (SMB) 共享。 对于其他类型的共享(例如分布式文件系统 (DFS) 或 WebDAV 共享),请使用支持所有类型的共享的 Windows 网络 (WNet) 函数。
只有管理员或 Power Users 本地组的成员,或者具有 Print 或 Server Operator 组成员身份的成员,才能成功执行 NetShareSetInfo 函数。 打印操作员只能设置有关打印机共享的信息。
如果 NetShareSetInfo 函数返回 ERROR_INVALID_PARAMETER,则可以使用 parm_err 参数来指示共享信息结构的第一个无效成员。 (共享信息结构以 SHARE_INFO_ 开头,其格式由 级别 参数指定。) 下表列出了可在 parm_err 参数中返回的值以及出错的相应结构成员。 (前缀 shi* 指示成员可以以多个前缀开头,例如 shi2 或 shi502_.)
值 | 成员 |
---|---|
SHARE_NETNAME_PARMNUM | shi*_netname |
SHARE_TYPE_PARMNUM | shi*_type |
SHARE_REMARK_PARMNUM | shi*_remark |
SHARE_PERMISSIONS_PARMNUM | shi*_permissions |
SHARE_MAX_USES_PARMNUM | shi*_max_uses |
SHARE_CURRENT_USES_PARMNUM | shi*_current_uses |
SHARE_PATH_PARMNUM | shi*_path |
SHARE_PASSWD_PARMNUM | shi*_passwd |
SHARE_FILE_SD_PARMNUM | shi*_security_descriptor |
如果要为 Active Directory 编程,则可以调用某些 Active Directory 服务接口 (ADSI) 方法,以实现通过调用网络管理共享函数可实现的相同功能。 有关详细信息,请参阅 IADsFileShare。
如果为级别参数指定了 503,则SHARE_INFO_503结构的 shi503_servername 成员中指定的远程服务器必须已使用 NetServerTransportAddEx 函数绑定到传输协议。 在调用 NetServerTransportAddEx 时,必须为 级别 参数指定 2 或 3,并且 必须在 传输协议的 SERVER_TRANSPORT_INFO_2 结构中指定 SVTI2_SCOPED_NAME 标志。
示例
以下代码示例演示如何使用对 NetShareSetInfo 函数的调用来设置与共享资源关联的注释。 为此,此示例指定信息级别 1004 (SHARE_INFO_1004) 。
#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[ ])
{
SHARE_INFO_1004 p;
NET_API_STATUS res;
DWORD parm_err = 0;
if(argc<4)
printf("Usage: SetInfo server share \"remark\"\n");
else
{
//
// Fill in SHARE_INFO_1004 structure member.
//
p.shi1004_remark=argv[3];
//
// Call the NetShareSetInfo function,
// specifying information level 1004.
//
res=NetShareSetInfo(argv[1], argv[2], 1004, (LPBYTE)&p, &parm_err);
//
// Display the result of the call.
//
if(res==0)
printf("Remark set.\n");
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 |