是否可以使用Win32 API获取任何线程堆栈的大小和限制?我知道当前线程可以通过以下方式实现:
NT_TIB *tib = (NT_TIB*)NtCurrentTeb();
DWORD stackBase = (DWORD)tib->StackBase;
DWORD stackLimit = (DWORD) tib->StackLimit;
但是,我还没有找到一个Win32 API函数,它返回任何给定线程HANDLE或TID的NT_TIB
结构作为输入参数。
答案 0 :(得分:4)
如果您正在调试该过程,则可以从CREATE_THREAD_DEBUG_INFO
结构中的lpThreadLocalBase
字段获取TIB / TEB地址。
否则,您将不得不依赖于半文档化的NtQueryInformationThread
API。如果您使用ThreadBasicInformation
类别,则返回的THREAD_BASIC_INFORMATION
struct会有TebBaseAddress
字段。