2010-11-08 45 views
0

哪里下载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版本的例子显示结果这个字符串“The Winsock 2.2 dll was found okay”我做错了什么?哪里下载运行WSPRegisterMemory函数的ws2_32.dll 2.2版?

回答

3

所有WSP*()函数都是Winsock SPI的一部分,而不是WSA*(),它们是Winsock API的一部分。 SPI —服务提供程序接口—用于驱动程序端代码,通常是实现Winsock分层服务提供程序(LSP)的驱动程序。如果您没有编写驱动程序并将驱动程序链接到Windows DDK库,则不能调用WSP*()函数。

程序链接到正规的Winsock DLL只能调用API —应用程序编程接口—功能,其中包括WSA*()功能,以及像recv() BSD兼容性功能。

此外,您从不将Winsock DLL从一个系统复制到另一个系统。您的操作系统附带的一个是您应该使用的唯一一个。该DLL只是提供了一个到操作系统网络堆栈的接口,因此用另一个源代替该DLL可能会破坏该系统的网络连接,因为另一个DLL将尝试与其他操作系统的低级网络堆栈接口进行通信。

+0

感谢您快速回答!我写LSP的DLL改变所有接收流量,我有包含数据的重新分配内存缓冲区probmle。这个缓冲区使用WSPRegisterMemory进行分配,所以我需要使用这个函数来分配需要的内存大小。也许你知道一些其他方法来实现这一目标?有什么建议? – lebron2323 2010-11-08 23:13:00

+0

这是一个不同的问题。请单独张贴。 – 2010-11-08 23:28:28