导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

DeviceIoControl超时的2个问题

2303191 2009-08-18 07:28:11
问题1,我需要循环调用DeviceIoControl接收数据,但不知道发送方要发送多少
while(true)
{
DeviceIoControl(。。)//同步的话,有没有办法设置超时??
}

问题2,如果异步调用DeviceIoControl,对于这种循环调用DeviceIoControl,应该怎么写是不是要创建无数的event 啊??(求简单源代码)

下面是我的想法(肯定不对吧)
HANDLE event=createevent(null,false,false,"chl");
while(true)
{

LPOVERLAPPED lp={0}
DeviceIoControl(。。)//异步
}

}

另一个线程
waitforsingleobject(event)
然后判断数据,但这到底是哪个DeviceIoControl的数据呢??
...全文
183 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
2303191 2009-08-19
3楼,同步的deviceiocontrol怎么设置超超时呢?因为我没有在deviceiocontrol参数的地方找到超时设置啊,还是说这个超时是发送方搞定的??
回复
2303191 2009-08-19
长度固定,每次收16k,次数不固定
回复
cnzdgs 2009-08-19
[Quote=引用 7 楼 2303191 的回复:]
3楼,同步的deviceiocontrol怎么设置超超时呢?因为我没有在deviceiocontrol参数的地方找到超时设置啊,还是说这个超时是发送方搞定的??
[/Quote]
超时不是通过DeviceIoControl这个函数的参数设置,如果设备支持,有两种可能的形式,一种是通过一个单独的控制码来设置,另一种是InBuffer是一个结构,结构中有一个成员表示超时时间。
回复
MoXiaoRab 2009-08-19
那么,设备是发一次呢,还是发几次?每次发的都是定长还是变长?将你的情况阐述清楚,我也许能帮你
回复
MoXiaoRab 2009-08-19
楼主,你的意思是设备会给你发一段数据,但是你不知道长度,是吧?所以不知道怎么接受?
回复
flyoxs 2009-08-19
可以设置超时,如果目标设备支持的话。一般来说,同步通信都有超时这个概念
回复
MoXiaoRab 2009-08-19
但这到底是哪个DeviceIoControl的数据呢
=====================================

长度固定,次数不定,那你怎么还不知道 他要发多少呢?


DWORD ret = WaitForSingleObject(hEvent, 1000); //这个地方你可以设置超时
if( ret == TIME_OUT )
{
..超时处理..
}
回复
cnzdgs 2009-08-18
1、与具体设备有关,通讯方面的设备有可能允许设置超时时间,查一下该设备的有关资料。
2、异步的目的在于利用I/O的等待时间来执行其它操作,从而充分利用系统资源来提高性能。循环不停地执行异步I/O是没有意义的。
回复
雪影 2009-08-18
2.一个DeviceIoControl需要一个OVERLAPPED,而一个OVERLAPPED对应一个event,有多少个DeviceIoControl就需要多少个Event,但是可以考虑循环使用Event,避免创建无限个Event对象。
3.WaitForMultipleObjects等待,根据Event,计算对应的DeviceIoControl
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……