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

标签 windows winapi windows-runtime

在 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/

相关文章:

windows-8 - 当包含在具有 ScrollViewer(例如 FlipView)的控件中时,被 VKB 遮挡的 Windows 8 自动滚动聚焦文本框被禁用

windows - 在 Windows 上的 Emacs 中从 "grep-find"运行时,ack 不起作用

检查 VirtualAlloc 是否返回了 VirtualAddress

windows - Windows 服务可以接收 Windows 消息吗?

c# - 使用pyHook获取鼠标双击

c++ - WinRT __FUNCTION__ 未定义

c# - WinRT 中未处理的异常问题

mysql - 将 mysql odbc 升级到 5.3 会终止使用 v5.1 建立的连接

php - Windows 上的 Posix 和国际扩展

winapi - 使用 MarshalAs 的 P/Invoke 签名的 F# 语法