我想知道是否有一种方法可以使用“GetThreadContext”以外的其他方法(在Windows的C++中)获取线程的EBP。我怀疑这种方法会花费太多时间(我经常使用),并且如果我只能得到EBP而不是获得所有CONTEXT的值,那么它会更快。
我当时在考虑使用“ReadProcessMemory”,然后将EBP与其余的调用堆栈一起使用,但是我不知道堆栈应该在哪里,应该从哪里获取。
如果有人知道更好的方法,我很乐意听到。
谢谢 :)
最佳答案
当然,如果另一个线程正在运行,则另一个线程的EBP的运行值在EBP寄存器中。如果未运行,则由调度程序将其保存在内核中。 GetThreadContext正在检索内核中的内容。没有别的会更快。
性能情况比我撰写本文时所了解的还要糟糕。如果线程正在运行,则内核使用APC机制为您获取最新值。这不是很快,但是没有其他替代API。
关于c++ - 在不同的过程中获取线程的EBP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4348881/