异步过程调用(APC)
使用Overlapped+Event,会产生两个基础问题。一:使用WaitForMultipleObjects函数,你只能够等待最多MAXIMUM_WAIT_OBJECTS个对象;二:你必须不断的根据哪一个handle被激发,而计算如何反映。这两个问题可以靠一个所谓的异步过程调用(Asynchronous Procedure Call,APC)解决。使用ReadFileEx()和WriteFileEx()就可以调用这个机制。这两个函数允许你指定一个额外的参数,是一个callback函数地址。当一个Overlapped I/O 完成时,系统会调用callback函数。这个callback函数被称为I/O Completion routine。 
摘录:
http://blog.csdn.net/hcqi2004/article/details/3677283
核心编程作者,反复强调: apc 的缺点很多,其中之一: 同一个线程发出i/o请求后, 只能该线程来处理i/o请求。所以影响线程的负载均衡机制,程序的伸缩性不好。