1、作业可以视为进程的容器,但是创建包含单个进程的作业时有用的,因为这样可以对该进程加上通常情况下不能加的限制。
2、关闭作业对象(CloseHandle)并不会迫使作业中的所有进程终止运行,该作业对象实际上做上了删除标记,只有当作业中的所有进程全部终止运行之后,该作业对象才被自动撤销。关闭作业的句柄后,作业仍然存在,但是该作业将无法被所有进程访问(例如,OpenJobObject)。
3、可以对作业加上若干不同类型的限制:
- 基本限制和扩展基本限制,防止作业中的进程垄断系统资源
- 基本的UI限制,防止作业中的进程改变用户界面
- 安全性限制,防止作业中的进程访问保密资源(文件、注册表子关键字等)
4、关键函数:
CreateIoCompletionPort,
SetInformationJobObject,
PostQueuedCompletionStatus,
GetQueuedCompletionStatus,
QueryInformationJobObject