线程句柄和标识符

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

CreateThreadCreateRemoteThread函数创建新线程时,将返回线程的句柄。默认情况下,此句柄具有完整的访问权限,__可以在接受线程句柄的任何函数中使用__进行安全访问检查__。这个句柄可以由子进程继承,这取决于创建时指定的继承标志。手柄可以通过DuplicateHandle复制,使您能够创建具有访问权限子集的线程句柄。句柄有效直到关闭,即使在它所代表的线程已被终止之后。

CreateThreadCreateRemoteThread函数还返回一个唯一标识整个系统的线程的标识符。线程可以使用GetCurrentThreadId函数来获取自己的线程标识符。从创建线程直到线程已终止为止,标识符是有效的。

Win32 API不提供从线程标识符获取线程句柄的方法。如果手柄以这种方式可用,则拥有的进程可能会失败,因为另一个进程意外地在其一个线程上执行操作,例如暂停它,恢复它,调整其优先级或终止它。相反,您必须从线程创建者或线程本身请求句柄。

一个线程可以使用GetCurrentThread函数来检索一个【伪句柄】到它自己的线程对象。该伪句柄仅对调用过程有效;它不能被继承或重复供其他进程使用。要获得线程的真正句柄,给定一个伪句柄,使用DuplicateHandle函数。