一、什么是作业
windows提供一个作业内核对象,它允许我们将进程组合在一起并创建沙箱来限制进程能够做什么。
可以把作业看做是进程的容器。
二、如何创建作业
IsProcessInJob 检查当前进程是否已经在一个作业中,如果在,就不能从当前作业中摆脱出来。
CreateJobObject 创建作业
SetInformationJobObject 给作业加安全限制
AssignProcessToJobObject 将进程装入作业中
三、能给作业加什么限制
1、基本限额和扩展基本限额,用于防止作业中的进程独占资源
2、基本UI限额,用于防止进程修改用户界面
3、安全限额,用于防止进程访问安全资源(文件,注册表项等)
四、作业通知
可以通过创建I/O完成端口来监视作业的状态。
(注:
1、创建完成端口,
2、将完成端口与作业关联起来,
3、有一个线程等待作业通知到达完成端口,<GetQueuedCompletionStatus>
)
相同名字的作业只能运行一个。如果是无命名的作业则可以运行多个。