ResumeThread失败,返回值-1,程序一直等待

apexMing 2013-06-17 09:34:44
在进程创建的时候用了‘CREATE_SUSPEND’,再将进程放入job管理后,ResumeThread却总是不成功

这是创建进程的部分。



这是相关的job管理部分。黄色部分resumethread总是失败的。
这是什么原因呢?

各位见谅,代码无法拷贝,只能截图。
...全文
438 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
apexMing 2013-06-18
  • 打赏
  • 举报
回复
引用 6 楼 zwfgdlc 的回复:
的确是权限的原因。VS调试正常是因为进程运行在调试权限下。
MSDN上说加入作业的进程句柄必需要有PROCESS_SET_QUOTA及PROCESS_TERMINATE权限。

hProcess
A handle to the process to associate with the job object. The process must not already be assigned to a job; if it is, the function fails with ERROR_ACCESS_DENIED. The handle must have the PROCESS_SET_QUOTA and PROCESS_TERMINATE access rights. For more information, see Process Security and Access Rights.

或者你在CreateProcess的第6个参数加入CREATE_BREAKAWAY_FROM_JOB试下
CREATE_BREAKAWAY_FROM_JOB|NORMAL_PRIORITY_CLASS |CREATE_SUSPENDED

这样的情况下我必须得resumeprocess两次
这样的话会在资源管理器里发现启动两个进程,而且放到软件里,我这里通过进程调用的应用花将近1分钟才启动起来。
zwfgdlc 2013-06-17
  • 打赏
  • 举报
回复
的确是权限的原因。VS调试正常是因为进程运行在调试权限下。 MSDN上说加入作业的进程句柄必需要有PROCESS_SET_QUOTA及PROCESS_TERMINATE权限。 hProcess A handle to the process to associate with the job object. The process must not already be assigned to a job; if it is, the function fails with ERROR_ACCESS_DENIED. The handle must have the PROCESS_SET_QUOTA and PROCESS_TERMINATE access rights. For more information, see Process Security and Access Rights. 或者你在CreateProcess的第6个参数加入CREATE_BREAKAWAY_FROM_JOB试下 CREATE_BREAKAWAY_FROM_JOB|NORMAL_PRIORITY_CLASS |CREATE_SUSPENDED
apexMing 2013-06-17
  • 打赏
  • 举报
回复
引用 1 楼 zwfgdlc 的回复:
ResumeThread(pi.hThread) 不是 ResumeThread(pi.hProcess)
嗯,谢谢 不过现在出来一个新的问题,我这个是一个独立的应用,会被集成到软件当中去。我单独测试的时候(vs环境下)没问题,但集成到软件当中就会在“AssignProcessToJobObject”的时候失败。返回码为5. 能给点建议吗?
apexMing 2013-06-17
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
::GetLastError获取错误信息
现在出来一个新的问题,我这个是一个独立的应用,会被集成到软件当中去。我单独测试的时候(vs环境下)没问题,但集成到软件当中就会在“AssignProcessToJobObject”的时候失败。返回码为5. 看过你回过别人的一个信息,但我这貌似那样解决不了。 能给点建议吗?
apexMing 2013-06-17
  • 打赏
  • 举报
回复
引用 1 楼 zwfgdlc 的回复:
ResumeThread(pi.hThread) 不是 ResumeThread(pi.hProcess)
有效
oyljerry 2013-06-17
  • 打赏
  • 举报
回复
::GetLastError获取错误信息
zwfgdlc 2013-06-17
  • 打赏
  • 举报
回复
ResumeThread(pi.hThread) 不是 ResumeThread(pi.hProcess)

15,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧