在哪里下载 ws2_32.dll 2.2 版的运行函数 WSPRegisterMemory?
Posted
技术标签:
【中文标题】在哪里下载 ws2_32.dll 2.2 版的运行函数 WSPRegisterMemory?【英文标题】:Where download ws2_32.dll version 2.2 for run function WSPRegisterMemory? 【发布时间】:2010-11-08 17:16:47 【问题描述】:哪里下载ws2_32.dll 2.2版的运行函数WSPRegisterMemory?我有 winxp sp3 并安装了最新的平台 SDK 和 Windows 驱动程序工具包,但所有 ws2_32.dll 都有 2.0 版,我有 当我编译项目时,VS 中的“错误 LNK2019:无法解析的外部符号 _WSPRegisterMemory@20”。 但是从http://msdn.microsoft.com/en-us/library/ms742213(VS.85).aspx检查系统中的winsock版本的例子显示结果这个字符串“发现Winsock 2.2 dll没问题”我做错了什么?
【问题讨论】:
【参考方案1】:所有WSP*()
函数都是Winsock SPI 的一部分,而WSA*()
是Winsock API 的一部分。 SPI — 服务提供者接口 — 用于驱动程序端代码,通常是实现 Winsock 分层服务提供者 (LSP) 的驱动程序。如果您没有编写驱动程序并将驱动程序链接到 Windows DDK 库,则不能调用 WSP*()
函数。
链接到常规 Winsock DLL 的程序只能调用 API — 应用程序编程接口 — 函数,其中包括 WSA*()
函数以及像 recv()
这样的 BSD 兼容函数。
此外,您永远不会将 Winsock DLL 从一个系统复制到另一个系统。您的操作系统附带的一个是您应该使用的唯一一个。 DLL 只是为操作系统的网络堆栈提供一个接口,因此用另一个来源的 DLL 替换该 DLL 可能会破坏该系统上的网络,因为另一个 DLL 将尝试与另一个操作系统的低级网络堆栈接口通信。
【讨论】:
感谢您的快速回答!我编写了更改所有接收流量的 LSP dll,并且我遇到了包含数据的重新分配内存缓冲区的问题。这个缓冲区使用 WSPRegisterMemory 分配,所以我需要使用这个函数来分配需要的内存大小。也许您知道其他一些方法来实现这一目标?有什么建议吗? 这是一个不同的问题。请单独发布。以上是关于在哪里下载 ws2_32.dll 2.2 版的运行函数 WSPRegisterMemory?的主要内容,如果未能解决你的问题,请参考以下文章
使用托管 C++ 库时出现 WS2_32.dll_unloaded 异常