线程句柄和标识符
当 CreateThread 或 CreateRemoteThread 函数创建新线程时,将返回该线程的句柄。 默认情况下,此句柄具有完全访问权限,并且(受安全访问检查的约束)可用于接受线程句柄的任何函数。 此句柄可由子进程继承,具体取决于创建时指定的继承标志。 可以通过 DuplicateHandle 复制句柄,这使你可以创建具有一部分访问权限的线程句柄。 句柄在关闭之前有效,即使在它表示的线程已终止之后也是如此。
CreateThread 和 CreateRemoteThread 函数还返回一个标识符,该标识符可在整个系统中唯一标识线程。 线程可以使用 GetCurrentThreadId 函数获取其自己的线程标识符。 从创建线程到线程终止为止,标识符都是有效的。 请注意,任何线程标识符都不会为 0。
如果有线程标识符,可以通过调用 OpenThread 函数获取线程句柄。 使用 OpenThread 可以指定句柄的访问权限以及是否可以继承它。
线程可以使用 GetCurrentThread 函数检索其自己的线程对象的 伪句柄 。 此伪句柄仅对调用进程有效;不能继承或复制它以供其他进程使用。 若要获取线程的实际句柄(给定伪句柄),请使用 DuplicateHandle 函数。
若要枚举进程的线程,请使用 Thread32First 和 Thread32Next 函数。