Windows 作业

作业 : 是进程的容器 。可以管理一组进程 。

CreateJobObject   函数 : 创建一个新的作业内核对象 。

HANDLE CreateJobObject( PSECURITY_ATTRIBUTES psa , PCTSTR pszName );


OpenJobObject     函数 : 访问一个作业 。

HANDLE OpenJobObject( DWORD dwDesiredAccess , BOOL bInheritHandle , PCTSTR pszName );

如果不在需要访问作业对象 , 那么就必须通过调用 CloseHandle 来关闭它的句柄 。 但是并不会迫使作业中的所有进程进制运行 。 该作业对象实际上做上了删除标记 , 只有当作业中的所有进程全部终止运行以后 , 该作业对象才会被自动撤销 。

 

对作业进程的限制 :

进程创建后 , 通常需要设置一个沙框(设置一些限制) , 以便限制作业中的进程能够进行的操作 。可以给一个作业加上若干不同类型的限制 :

1 基本限制 和 扩展基本限制 , 用于防止作业中的进程垄断系统的资源 。

2 基本的 UI 限制 , 用于防止作业中的进程改变用户界面 。

3 安全性限制 , 用于防止作业中的进程访问保密资源(文件 , 注册表关键字等)


SetInformationJobObject    函数 : 可以给作业加上各种限制 。

BOOL SetInformation( HANDLE hJob , JOBOBJECTINFOCLASS JobObjectInformationClass , PVOID pJobObjectInformation , DWORD cbJobObjectInformationLength );

第一个参数用于标识要限制的作业 , 第二个参数是个 枚举类型 , 用于指明要使用的限制类型 。 第三个参数是包含限制设置值的数据结构的地址 , 第四个参数用于指明该结构体的大小 。

 

设置条件 :

限制类型   第二个参数     第三个参数
--------------------------------------------------------------------------------------------------------------------
基本限制   JobObjectBasicLimitInformation   JOBOBJECT_BASIC_LIMIT_INFORMATION

扩展基本限制   JobObjectExtendedLimitInformation JOBOBJECT_EXTENDED_LIMIT_INFORMATION

基本 UI 限制   JobObjectBasicUIRestrictions   JOBOBJECT_BASIC_UI_RESTRICTIONS

安全性限制   JobObjectSecurityLimitInformation JOBOBJECT_SECURITY_LIMIT_INFORMATION


QueryInformationJobObject   函数 : 查看给作业设置了的限制条件 。

BOOL QueryInformationJobObject(

HANDLE hJob ,

JOBOBJECTINFOCLASS JobObjectInformationClass ,

PVOID pvJobObjectInformation ,

DWORD cbJobObjectInformationLength ,

PDWORD pdwReturnLength );

 

将进程放入作业 :

创建新的进程时 , 如果准备立即允许子进程开始执行代码 , 那么它将跑出沙框(加的限制) , 并且能够成功的执行想要限制的代码
因此 , 当创建子线程之后 , 在允许它开始执行之前 , 必须显示的将它放入作业 。

AssignProcessToJobObject   函数 : 将进程放入作业 。

BOOL AssignProcessToJobObject( HANDLE hJob , HANDLE hProcess ) ;

该函数告诉系统 , 将线程 hProcess 视为现有作业 hJob 的一部分 。 进程只能属于一个作业 , 不能转入其他作业

 


终止作业中所有进程的运行 :

TerminateJobObject 函数 : 撤销作业中的进程 。

BOOL TerminateJobObject( HANDLE hJob , UINT uExitCode );

 

 

作业通知信息 :

StartRestrictedProcess   函数 : 显示分配给作业的 CPU 时间何时到期 , 或者作业中的进程何时终止运行

posted on 2012-02-20 10:46  多个马甲  阅读(439)  评论(0编辑  收藏  举报