几个知识点:
1.Windows提供一个称为"作业"的内核对象,使我们能够将进程组合在一起,作为单个进程组来处理,并且创建一个"沙箱",以便限制进程能够进行的操作。可以将作业对象视为进程的容器。创建包含单个进程的作业也是有用的,这样就可以对进程加上通常情况下不能加的限制。
2.作业创建后,通过SetInformationObject可以给作业加上若干不同类型的限制,以便限制作业中的进程能够进行的操作:基本限制和扩展基本限制,用于防止作业中的进程垄断系统的资源;基本的UI限制,用于防止作业中的进程改变用户界面;安全性限制,用于防止作业中的进程访问保密资源(文件、注册表关键字等)。同样,使用QueryInformationJobObject可以查询作业的这些限制。作业内进程为作业句柄的参数传递NULL,可以查询该进程所属作业的限制信息。
3.使用AssignProcessToJobObject来将进程放入作业。
4.使用TerminateJobObject来终止作业中所有进程的运行。
5.使用IO完成端口来使作业内进程获取作业的通知信息。