SetServiceA 函数 (nspapi.h)

SetService 函数在注册表中注册或删除一个或多个命名空间中的网络服务。 该函数还可以在一个或多个命名空间中添加或删除网络服务类型。

注释SetService 函数已过时。 Protocol-Independent 名称解析 中详述的函数在 Windows 套接字 2 中提供等效的功能。 为方便 Windows 套接字 1.1 开发人员,参考资料如下所示。
 

语法

INT SetServiceA(
  [in]           DWORD                dwNameSpace,
  [in]           DWORD                dwOperation,
  [in]           DWORD                dwFlags,
  [in]           LPSERVICE_INFOA      lpServiceInfo,
  [in, optional] LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
  [out]          LPDWORD              lpdwStatusFlags
);

参数

[in] dwNameSpace

命名空间或一组默认命名空间,函数将在其中运行。

使用以下常量之一指定命名空间。

价值 意义
NS_DEFAULT
一组默认命名空间。 该函数查询此集中的每个命名空间。 默认命名空间集通常包括系统上安装的所有命名空间。 但是,系统管理员可以从集中排除特定命名空间。 NS_DEFAULT是大多数应用程序应用于 dwNameSpace的值。
NS_DNS
Internet 中使用的域名系统解析主机的名称。
NS_NDS
NetWare 4 提供程序。
NS_NETBT
基于 TCP/IP 层的 NetBIOS。 所有 Windows 系统都将其计算机名称注册到 NetBIOS。 此命名空间用于将计算机名称转换为使用此注册的 IP 地址。
NS_SAP
NetWare 服务广告协议。 如果适用,则可以访问 NetWare bindery。 NS_SAP是一个动态命名空间,用于注册服务。
NS_TCPIP_HOSTS
<systemroot>\system32\drivers\etc\posts 文件中的查找值。
NS_TCPIP_LOCAL
本地 TCP/IP 名称解析机制,包括与主机缓存中的本地主机名和查找值进行比较到 IP 地址映射。

[in] dwOperation

函数将执行的操作。 使用以下值之一指定操作:

价值 意义
SERVICE_REGISTER
将网络服务注册到命名空间。 此操作可与SERVICE_FLAG_DEFER和SERVICE_FLAG_HARD位标志一起使用。
SERVICE_DEREGISTER
从注册表中删除命名空间中的网络服务。 此操作可与SERVICE_FLAG_DEFER和SERVICE_FLAG_HARD位标志一起使用。
SERVICE_FLUSH
执行任何调用的操作,并将SERVICE_FLAG_DEFER位标志设置为 1。
SERVICE_ADD_TYPE
将服务类型添加到命名空间。

对于此操作,请使用 lpServiceInfo 指向的 SERVICE_INFO 结构的 ServiceSpecificInfo 成员传递 SERVICE_TYPE_INFO_ABS 结构。 还必须设置 SERVICE_INFO 结构的 ServiceType 成员。 将忽略其他 SERVICE_INFO 成员。

SERVICE_DELETE_TYPE
从命名空间中删除由指定SERVICE_ADD_TYPE操作的上一个调用添加的服务类型。

[in] dwFlags

一组修改函数操作的位标志。 可以设置以下一个或多个位标志:

价值 意义
SERVICE_FLAG_DEFER
仅当操作SERVICE_REGISTER或SERVICE_DEREGISTER时,此位标志才有效。

如果此位标志为一个,并且有效,则命名空间提供程序应延迟注册或取消注册操作,直到请求SERVICE_FLUSH操作。

SERVICE_FLAG_HARD
仅当操作SERVICE_REGISTER或SERVICE_DEREGISTER时,此位标志才有效。

如果此位标志为一个,并且有效,则命名空间提供程序在执行操作时更新任何相关的持久存储信息。

例如:如果操作涉及在使用持久存储的命名空间中取消注册,则命名空间提供程序将删除相关的持久存储信息。

[in] lpServiceInfo

指向包含网络服务或服务类型信息的 SERVICE_INFO 结构的指针。

[in, optional] lpServiceAsyncInfo

保留以供将来使用。 必须设置为 NULL

[out] lpdwStatusFlags

接收函数状态信息的一组位标志。 定义了以下位标志:

价值 意义
SET_SERVICE_ PARTIAL_SUCCESS
一个或多个命名空间提供程序无法成功执行请求的操作。

返回值

如果函数失败,则返回值SOCKET_ERROR。 若要获取扩展的错误信息,请调用 GetLastErrorGetLastError 可以返回以下扩展错误值。

错误代码 意义
已注册 ERROR_ALREADY_
该函数尝试注册已注册的服务。

言论

注意

nspapi.h 标头将 SetService 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 nspapi.h
Mswsock.lib
DLL Mswsock.dll

另请参阅

GetService

SERVICE_INFO

SERVICE_TYPE_INFO_ABS

Winsock 函数

Winsock 参考