在创建作业对象时,设置的PerProcessUserTimeLimit是指进程在运行时,如果使用CPU的时间超过指定时间就会停止吗?我看《WINDOWS核心编程》是这样理解的,但是我在程序中实现时发现进程并没有停止,还请高人讲解SECURITY_ATTRIBUTES sa;
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi;void main()
{
CreateProcess("Child.exe",NULL,&sa,&sa,false,CREATE_SUSPENDED,NULL,NULL,&si,&pi);

HANDLE hjob=CreateJobObject(&sa,"test");
JOBOBJECT_BASIC_LIMIT_INFORMATION jb;
jb.LimitFlags=JOB_OBJECT_LIMIT_PROCESS_TIME;
jb.PerProcessUserTimeLimit.QuadPart=10000000;
AssignProcessToJobObject(hjob,GetCurrentProcess());

ResumeThread(pi.hThread);
}

解决方案 »

  1.   

    我觉得是AssignProcessToJobObject(hjob,GetCurrentProcess())的问题,GetCurrentProcess()是什么??
      

  2.   

    我改成了pi.hProcess也不行会不会和程序是否运行在服务器端或是客户端有关系
      

  3.   

    你需要调用这个函数SetInformationJobObject
    关于时间问题是这样,你打开的只是用户级别的程序,系统在将其挂起之后,并不计算时间,也就是说你在使用了CREATE_SUSPENDED之后的一段时间系统是不计算的,关于这个问题现在也没有很好的解决方法。
      

  4.   

    楼上得高人,那么当我使用ResumeThread时,是否系统应该开始计时?还是说,如果程序是用户级别得,就无法产生作用?