[New - Windows NT]
QueueUserAPC功能将用户模式异步过程调用(APC)对象添加到指定线程的APC队列中。
函数QueueUserAPC DWORD(hu
PAPCFUNC 【pfnAPC】, | //指向APC功能的指针 |
HANDLE 【hThread】, | //处理线程 |
DWORD 【dwDatacy】 | //参数为APC功能 |
); |
参数
【pfnAPC】
指向应用程序提供的APC功能,以便在指定的线程执行可警告的等待操作时调用。
【hThread】
指定线程的句柄。句柄必须具有THREAD_SET_CONTEXT访问权限。有关详细信息,请参阅线程对象.
【dwDatacy】
指定传递给【pfnAPC】参数指向的APC功能的单个DWORD参数。
返回值
如果函数成功,返回值为TRUE。
如果函数失败,返回值为FALSE。没有为此函数定义的错误值可以通过调用GetLastError检索。
备注
操作系统中提供的APC支持允许应用程序将APC对象排队到线程。每个线程都有自己的APC队列。APC的排队是线程调用APC功能的请求。操作系统发出软件中断来引导线程调用APC功能。
当用户模式APC排队时,线程不会被调用APC功能,除非它处于可警告状态。线程使用SleepEx,SignalObjectAndWait,WaitForSingleObjectEx,WaitForMultipleObjectsEx或MsgWaitForMultipleObjectsEx进入可警告状态,以执行可警告的等待操作。在线程处于可警告状态之后,线程先处理先进先出(FIFO)顺序中的所有挂起的APC,等待操作返回WAIT_IO_COMPLETION。
如果应用程序在线程开始运行之前对APC进行排队,则线程将通过调用APC功能开始。一旦线程调用APC功能,它将调用其APC队列中所有APC的APC功能。
当线程使用ExitThread或TerminateThread功能终止时,其APC队列中的APC将丢失。不调用APC功能。
请注意,使用APC作为完成通知回调机制来实现ReadFileEx和WriteFileEx功能。
也可以看看
MsgWaitForMultipleObjectsEx, ReadFileEx, SleepEx, WaitForMultipleObjectsEx, WaitForSingleObjectEx, WriteFileEx