我的应用程序可以在串行连接和套接字连接之间切换,但两者都不能同时打开。因此,当我尝试从套接字切换到串行时,我删除了套接字连接。
这个基于套接字的对象使用了一个名为UsesWinsock的私有类(这对Len Holgate来说是一个很大的挑战,因为这基本上是他的代码(它实际上是RAII,但直到我看到他这样做之前,我从未将它应用于WSA ))。这仅仅调用了WSAStart和WSACleanUp。
当调用WSACleanUp时,它会逐渐进入NTDLL和汇编程序。@err,hr给我“传递给系统调用的数据区太小”作为HRESULT。
我尝试过移动代码:按照继承的顺序移动类会导致销毁序列发生变化,并将函数拆分出来,因此它们是析构序列中最后要调用的内容。两种方法都不起作用。
我非常确定我已经释放了分配的所有东西(只有一个套接字和几个事件),我被卡住了-这对我来说是一个相当重要的问题。
Google is unhelpful returning 4 results of which none solve my problem。
有什么建议吗?
发布于 2009-02-16 11:17:22
那么,您是否按原样使用我的UsesWinsock类?也就是说,你是说它坏了吗?如果是这样的话,直接给我发一封电子邮件可能是更有效的解决问题的方法。)
我注意到我的代码实际上并没有检查dtor中WSACleanUp()返回的代码,所以,我假设您正在检查这个,它是套接字错误,而WSAGetLastError()报告的是错误-缓冲区不足?
https://stackoverflow.com/questions/552948
复制相似问题