QueueUserAPC

【勇芳软件工作室】汉化HomePreviousNext

[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功能,除非它处于可警告状态。线程使用SleepExSignalObjectAndWaitWaitForSingleObjectExWaitForMultipleObjectsExMsgWaitForMultipleObjectsEx进入可警告状态,以执行可警告的等待操作。在线程处于可警告状态之后,线程先处理先进先出(FIFO)顺序中的所有挂起的APC,等待操作返回WAIT_IO_COMPLETION。

如果应用程序在线程开始运行之前对APC进行排队,则线程将通过调用APC功能开始。一旦线程调用APC功能,它将调用其APC队列中所有APC的APC功能。

当线程使用ExitThreadTerminateThread功能终止时,其APC队列中的APC将丢失。不调用APC功能。

请注意,使用APC作为完成通知回调机制来实现ReadFileExWriteFileEx功能。

也可以看看

MsgWaitForMultipleObjectsEx, ReadFileEx, SleepEx, WaitForMultipleObjectsEx, WaitForSingleObjectEx, WriteFileEx