TerminateThread

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

TerminateThread函数终止线程。

BOOL TerminateThread(

HANDLE 【hThread】,//处理线程
DWORD 【dwExitCode】//为线程退出代码
); 

参数

【hThread】

标识要终止的线程。

Windows NT:句柄必须具有THREAD_TERMINATE访问权限。有关详细信息,请参阅线程对象.

【dwExitCode】

指定线程的退出代码。使用GetExitCodeThread函数检索线程的退出值。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

TerminateThread用于使线程退出。当这种情况发生时,目标线程没有机会执行任何用户模式代码,并且其初始堆栈未被释放。连接到线程的DLL不会通知线程正在终止。

TerminateThread是一种危险的功能,只能在极端情况下使用。只有当您确切了解目标线程正在执行的操作时,才应调用TerminateThread,并且在终止时控制目标线程可能运行的所有代码。例如,TerminateThread可能会导致以下问题:

*如果目标线程拥有一个关键部分,那么关键部分将不会被释放。

*如果目标线程在终止时执行某些kernel32调用,则线程进程的kernel32状态可能不一致。

*如果目标线程正在操纵共享DLL的全局状态,则DLL的状态可能会被破坏,从而影响DLL的其他用户。

除了通过控制对其句柄的访问之外,线程不能保护自身免受TerminateThread的影响。由CreateThreadCreateProcess函数返回的线程句柄具有THREAD_TERMINATE访问权限,因此任何持有其中一个句柄的调用者可以终止您的线程。

如果目标线程是调用此函数的进程的最后一个线程,则线程的进程也将被终止。

线程对象的状态变为信号,释放等待线程终止的任何其他线程。线程的终止状态从STILL_ACTIVE更改为【dwExitCode】参数的值。

终止线程不一定会从系统中删除线程对象。当最后一个线程句柄关闭时,线程对象被删除。

也可以看看

CreateProcess, CreateThread, ExitThread, GetExitCodeThread