如何获取使用Win32 API的任何线程的堆栈大小和堆栈限制

是否有可能获得使用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字段。