C++;在Windows中:命名管道通信期间的GetLastError代码998

C++;在Windows中:命名管道通信期间的GetLastError代码998,windows,visual-c++,Windows,Visual C++,我已经实现了一个命名管道服务器,它与多个命名管道客户端进行通信。一般来说,它可以工作,但在某些情况下,客户端无法从TransactionNamedPipe获得有效的结果。返回的GetLastError代码为998(内存访问无效)。这很奇怪,因为我用于Transact-NamedPipe的句柄在CreateFile中是有效的 我已经实现了客户端在检测到错误时重试(除非管道服务器不活动)。对于其他错误代码(997、230、231),它可以正常工作。但当它遇到错误代码998时,无论重试多少次,命名管道

我已经实现了一个命名管道服务器,它与多个命名管道客户端进行通信。一般来说,它可以工作,但在某些情况下,客户端无法从TransactionNamedPipe获得有效的结果。返回的GetLastError代码为998(内存访问无效)。这很奇怪,因为我用于Transact-NamedPipe的句柄在CreateFile中是有效的

我已经实现了客户端在检测到错误时重试(除非管道服务器不活动)。对于其他错误代码(997、230、231),它可以正常工作。但当它遇到错误代码998时,无论重试多少次,命名管道服务器都不会响应;在命名管道服务器日志中,它只是说客户端已断开连接,但没有数据交换

这背后的原因可能是什么?是因为客户端请求来自多个线程,而命名管道服务器无法处理(几乎)同时发生的请求吗?我还实现了“锁”,以防止客户端同时向命名管道服务器发出请求,但仍然会发生错误

我已经在网上搜索了有类似问题的命名管道通信,但到目前为止没有结果


提前谢谢

这确实很奇怪。我更新了最新的Windows SDK,将我的项目指向它,并且,在代码没有任何更改的情况下,它现在可以完美地工作。这一定是一个已经修复的bug。我使用的是VC++9.0附带的libs