在使用VC寫WINDOWS下的進程互斥功能時,使用權LockFileEx及UnlockFileEx接口來實現,不使用LockFile的主要原因是LockFileEx接口在通過傳遞LOCKFILE_EXCLUSIVE_LOCK參數可以獲取獨占鎖,并且沒有解鎖前其它任何再次調用的進程可以一直等待,這就很方便了。
但是問題來了,這兩個API最后一個參數都是LPOVERLAPPED,我心想我又用不到異步,就直接使用NULL值,結果運行程序到LockFileEx時總是崩潰,搞得莫名其妙。后面聲明了一個OVERLAPPED變量,直接清零并傳遞參數,一切OK!