APC机制

来源:互联网 发布:淘宝虚拟物品拒绝退款 编辑:程序博客网 时间:2024/04/30 00:19

    APC(Asynchronous Procedure Call)异步过程调用。NtQueueApcThread()这个系统调用把一个”用户APC请求”挂入目标线程的APC队列。KTHREAD数据结构中APCState指向线程的APC队列(用户APC和内核APC。

    一般来说,只有把APC请求挂入队列,就不再需要触发,而只是等待执行的时机。对于用户APC请求,该时机同样也是目标线程从内核返回用户空间的前夕。对于内核APC则有所不同,每当内核通过KeLowerIrql()降低其运行级别或者进行线程切换时,就会执行当前线程的内核APC。

     APC执行的时机是在系统调用、中断、或异常处理之后从内核返回用户空间的途中,执行过程是在APC_LEVEL上。
    DPC执行的时机是IRQ降到DISPATCH_LEVEL时