検索

ホームページ  >  に質問  >  本文

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日前822

全員に返信(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
  • キャンセル返事