摘要:Windows APC的全称为(asynchronous procedure call)翻译为中文即“异步过程调用”。《Windows APC机制(一)》、《谈谈对APC的一点理解》、《线程的Alertable与User APC》主要阅读了这三篇文章,对APC有了个大概了解:
1) APCs允许用户程序和系统元件在一个进程的地址空间内某个线程的上下文中执行代码。
2) I/O管理器使用APCs来完成一个线程发起的异步的I/O操作。例如:当一个设备驱动调用IoCompleteRequest来通知I/O管理器,它已经结束处理一个异步I/O请求时,I/O管理器排队一个APC到发起请求的线程。然后线程在一个较低IRQL级别,来执行APC。 APC的作用是从系统空间拷贝I/O操作结果和状态信息到线程虚拟内存空间的一个缓冲中。
3) 使用APC可以得到或者设置一个线程的上下文和挂起线程的执行。
谈到APC,不可避免的牵涉到QueueUserAPC函数——“QueueUserAPC函数把一个APC对象加入到指定线程的APC队列中。”从函数名称,也应该能推测到一个线程其实有两个APC队列:用户APC、系统APC。
Windows APC函数是被按照