CreatThread () is transmitted back to two values to identify a new thread, which is: The first value is Handle, but also the return value of the function, most of the API functions related to the thread need it; the second value is Thread IDs brought back by LPTHReadid, it is a global variable that can identify a thread in any process in the system. AttachthReadInput () and postthreadMessage () need to use thread IDs, using these two functions we can affect other threads message queues. The debugger and process viewer also use the thread ID. However, for security, we cannot get its handle based on the thread. (Speaking of Handle, let's mention, the so-called handle is actually a pointer, pointing to something in the operating system memory space, that thing does not allow us to take it directly, can only be operated by the operating system, for maintenance system Integrity and security)