异步过程调用(APC)是在特定线程的上下文中异步执行的功能。当APC排队到线程时,系统发出软件中断。下一次安排线程时,它将运行APC功能。系统制造的APC称为“内核模式APC”。应用程序制作的APC称为“用户模式APC”。线程必须处于可警告状态才能运行用户模式APC。
每个线程都有自己的APC队列。应用程序通过调用QueueUserAPC功能将APC排队到线程。调用线程在调用QueueUserAPC时指定APC功能的地址。APC的排队是线程调用APC功能的请求。
当用户模式APC排队时,排队的线程不会调用APC功能,除非它处于可警告状态。当线程调用SleepEx,SignalObjectAndWait,MsgWaitForMultipleObjectsEx,WaitForMultipleObjectsEx或WaitForSingleObjectEx功能时,线程进入可警告状态。
请注意,使用APC作为完成通知回调机制来实现ReadFileEx和WriteFileEx功能。