繁体   English   中英

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

[英]C++ in Windows: GetLastError code 998 during named pipe communication

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

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

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

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

提前致谢

确实,这很奇怪。 我更新到了最新的Windows SDK,将项目指向了它,并且无需对代码进行任何更改,它现在可以完美运行。 一定是已经修复的错误。 我正在使用VC ++ 9.0附带的库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM