帮我看看这段代码|!!!!!!!!

sunboyljp 2008-07-09 06:18:25
dwWait = WaitForMultipleObjects(cdwIClass+1, ph, FALSE, INFINITE);
if ((dwWait < WAIT_OBJECT_0) || (dwWait >= (WAIT_OBJECT_0 + cdwIClass + 1)))
{
IFDBG(DebugOut(DEBUG_HCI_TRANSPORT, L"[HCIUNIV] HciUnivNotifyThread - WaitForMultipleObjects returned failure.\n"));
break;
}请问WaitForMultipleObjects这个函数如果参数是INFINITE,是不是一定要等到要号才会执行下面的代码呀?如果是,那为什么会有dwWait >= (WAIT_OBJECT_0 + cdwIClass + 1这样的结果呢?
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoteng1984 2008-07-15
  • 打赏
  • 举报
回复
我查了一下MSDN里的WaitForMultipleObjects这个函数,在Return Values部分里,有这样一句话:
If the function fails, the return value is WAIT_FAILED. To get extended error information, call GetLastError
当该函数失败后,返回值是WAIT_FAILED。也就是说,这个函数有失败的可能性,这样,返回码就不在[WAIT_OBJECT_0, WAIT_OBJECT_0 + cdwIClass]之间了
sunlin7 2008-07-12
  • 打赏
  • 举报
回复
出错的情况下呢?
sunboyljp 2008-07-10
  • 打赏
  • 举报
回复
不是要等到有事件才返回吗?根本不可能出数组的范围呀!要么是0到WAIT_OBJECT_0 + cdwIClass + 1之间呀!
stivenjia 2008-07-09
  • 打赏
  • 举报
回复
INFINITE 指的是等待时间如果你设置成0xFFFFFFFF(即INFINITE)那么就是永远等待
其次dwWait >= (WAIT_OBJECT_0 + cdwIClass + 1)指的是
HANDLE hEvent[100] = { 0 };数组中cdwIClass+1后的事件
不知道这样你能否明白?
Y神圣 2008-07-09
  • 打赏
  • 举报
回复
你这段代码的意思是一旦这个事件数组的任何对象被通知了那么就会继续执行,否则就会阻塞住。dwWait >= WAIT_OBJECT_0+cdwIClass+1我不清除这种状态。MSDN也没有描述,请知道的朋友说一下。

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧