能力值:
( LV2,RANK:10 )
|
-
-
2 楼
DWORD msgBoxThread( .....){
AfxMessageBox("等待中");
}
HANDLE hFile = = CreateFile(this->m_linkname , GENERIC_READ ,
0 , NULL , OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL);
OVERLAPPED ol = {0};
ol.hEvent = ::CreateEvent(NULL , FALSE , FALSE , NULL);
::DeviceIoControl(hFile , TESTDRIVER, 0 , NULL,
buf , 4 , &dwRet , &ol);
CreateThread( msgBoxThread, ....);
//等待受信,貌似不能成功。。。
while(::WaitForSingleObject(ol.hEvent , 300) == WAIT_TIMEOUT)
{
}
Send a message to close your "等待中" message box.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
上面的是一种解决方法。
但是我的Msgbox是想提示我等待超时了,而不是提示当前是一直等待状态。
有其他办法么。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
//等待受信,貌似不能成功。。。
if(::WaitForSingleObject(ol.hEvent , 300) == WAIT_TIMEOUT)
{
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这条代码有问题?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
if(::WaitForSingleObject(ol.hEvent , 300) == WAIT_OBJECT_0)
{
//是成功
//也就好似說,有ol.hEvent 相应时,执行到这里
}
if(::WaitForSingleObject(ol.hEvent , 300) == WAIT_TIMEOUT)
{
//这样,则没有 ol.hEvent 相应,且超过300时,会走到这里
}
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
//等待受信,貌似不能成功。。。
while(::WaitForSingleObject(ol.hEvent , 300) == WAIT_TIMEOUT)
{
AfxMessageBox("等待中");
}
这条代码就是说如果ol.hEvent未受信就一直弹出对话框。一直等到受信为止。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我的本意是如果300MS内等待超时的话,就弹出对话框一直提示。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
while(::WaitForSingleObject(ol.hEvent , 0) == WAIT_TIMEOUT)
{
//加上时间计算时间
//如果大于 300时跳出循环
//否则
AfxMessageBox("等待中");
}
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
你这样跟我上面写的代码没什么区别吧。。。。
现在的问题貌似是WaitForSingleObject(ol.hEvent , 0)这个等待语句不起作用
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谁能帮忙解答一下啊。。。。。
|
|
|