C++ Windows CE内部构件,TEB(线程环境块)

C++ Windows CE内部构件,TEB(线程环境块),c++,c,windows-mobile,internals,C++,C,Windows Mobile,Internals,我不确定这是不是一个问这样一个问题的好地方。 我正在尝试将一些低级库(dbghelp)移植到wince,我需要访问wince上不可用的一些api。 我需要访问TEB(线程环境块)。PC上有几个API可以实现这一点,但WinCE上没有。 其中一个名为NTQueryThreadInformation或类似的东西,另一个名为NtCurrentTEB,它返回指向当前线程的TEB的指针。 有什么建议吗?。。 谢谢您可以找到可用的CE5进程和线程函数 尽管WinCE中没有TEB的直接等价物,但我已经看到线程

我不确定这是不是一个问这样一个问题的好地方。 我正在尝试将一些低级库(dbghelp)移植到wince,我需要访问wince上不可用的一些api。 我需要访问TEB(线程环境块)。PC上有几个API可以实现这一点,但WinCE上没有。 其中一个名为NTQueryThreadInformation或类似的东西,另一个名为NtCurrentTEB,它返回指向当前线程的TEB的指针。 有什么建议吗?。。
谢谢

您可以找到可用的CE5进程和线程函数

尽管WinCE中没有TEB的直接等价物,但我已经看到线程本地存储的TlsGetValue、TlsSetValue等,这可能类似于“TEB.TlsSlots”。CeGetThreadQuantum、GetThreadTimes、GetThreadPriority和GetThreadContext也可以提供有关线程的某些信息

就我自己而言,我以前从未使用过它们,因为我的编程需求通常是通过CreateThread、Suspend/ResumeThread、ThreadProc和Set/GetThreadPriority来满足的。

建议TIB指针存储在协寄存器处理器中,可以如下方式检索:

mrc p15, #0, v1, c13, c0, #2

至于线程信息/环境块的布局:我不确定它是否与Win32上的完全相同。Boost中的链接代码似乎明确地假设了这一点。我还没有找到任何信息证实他们(重新)存储在那里的“释放堆栈”的存在。堆栈基数和限制确实出现在WinCE SDK标题中的这些偏移处。

当然,我在Windows CE中查看了有关线程API的所有MSDN信息。我需要访问TEB的原因是我尝试移植的dll对TEB做了一些事情。基本上,我从WINE的dbghelp.dll实现中获取代码,并希望将其移植到Windows CE(Microsoft不提供dll的CE端口)。dll允许访问调试符号、获取运行时调用堆栈等,如果在Windows CE应用程序中也有它,那就太好了。为什么在提到Windows CE时将其标记为Windows mobile而不是Windows CE?