在使用VC写WINDOWS下的进程互斥功能时,使用权LockFileEx及UnlockFileEx接口来实现,不使用LockFile的主要原因是LockFileEx接口在通过传递LOCKFILE_EXCLUSIVE_LOCK参数可以获取独占锁,并且没有解锁前其它任何再次调用的进程可以一直等待,这就很方便了。
但是问题来了,这两个API最后一个参数都是LPOVERLAPPED,我心想我又用不到异步,就直接使用NULL值,结果运行程序到LockFileEx时总是崩溃,搞得莫名其妙。后面声明了一个OVERLAPPED变量,直接清零并传递参数,一切OK!