是否有可能获得使用Win32 API的任何线程的堆栈的大小和限制? 我知道这是可能的当前线程以下列方式:
NT_TIB *tib = (NT_TIB*)NtCurrentTeb(); DWORD stackBase = (DWORD)tib->StackBase; DWORD stackLimit = (DWORD) tib->StackLimit;
但是,我还没有find一个Win32 API函数返回任何给定的线程HANDLE或TID作为input参数的NT_TIB
结构。
如果您正在调试进程,则可以从CREATE_THREAD_DEBUG_INFO
结构中的lpThreadLocalBase
字段获取TIB / TEB地址。
否则,你将不得不依赖于半记录的NtQueryInformationThread
API。 如果使用THREAD_BASIC_INFORMATION
类别,则返回的THREAD_BASIC_INFORMATION
结构具有一个TebBaseAddress
字段。