问题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的数据呢??
while(true)
{
DeviceIoControl(。。)//同步的话,有没有办法设置超时??
}问题2,如果异步调用DeviceIoControl,对于这种循环调用DeviceIoControl,应该怎么写是不是要创建无数的event 啊??(求简单源代码)下面是我的想法(肯定不对吧)
HANDLE event=createevent(null,false,false,"chl");
while(true)
{LPOVERLAPPED lp={0}
DeviceIoControl(。。)//异步
}}另一个线程
waitforsingleobject(event)
然后判断数据,但这到底是哪个DeviceIoControl的数据呢??
3.WaitForMultipleObjects等待,根据Event,计算对应的DeviceIoControl
2、异步的目的在于利用I/O的等待时间来执行其它操作,从而充分利用系统资源来提高性能。循环不停地执行异步I/O是没有意义的。
=====================================长度固定,次数不定,那你怎么还不知道 他要发多少呢?
DWORD ret = WaitForSingleObject(hEvent, 1000); //这个地方你可以设置超时
if( ret == TIME_OUT )
{
..超时处理..
}