- 主题:句柄监听问题
Windows 下用CreateFile生成的HANDLE有办法知道知否有数据写入吗?不想一直去读
发自「今日水木 on iPhone 7 Plus」
--
FROM 112.224.75.*
好像可以用IOCP框架
【 在 jesong 的大作中提到: 】
: Windows 下用CreateFile生成的HANDLE有办法知道知否有数据写入吗?不想一直去读
: 发自「今日水木 on iPhone 7 Plus」
--
FROM 60.186.220.*
环3应该做不到
变通的办法,但不一定好:用ReadDirectoryChangesW()监控文件所在的目录
异步操作比如ReadFileEx()或者IOCP,有可能在数据还没被其他人写入文件时直接返回读取失败
--
FROM 125.35.121.*
想着有没有简单的api直接用
【 在 ziqin 的大作中提到: 】
: 好像可以用IOCP框架
: --
发自「今日水木 on iPhone 7 Plus」
--
FROM 60.209.120.*
我实际是想监听usbtmc接口有没有数据来,Windows 下面好像没有对应的目录
【 在 z16166 的大作中提到: 】
: 环3应该做不到
:
: 变通的办法,但不一定好:用ReadDirectoryChangesW()监控文件所在的目录
:
: 异步操作比如ReadFileEx()或者IOCP,有可能在数据还没被其他人写入文件时直接返回读取失败
: --
发自「今日水木 on iPhone 7 Plus」
--
FROM 60.209.120.*
那就是个假文件,实际是个外设。
和外设通信,用异步I/O就行,重叠I/O(overlapped I/O)就是异步的一种。
ReadFileEx()和IOCP都是重叠I/O,CreateFile()时要指定特殊标记FILE_FLAG_OVERLAPPED。
IOCP一般是用在服务端的,你这个场合用IOCP是杀鸡用牛刀。
异步I/O的好处是不用一直去尝试读写外设。而且可以取消掉未完成的读写操作,比如进程要退出时。
但是异步I/O也有些坑,比如
1、分配的缓冲区在异步I/O的整个操作区间要保持有效,不然就崩
2、进程/线程退出时要对异步I/O进行cancel操作,而且要等待cancel这个操作本身确实完成了,才能安全释放缓冲区。cancel本身也可能是异步的调用。
【 在 jesong 的大作中提到: 】
: 我实际是想监听usbtmc接口有没有数据来,Windows 下面好像没有对应的目录
: 发自「今日水木 on iPhone 7 Plus」
--
修改:z16166 FROM 125.35.121.*
FROM 125.35.121.*
异步io啊
【 在 jesong 的大作中提到: 】
: Windows 下用CreateFile生成的HANDLE有办法知道知否有数据写入吗?不想一直去读发自「今日水 ...
--
FROM 58.247.238.*