WSCWriteProviderOrder32 函数 (sporder.h)

WSCWriteProviderOrder32 函数用于对可用的 32 位传输提供程序重新排序。 协议的顺序决定了枚举或选择使用时协议的优先级。

注意 此调用是 WSCWriteProviderOrder 的严格 32 位版本,用于 64 位平台。 提供它以允许 64 位进程修改 32 位目录。
 

语法

int WSCWriteProviderOrder32(
  [in] LPDWORD lpwdCatalogEntryId,
  [in] DWORD   dwNumberOfEntries
);

参数

[in] lpwdCatalogEntryId

指向在 WSAPROTOCOL_INFO 结构中找到的 CatalogEntryId 元素数组的指针。 CatalogEntryId 元素的顺序是协议的新优先级顺序。

[in] dwNumberOfEntries

lpwdCatalogEntryId 数组中的元素数。

返回值

如果例程成功 函数将返回ERROR_SUCCESS (零) 。 否则,它将返回特定的错误代码。

错误代码 含义
WSAEINVAL
一个或多个参数无效,未执行任何操作。
WSANO_RECOVERY
发生不可恢复的错误。 此错误在以下几种情况下返回:用户缺少写入 Winsock 注册表所需的管理权限,或者在打开或写入目录条目时失败。
WSA_NOT_ENOUGH_MEMORY
可用内存不足。 如果内存不足,无法分配新的目录条目,则返回此错误。
(其他)
例程可能会返回任何注册表错误代码。

注解

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

传输服务提供程序的最初安装顺序控制在服务提供程序接口上通过 WSCEnumProtocols32 或应用程序接口上的 WSAEnumProtocols 枚举这些提供程序的顺序。 更重要的是,当客户端根据套接字的地址系列、类型和协议标识符请求创建套接字时,此顺序还控制考虑协议和服务提供商的顺序。

Windows 套接字 2 包含一个名为 Sporder.exe 的应用程序,该应用程序允许在安装协议后以交互方式重新排列已安装协议的目录。 Windows 套接字 2 还包括一个辅助 DLL, Sporder.dll 用于导出此程序接口以重新排序协议。 可以通过与 Sporder.lib 链接来导入此接口。

下面是 WSCWriteProviderOrder32 函数可能失败的情况:

  • dwNumberOfEntries 参数不等于已注册的服务提供程序的数量。
  • lpwdCatalogEntryId 包含无效的目录标识符。
  • lpwdCatalogEntryId 一次不包含所有有效的目录标识符。
  • 由于某种原因,例程无法访问注册表 (例如,用户权限) 不足。
  • 另一个进程 (或线程) 当前正在调用函数。

成功后, WSCWriteProviderOrder32 将尝试通过调用 WSAProviderConfigChange 向已注册更改通知的所有相关应用程序发出警报。

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

要求

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

另请参阅

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols32