APC–异步过程调用
apc可以看成就是内核里的定时器,为了给自己一个在本函数返回后还能执行的一次机会,有很多操作是需要在函数返回后才能执行.
类似于析构函数但不完全是。
apc的最大特点就是在本函数返回后才执行,而且是在本线程中。比如“自杀”
APC如何被添加的
每个线程都会维护一个线程apc队列,通过 QueueUserAPC把一个apc函数添加到指定线程的apc队列
这个函数可以是当前线程自己添加,也可以是其他线程添加..
具体插入过程
QueueUserAPC–>NtQueueApcThread–>KeInitializeApc–>KeInsertQueueApc–>KiInsertQueueApc
APC会在执行KeServceExit的时候执行APC