WSCInstallNameSpaceEx32 函数 (ws2spi.h)

WSCInstallNameSpaceEx32 函数安装指定的 32 位命名空间提供程序。 对于能够支持多个名称空间的提供程序,必须为支持的每个命名空间调用此函数,并且每次都必须提供唯一的提供程序标识符。

**注意** 此调用是 WSCInstallNameSpaceEx32 的严格 32 位版本,用于 64 位平台。 它用于允许 64 位进程访问 32 位目录。
 

语法

INT WSCInstallNameSpaceEx32(
  [in] LPWSTR lpszIdentifier,
  [in] LPWSTR lpszPathName,
  [in] DWORD  dwNameSpace,
  [in] DWORD  dwVersion,
  [in] LPGUID lpProviderId,
  [in] LPBLOB lpProviderSpecific
);

参数

[in] lpszIdentifier

指向字符串的指针,该字符串标识与 lpProviderId 参数中传递 (GUID) 关联的提供程序。

[in] lpszPathName

指向 Unicode 字符串的指针,该字符串包含提供程序 DLL 的加载路径。 此字符串观察路径解析的常规规则,可以包含嵌入的环境字符串 (,例如 %SystemRoot%) 。 当 Ws2_32.dll 随后必须代表应用程序加载提供程序 DLL 时,会扩展此类环境字符串。 展开任何嵌入的环境字符串后,Ws2_32.dll 会将生成的字符串传递给 LoadLibrary 函数,后者会将提供程序加载到内存中。 有关详细信息,请参阅 LoadLibrary

[in] dwNameSpace

此提供程序支持的命名空间。

[in] dwVersion

提供程序的版本号。

[in] lpProviderId

指向提供程序 GUID 的指针。 此 GUID 应由 Uuidgen.exe 生成。

[in] lpProviderSpecific

与命名空间条目关联的提供程序特定的数据 Blob。

返回值

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

错误代码 含义
WSAEACCES
调用例程没有足够的权限来安装命名空间。
WSAEINVAL
一个或多个参数无效。
WSANO_RECOVERY
发生了不可恢复的错误。 此错误在以下几种情况下返回:提供程序已安装、用户缺少写入 Winsock 注册表所需的管理权限,或者在创建或安装目录条目时失败。
WSASYSCALLFAILURE
不应失败的系统调用失败。
WSA_NOT_ENOUGH_MEMORY
可用内存不足。 如果内存不足,无法分配新的目录条目,则返回此错误。

注解

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

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

可以使用 WSCEnumNameSpaceProvidersEx32 函数查询与 lpProviderInfo 参数中传递的命名空间条目关联的提供程序特定数据 Blob。

目前,Windows 包含的唯一使用 lpProviderInfo 参数的命名空间提供程序是 NS_EMAIL 提供程序。 NS_EMAIL命名空间提供程序的 lpProviderInfo 参数指向的缓冲区的格式是 一种NAPI_PROVIDER_INSTALLATION_BLOB 结构。

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

要求

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

另请参阅

NAPI_PROVIDER_INSTALLATION_BLOB

WSCEnumNameSpaceProviders32

WSCEnumNameSpaceProvidersEx32

WSCInstallNameSpace32

WSCInstallNameSpaceEx

WSCUnInstallNameSpace32