WSCEnableNSProvider32 函数 (ws2spi.h)

WSCEnableNSProvider32 函数启用或禁用指定的 32 位命名空间提供程序。 它旨在使最终用户能够更改命名空间提供程序的状态。

注意 此调用是 WSCEnableNSProvider 的严格 32 位版本,用于 64 位计算机上。 它用于允许 64 位进程访问 32 位目录。

 

语法

INT WSCEnableNSProvider32(
  [in] LPGUID lpProviderId,
  [in] BOOL   fEnable
);

参数

[in] lpProviderId

指向命名空间提供程序的全局唯一标识符的指针 (GUID) 。

[in] fEnable

一个布尔值,如果 为 TRUE,则命名空间提供程序设置为活动状态。 如果 为 FALSE,则命名空间提供程序处于禁用状态,并且将不可用于查询操作或服务注册。

返回值

如果未发生错误, WSCEnableNSProvider32 函数将返回 NO_ERROR (零) 。 否则,如果函数失败,它将返回 SOCKET_ERROR ,并且必须使用 WSAGetLastError 函数检索相应的错误代码。

错误代码 含义
WSAEFAULT
lpProviderId 参数指向不在用户地址空间有效部分的内存。
WSAEINVAL
指定的命名空间提供程序标识符无效。
WSASYSCALLFAILURE
不应失败的系统调用失败。
WSA_NOT_ENOUGH_MEMORY
可用内存不足。 如果内存不足,无法分配新的目录条目,则返回此错误。

注解

WSCEnableNSProvider32 函数用于更改命名空间提供程序的状态。 独立软件供应商 (ISV) 通常不应停用另一个 ISV 的命名空间提供程序来激活自己的命名空间提供程序。 选择应该留给用户。

WSCEnableNSProvider32WSCEnableNSProvider 的严格 32 位版本。 在 64 位计算机上,所有不是专门 32 位 (调用,例如,所有不以“32”结尾的函数 ) 本机 64 位目录上运行。 在 64 位计算机上执行的进程必须使用特定的 32 位函数调用,才能在严格的 32 位目录上运行并保持兼容性。 特定 32 位调用的定义和语义与其本机调用相同。

命名空间配置函数不会影响已在运行的应用程序。 新安装的命名空间提供程序对应用程序不可见,命名空间提供程序的激活状态也不会显示更改。 调用 WSCEnableNSProvider32 后启动的应用程序将看到这些更改。

WSCEnableNSProvider32 函数只能由以管理员组成员身份登录的用户调用。 如果 WSCEnableNSProvider32 由非管理员组成员的用户调用,则函数调用将失败。

对于在 Windows Vista 或 Windows Server 2008 上运行的计算机,此功能也可能因为用户帐户控制 (UAC) 而失败。 如果包含此函数的应用程序由以管理员组成员身份登录(而非内置管理员)的用户执行,则此调用将失败,除非应用程序已在清单文件中标记为 requestedExecutionLevel 设置为 requireAdministrator。 如果 Windows Vista 或 Windows Server 2008 上的应用程序缺少此清单文件,则作为内置管理员以外的管理员组成员登录的用户必须在增强的 shell 中执行应用程序,因为内置管理员 (RunAs 管理员) 才能使此功能成功。

要求

   
最低受支持的客户端 Windows Vista、Windows XP Professional x64 Edition [仅限桌面应用]
最低受支持的服务器 Windows Server 2008、Windows Server 2003 x64 Edition [仅限桌面应用]
目标平台 Windows
标头 ws2spi.h
Library Ws2_32.lib
DLL Ws2_32.dll

另请参阅

WSCEnableNSProvider

WSCEnumProtocols32

WSCInstallNameSpace32

WSCUnInstallNameSpace32

WSCWriteNameSpaceOrder32