获取线程信息/环境块(TIB/TEB)的官方方式

Sev*_*yev 6 windows winapi windows-runtime

在Windows中,长期以来很常见的是,如果没有记录,可以在FS:0找到当前线程的线程信息块(TIB).但这仅适用于首先存在FS寄存器的Intel CPU.现在我想在基于ARM的Windows系统(Windows Phone和Windows RT)上访问TIB.请问有API吗?

编辑:我想获得崩溃报告的线程堆栈基础.

有关TIB/TEB的信息:http://www.microsoft.com/msj/archive/S2CE.aspx

Igo*_*sky 10

该宏NtCurrentTeb()适用于winnt.h所有受支持的体系结构,包括ARM(Windows RT):

#if defined(_M_ARM) && !defined(__midl) && !defined(_M_CEE_PURE)

__forceinline
struct _TEB *
NtCurrentTeb (
    VOID
    )
{
    return (struct _TEB *)(ULONG_PTR)_MoveFromCoprocessor(CP15_TPIDRURW);
}
Run Code Online (Sandbox Code Playgroud)


Rem*_*eau 7

要回答您发布的问题,您可以使用NtQueryInformationThread()检索THREAD_BASIC_INFORMATION结构,该结构包含指向TIBTebBaseAddress成员中的线程的指针.