- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个通过串行端口生成消息的设备。当我重新启动设备时,IO 完成端口停止读取字节。
代码是调用 GetQueuedCompletionStatus():
BOOL bRet = GetQueuedCompletionStatus(
m_hCompletionPort,
&dwBytesTransferred,
&dwCompletionKey,
&pOverlapped,
INFINITE);
PortMon 看起来像:
...
IRP_MJ_WRITE Serial1 SUCCESS LENGTH: 7 REBOOT.
IRP_MJ_READ Serial1 CANCELLED LENGTH: 1
记录显示以下结果:
bRet=true, dwBytesTransferred=7, pOverlapped=0x0202B028, GetLastError()=997
(sleep forever)
有什么方法可以检测到这种故障并重新建立通信吗?
我可以监视热跳动并关闭/重新打开串行端口,但 Windows API 允许串行通信像这样静静地中断似乎不对。
最佳答案
如果您对打开以开始读取数据的串行端口的句柄执行WaitForSingleObject
,那么当设备重新启动时句柄是否会发出信号?也许这是一种告诉您何时需要再次打开端口的方法?
关于c++ - GetQueuedCompletionStatus 停止读取串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409364/
我正在编写一个服务器应用程序,我想使用 IOCompletion 端口,所以我为服务器编写了一个原型(prototype),但我遇到了 GetQueuedCompletionStatus 的问题,它永
IOCP 服务器使用 WebSocket 连接。当浏览器发送关闭帧时,服务器删除这个客户端,closesocket函数调用客户端的对象析构函数。但即使在套接字关闭后,GetQueuedCompleti
我编写了基于 iocp 机制管理网络通信的复杂库。问题是,当服务器通过调用 API 方法 closesocket() 关闭连接时,此信息有时会延迟几秒甚至几分钟传输到客户端。我用于检测连接关闭的代码如
我有一个通过串行端口生成消息的设备。当我重新启动设备时,IO 完成端口停止读取字节。 代码是调用 GetQueuedCompletionStatus(): BOOL bRet = GetQueuedC
我有手工制作的线程池。线程从完成端口读取并做一些其他事情。必须结束一个特定的线程。如果它卡在 GetQueuedCompletionStatus() 或 GetQueuedCompletionStat
GetQueuedCompletionStatus() 将完成通知从队列中取出,但它不会返回通知的类型(例如读取通知、写入通知)。 我有责任跟踪我发起的操作,例如,当我使用 WSARecv() 时,我
让我先概括一下。我通过三个端口接收数据。我有一个套接字、一个完成端口和一个工作线程。我调用 WSARecv,工作线程进程调用 GetQueuedCompletionStatus,然后是我的解析例程 R
我一直在测试将 IO 完成端口与线程池中的工作线程相结合,并偶然发现了一个我无法解释的行为。特别是,虽然下面的代码: int data; for (int i = 0; i (&data));
在程序终止期间,如何取消阻塞先前已通过调用 GetQueuedCompletionStatus() 阻塞的线程? 最佳答案 您可以使用 PostQueuedCompletionStatus API 调
我正在尝试将 GetQueuedCompletionStatus 与 Winsocks 一起使用,但我似乎无法正确执行。流程如下: void foo() { ... SOCKET sc
我正在尝试使用 Winsock 创建一个依赖于 IO 完成端口的 UDP 客户端/服务器类,但我无法让 GetQueuedCompletionStatus() 函数在新数据可用时返回。这可能是由于我的
正如它听起来的那样,我正在尝试异步 ReadDirectoryChangesW 和 IO 完成,但它不起作用,具体来说,GetLastError 重复返回 258 (GetQueuedCompleti
当调用 WSASend() 时,我必须向它传递一个 WSAOVERLAPPED 实例,并且我不能重新使用这个 WSAOVERLAPPED 实例,直到先前的 WSASend() 操作已经完成(即当一个完
有两个原因可以导致GetQueuedCompletionStatus()失败(返回FALSE),第一个是因为在调用时关闭了与其关联的完成端口句柄是突出的,如果 lpOverlapped 是 NULL,
背景:我正在使用 CreateIoCompletionPort、WSASend/Recv 和 GetQueuedCompletionStatus 在我的服务器上执行重叠套接字 io。对于流量控制,当发
切换到 Windows 8 后,我的应用程序停止工作。我花了几个小时调试问题,发现 IOCP 的行为在 Windows 8 和以前的版本之间有所不同。我提取了必要的代码来演示和重现问题。 SOCKET
我是一名优秀的程序员,十分优秀!