在 Windows 中,很早就知道当前线程的线程信息 block (TIB) 可以在 FS:0 处找到(如果未记录的话)。但这只适用于 Intel CPU,其中 FS 寄存器首先存在。现在我想在基于 ARM 的 Windows 系统(Windows Phone 和可能是 Windows RT)上使用 TIB。请问是否有相应的 API?
编辑:我想获取用于崩溃报告目的的线程堆栈库。
有关 TIB/TEB 的信息:http://www.microsoft.com/msj/archive/S2CE.aspx
最佳答案
宏 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);
}
关于windows - 获取线程信息/环境 block (TIB/TEB)的官方方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301032/