HANDLE CreateJobObject(
LPSECURITY_ATTRIBUTES lpJobAttributes, // SD
LPCTSTR lpName // job name
); //创建一个作业对象
BOOL SetInformationJobObject(
HANDLE hJob, // handle to job
JOBOBJECTINFOCLASS JobObjectInfoClass, // information class
LPVOID lpJobObjectInfo, // limit information
DWORD cbJobObjectInfoLength // size of limit information
); //设置作业信息,包括对作业设置一些限制,如时间限制、UI限制,作业中的进程都要遵守这些限制
BOOL AssignProcessToJobObject(
HANDLE hJob, // handle to job
HANDLE hProcess // handle to process
); //将进程加入到作业中
Note:创建只包含一个进程的作业也是非常有用的,因为这样可以对进程施加平时不能施加的限制。在创建进程时,CreateProcess的fdvCreate参数需要设置CREATE_SUSPENDED,以使进程挂起,在将进程加入到作业后再将其激活(ResumThread),这样才能使进程在作业中的限制下运行。