线程句柄和标识符

CreateThreadCreateRemoteThread 函数创建新线程时,将返回线程的句柄。 默认情况下,此句柄具有完全访问权限,并且可以在任何接受线程句柄的函数中使用(受安全访问检查的约束)。 此句柄可由子进程继承,具体取决于创建时指定的继承标志。 DuplicateHandle可以复制句柄,这使你可以创建具有一部分访问权限的线程句柄。 句柄在关闭之前有效,即使在它表示的线程终止之后也是如此。

CreateThreadCreateRemoteThread 函数还返回唯一标识整个系统的线程的标识符。 线程可以使用 GetCurrentThreadId 函数来获取自己的线程标识符。 从线程创建到线程终止为止,标识符都是有效的。 请注意,任何线程标识符都不会为 0。

如果你有线程标识符,可以通过调用 OpenThread 函数来获取线程句柄。 OpenThread 使你能够指定句柄的访问权限以及是否可以继承它。

线程可以使用 GetCurrentThread 函数来检索 伪句柄 到其自己的线程对象。 此伪句柄仅对调用进程有效;无法继承或复制它以供其他进程使用。 若要获取线程的实际句柄(给定伪句柄)请使用 DuplicateHandle 函数。

若要枚举进程的线程,请使用 Thread32FirstThread32Next 函数。