非主流情侣网名:Windows核心编程(第五版)笔记 第五章 作业(Jobs)

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 22:20:25
Windows核心编程(第五版)笔记 第五章 作业(Jobs)

第五章   作业

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