c++ - getthreadcontext 返回值:87,请问如何解决
高洛峰
高洛峰 2017-04-17 14:48:18
0
2
782

在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了

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(2)
洪涛

关掉360等国产安全软件。

阿神

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!