APC : An asynchronous procedure call,异步过程调用,是微软提供的一种在线程上下文中执行代码的机制。当向一个线程插入一个USER APC时,如果线程进入alertable状态,将会触发该APC的执行
线程调用哪些函数会进入alertable状态:
SleepEx
SignalObjectAndWait
MsgWaitForMultipleObjectsEx
WaitForMultipleObjectsEx
WaitForSingleObjectEx
APC的作用: 可以看出,APC可以唤醒从处于wait状态的线程,ReadFileEx, SetWaitableTimer 和 WriteFileEx内部都是通过APC来实现的