windows – 为什么WaitForSingleObject(INVALID_HANDLE_VALUE,INFINITE)会阻塞?

为什么
HANDLE mutexHandle = INVALID_HANDLE_VALUE;
WaitForSingleObject(mutexHandle,INFINITE);

块?它不会返回错误消息.检查INVALID_HANDLE的句柄对于互斥锁来说是愚蠢的,因为我需要一个互斥锁来访问互斥锁句柄…

BTW:如果句柄关闭,它确实返回WAIT_Failed.

http://blogs.msdn.com/oldnewthing/archive/2004/03/02/82639.aspx开始:

Fourth,you have to be particularly careful with the INVALID_HANDLE_VALUE value: By coincidence,the value INVALID_HANDLE_VALUE happens to be numerically equal to the pseudohandle returned by GetCurrentProcess(). Many kernel functions accept pseudohandles,so if if you mess up and accidentally call,say,WaitForSingleObject on a Failed INVALID_HANDLE_VALUE handle,you will actually end up waiting on your own process. This wait will,of course,never complete,because a process is signalled when it exits,so you ended up waiting for yourself.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...