CREATE_THREAD_DEBUG_INFO结构包含可由调试器使用的线程创建信息。
typedef struct _CREATE_THREAD_DEBUG_INFO { // ctdi
HANDLE hThread;
LPVOID lpThreadLocalBase;
LPTHREAD_START_ROUTINE lpStartAddress;
} CREATE_THREAD_DEBUG_INFO;
会员
hThread
标识创建导致调试事件的线程的句柄。如果此成员为NULL,则句柄无效。否则,调试器具有THREAD_GET_CONTEXT,THREAD_SET_CONTEXT和THREAD_SUSPEND_RESUME对该线程的访问,允许调试器从线程的寄存器读取并写入并控制线程的执行。
lpThreadLocalBase
指向一个数据块。在偏移0x2C到这个块是另一个指针,称为ThreadLocalStoragePointer,指向每个模块线程本地存储块的数组。这使得调试器可以使用编译器使用的相同算法来访问被调试进程的线程中的每个线程数据。
lpStartAddress
指向线程的起始地址。该值只能是线程的起始地址的近似值,因为具有适当访问线程的任何应用程序可以使用SetThreadContext函数来更改线程的上下文。
也可以看看
CREATE_PROCESS_DEBUG_INFO, DEBUG_EVENT, LOAD_DLL_DEBUG_INFO, SetThreadContext