非主流情侣网名:Windows核心编程(第五版)笔记 第五章 作业(Jobs)
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 22:20:25
第五章 作业
1.什么是作业
可以把作业看作是进程的容器,一个作业由一个或多个进程组成。作业可以对在其内的进程进行控制或限制进程的某些行为。
如果一个进程被加载到作业中,那么该进程的子进程也会自动被加载到该作业中。
用CloseHandle()关闭作业对象,只会把作业对象标记为Deletion,并不会终结作业内的所有进程。
只有当作业中的所进程都结束后系统才会释放作业对象所占用的资源。
2.作业对进程的限制
作业对可以其所包含的进程进行四种限制:
Limit Type
Value of Second Parameter
Structure of Third Parameter
Basic limit
JobObjectBasicLimitInformation
JOBOBJECT_BASIC_LIMIT_INFORMATION
Extended basic limit
JobObjectExtendedLimitInformation
JOBOBJECT_EXTENDED_LIMIT_INFORMATION
Basic UI restrictions
JobObjectBasicUIRestrictions
JOBOBJECT_BASIC_UI_RESTRICTIONS
Security limit
JobObjectSecurityLimitInformation
JOBOBJECT_SECURITY_LIMIT_INFORMATION
前两种可以限制进程占用过多的系统资源:如可以限制每个进程的运行时间或作业的运行时间。
第三种可以限制进程做关机,重启,切换用户的功能或能否读取剪切板听信息。
最后一种可以限制进程读取系统中的安全资源。
3.作业通知
1. 当作业中的进程发生某些特定事件时 作业会向外界发送通知。
如当作业中的某个进程或全部进程终止或有新的子进程产生时作业会向外界发送通知。我们可以通过以下两个函数来获取通知的内容。
QueryInformationJobObject
GetQueuedCompletionStatus
4.常用函数
QueryInformationJobObject()
IsProcessInJob()
SetInformationJobObject()
AssignProcessToJobObject()
TerminateJobObject() //To kill all the processes within a job