https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms684161(v=vs.85).aspx http://blog.csdn.net/ddupd/article/details/26962039 //1. (A):windows 提供了一个作业内核对象,允许我们将进程组合在一起来限制进程能够做什么 (B):如果一个进程已与一个作业关联,就无法将此进程或其子进程从作业中除去,一旦进程已属于作业的一部分,就不能在移动到另一个作业中, 当作业中的进程生成了子进程,这个子进程也会自动属于这个作业(可以通过设置一系列操作来避免子进程的这个行为) //2. IsProcessInJob 验证进程是否在一个现有作业中 CreateJobObject 创建一个作业内核对象 OpenJobObject 打开一个作业内核对象 //3. 创建好一个作业之后,可以为其中的进程添加如下限制: SetInformationJobObject 第二个参数 第三个参数 (A):基本限额,用于防止作业中的进程独占系统资源 JobObjectBasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION (B):扩张限额,用于防止作业中的进程独占系统资源 JobObjectExtendedLimitInformation JOBOBJECT_EXTENDED_LIMIT_INFORMATION (C):基本UI限制,用于防止作业内的进程更改用户界面 JobObjectBasicUIRestrictions JOBOBJECT_BASIC_UI_RESTRICTIONS (D):安全限额,用于防止作业内的进程访问安全资源(文件、注册表子项等) JobObjectSecurityLimitInformation JOBOBJECT_SECURITY_LIMIT_INFORMATION https://msdn.microsoft.com/en-us/library/windows/desktop/ms686216(v=vs.85).aspx SetInformationJobObject 向作业施加限制 BOOL WINAPI SetInformationJobObject( __in HANDLE hJob, __in JOBOBJECTINFOCLASS JobObjectInformationClass, __in_bcount(cbJobObjectInformationLength) LPVOID lpJobObjectInformation, __in DWORD cbJobObjectInformationLength ); //4. AssignProcessToJobObject 将进程放入作业 TerminateJobObject 杀死作业中所有进程 QueryInformationJobObject 查询作业中的限制,还可以获取作业的统计信息 //5. //(与作业不相关) GetProcessIoCounters 可以用于获取进程I/O使用信息 GetProcessTimes 可以用于获取进程CUP占用信息