搜尋

首頁  >  問答  >  主體

c++ - getthreadcontext 返回值:87,请问如何解决

在windows7 x64平台,调用getthreadcontext 返回值:87, 请问如何解决,windbg调试该内核API吗?
关键代码:

CONTEXT cxt;
SuspendThread(hThread);

ZeroMemory(&cxt, sizeof(cxt));
cxt.ContextFlags = CONTEXT_FULL;
if (!GetThreadContext(hThread, &cxt)) {
    printf("GetThreadContext getlasterror: %d", GetLastError());
    goto finish;
}

//hThread是有效的句柄,vs2015可以跟踪代码执行到printf出错的位置,然后就返回87了

高洛峰高洛峰2810 天前824

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-04-17 14:50:18

    關掉360等國產安全軟體。

    回覆
    0
  • 阿神

    阿神2017-04-17 14:50:18

    getThreadContext出錯回傳0,這裡printf印的是出錯程式碼。
    關於出錯程式碼,相關的意思在這裡https://msdn.microsoft.com/en-us/library/ms681382(v=vs.85).aspx.aspx)

    錯誤碼87(也就是0x57)的原因是参数错误
    你這裡沒有檢查SuspendThread暫停線程是否成功,可以現檢查一下。
    還有你開啟執行緒的時候,是否有查詢權限(THREAD_GET_CONTEXT/WOW64THREAD_QUERY_INFORMATION)

    如果你編譯的是64位元程序,是否該使用 Wow64SuspendThread/Wow64GetThreadContext

    回覆
    0
  • 取消回覆