Sul*_*llX 3 c++ windows winapi msdn
我正在尝试利用GetThreadContext来查看当前调试寄存器的设置.无论我调试什么程序,它都会返回0xCCCCCCCC.我能够成功设置断点ctx.Dr0,然后使用自定义异常处理程序捕获这些断点,但如果我尝试查看存储在ctx.Dr0中的地址,它总是显示为0xCCCCCCCC.这是为什么?
谢谢
CONTEXT ctx;
GetThreadContext(GetCurrentThread(),&ctx);
cout << hex << ctx.Eip << endl;
Run Code Online (Sandbox Code Playgroud)
编辑**
我想我没有充分问我的问题,因为当时我没有意识到我的想法中的错误.我实际上是试图从线程中调用GetThreadContext,我希望得到它的上下文.由于显而易见的原因,这不起作用.相反,我认为CONTEXT ctx = {CONTEXT_FULL}有效.最有帮助的答案是Hans Passant的评论如下.
lap*_*apk 10
您无法获得正在运行的线程的有效上下文.您需要暂停要获取上下文的线程.因此,尝试在当前线程中执行它是行不通的.这在GetThreadContext()文档中明确说明:
您无法获得正在运行的线程的有效上下文.在调用GetThreadContext之前,使用SuspendThread函数挂起线程.
如果为当前线程调用GetThreadContext,则函数返回成功; 但是,返回的上下文无效.