WSCDeinstallProvider32 函数 (ws2spi.h)

WSCDeinstallProvider32 函数从系统配置数据库中删除指定的 32 位传输提供程序。

注意 此调用使 64 位进程能够操作 32 位 Winsock 目录,因为 WSCDeinstallProvider 在 64 位计算机上仅操作本机 64 位 Windows 套接字目录。

 

语法

int WSCDeinstallProvider32(
  [in]  LPGUID lpProviderId,
  [out] LPINT  lpErrno
);

参数

[in] lpProviderId

指向提供程序的全局唯一标识符的指针 (GUID) 。 此值存储在每个 WSAProtocol_Info 结构中。

[out] lpErrno

指向错误代码(如果函数失败)的指针。

返回值

如果未发生错误, 则 WSCDeinstallProvider32 返回零。 否则,它将返回 SOCKET_ERROR,并且 lpErrno 中提供了特定的错误代码。

错误代码 含义
WSAEINVAL
lpProviderId 参数未指定有效的提供程序。
WSAEFAULT
lpErrno 参数不在用户地址空间的有效部分。
WSANO_RECOVERY
发生了不可恢复的错误。 此错误在以下几种情况下返回:用户缺少写入 Windows 套接字注册表所需的管理权限,或者在打开目录条目时发生故障。
WSA_NOT_ENOUGH_MEMORY
可用内存不足。 如果内存不足,无法分配新的目录条目,则返回此错误。

注解

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

WSCDeinstallProvider32 函数删除指定 32 位提供程序的常见 Windows 套接字 2 配置信息。 此例程成功完成后,将更改存储在注册表中的配置信息。 但是,内存中当前的任何 Ws2_32.dll 实例都无法识别此更改。

成功后, WSCDeinstallProvider32 将尝试通过调用 WSAProviderConfigChange 来提醒已注册更改通知的所有相关应用程序。

WSCDeinstallProvider32 函数只能由以管理员组成员身份登录的用户调用。 如果 WSCDeinstallProvider32 由不是 Administrators 组成员的用户调用,则函数调用将失败,并在 lpErrno 参数中返回WSANO_RECOVERY

对于运行 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

另请参阅

WSAProviderConfigChange

WSCDeinstallProvider

WSCEnumProtocols32

WSCInstallProvider64_32