读Windows核心编程-5-作业

作业(Job)

有时候需要把一些进程集中管理,如终止一个进程以及它产生的子进程,但由于Windows并没有维护进程间父子关系,所以除非进程本身以某种方式记录这些信息,否则很难做到管理这种父子进程树。而作业(job)恰好能解决这一问题。

Job就像是一个"沙箱"或者进程容器,不仅能将多个进程放在一起管理,还能对其包含的进程施加额外的限制,例如:作业中的进程能使用的CPU时间,是否能注销,是否能方位用户对象等。

相关函数

IsProcessInJob: 判断进程是否属于某个已有的Job

CreateJobObject:创建作业

SetInformationJobObject:对作业及其中的进程施加限制,可能的安全限制见下表

AssignProcessToJobObject:将进程放入指定的Job,注意,已经在某个Job中的进程不能重新制定,也不能将它从该Job中移除,这样的安全机制能保证进程不能脱离对其施加的安全限制。

CloseHandle关闭Job句柄时不会导致Job中的进程结束,只是Job对象添加了删除标志,Job会等待其中所有的进程结束,才被删除。

 

SetInformationJobObject

限制类型

参数

描述

基本限额

JobObjectBasicLimitInformation

防止Job中的进程独占系统资源

扩展基本限额

JobObjectExtendedLimitInformation

同上

基本的UI限制

JobObjectBasicUIRestrications

防止进程更改用户界面

安全限额

JobObjectSecurityLimitInformation

防止进程访问安全资源(文件,注册表)

 

TerminatebObject:终止job中所有的进程,并设置同一返回值

QueryInformationJobObject:查询job中的进程信息以及相应的限制

 

 

你可能感兴趣的:(windows)