版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Windows程序设计程序设计之之作业作业2.4 线程线程Windows提供了一个作业(job)内核对象,它允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。可以将作业对象想象成一个进程容器。但是创建只包含一个进程的作业同样非常有用,因为这样可以对进程施加平时不能施加的限制 Wi n d o w s并不维护进程之间的父/子关系。即使父进程已经终止运行,子进程仍然会继续运行。Win32 API Win32 API提供了一系列处理作业的函数接口,来向应用程序提供多线程的功能 用Win32 API直接编写应用程序要求程序员对Windows操作系统有一定的了解 直接用Win32 API编
2、写的应用程序,程序的执行代码小,运行效率高 使用使用win32线程线程API 创建作业对象创建作业对象HANDLE CreateJobObject( PSECURITY_ATTRIBUTES psa, PCTSTR pszName); 最后一个参数对此作业对象进行命名,使其能够由另一个进程通过OpenJobObject函数进行访问对作业中的进程施加限制对作业中的进程施加限制 创建好一个作业之后,接着一般会根据作业中的进程能够执行哪些操作来建立一个沙箱(即施加限制)。可以向作业应用以下几种类型的限制:(1)基本限额和扩展基本限额,用于防止作业中的进程独占系统资源; (2)基本UI限制,用于防止作
3、业内的进程更改用户界面; (3)安全限额,用于防止作业内的进程访问安全资源(文件。注册表子项等); 对作业中的进程施加限制对作业中的进程施加限制 BOOL SetInformationJobObject(HANDLE hJob, /要限制的作业/枚举类型,制定要施加到限制类型JOBOBJECTINFOCLASS JobObjectInformationClass, PVOID pJobObjectInformation,/ 数据结构地址,具体到限制设置DWORD cbJobObjectInformationSize);/数据结构大小对作业中的进程施加限制对作业中的进程施加限制 对作业中的进程施
4、加限制对作业中的进程施加限制 对作业中的进程施加限制对作业中的进程施加限制 对作业中的进程施加限制对作业中的进程施加限制 查询作业限制查询作业限制BOOL QueryInformationJobObject( HANDLE hJob, JOBOBJECTINFOCLASS JobObjectInformationClass, PVOID pvJobObjectInformation, DWORD cbJobObjectInformationLength, PDWORD pdwReturnLength);你为该函数传递作业的句柄(就像你对SetInformationJobObject操作时那样)
5、,这些句柄包括用于指明你想要的限制信息的枚举类型,函数要进行初始化的数据结构的地址,以及包含该结构的数据块的长度。最后一个参数是pdwReturnLength,用于指向该函数填写的DWORD,它告诉你有多少字节放入了缓存。如果你愿意的话,可以(并且通常)为该参数传递N U L L。QueryInformationJobObject第二个参数设置第二个参数设置调用Query Information Job Object,为第二个参数传递Job Object Basic Accounting Information ,并传递JOBOBJECT _ BASIC _ ACCOUNTING _ IN F
6、ORMATION结构的地址QueryInformationJobObject第二个参数设置第二个参数设置调用Query Information Job Object,可以进行一次函数调用,以同时查询基本统计信息和I/O统计信息。为此,必须为第二个参数传递JobObjectBasicAndIoAccountingInformation ,并传递JOBObject_BASIC_AND_IO_ACCOUNTING_INFORMATION结构的地址QueryInformationJobObject第二个参数设置第二个参数设置调用QueryInformationJobObject作业对象信息查询作业对象
7、信息查询BOOL GetProcessIoCounters( HANDLE hProcess, PIO_COUNTERS pIoCounters);示例:HANDLE hJob=CreateJobObject(NULL,TEXT(“tian”); /创建作业对象 AssignProcessToJobObject(hJob,GetCurrentProcess(); 进程放入作业中 CloseHandle(hJob); /关闭作业hJob=OpenJobObject(JOB_OBJECT_ALL_ACCESS,FALSE,TEXT(“tian”); /打开作业将进程放入作业中将进程放入作业中在将进
8、程放入作业中时,常常调用CreateProcess来创建进程,且传入CREATE_SUSPENDED标志,暂时挂起进程。BOOL AssignProcessToJobObject( HANDLE hJob,HANDLE hProcess); 这个函数将向系统表明将此进程当作现有作业的一部分。注意,这个函数只允许将尚未分配给任何作业的一个进程分配给一个作业。一旦一个进程分配到一个作业中,它就不能分配到其他作业中。在调用了 AssignProcessToJobObject之后,再调用ResumeThread,使进程的线程可以在作业的限制下执行代码。注意注意:如果允许子进程立即开始执行代码,它会逃离
9、我们的“沙箱”,成功地做些我们禁止它做的事情。所以,在创建子进程且允许它运行之前,必须调用一下函数,将进程显示地放入新建的作业中:访问作业对象访问作业对象HANDLE OpenJobObject( DWORD dwDesiredAccess, BOOL bInheritHandle, PCTSTR pszName);示例:HANDLE hJob=CreateJobObject(NULL,TEXT(“tian”); /创建作业对象 AssignProcessToJobObject(hJob,GetCurrentProcess(); 进程放入作业中 CloseHandle(hJob); /关闭作业
10、hJob=OpenJobObject(JOB_OBJECT_ALL_ACCESS,FALSE,TEXT(“tian”); /打开作业验证当前进程是否在作业控制之下验证当前进程是否在作业控制之下BOOL IsProcessInJob( HANDLE hProcess, /进程句柄HANDLE hJob, /作业句柄PBOOL pbInJob);使用:IsProcessInJob(GetCurrentProcess(),NULL,&bInJob);如果bInJob=True 则在当前作业控制之下 作业通知作业通知如果只是关心所分配的CPU时间是否已经过期,那么可以非常简单的获得这个通知,作业中进程如果还没有用完已分配的CPU时间,作业就处于未触发的状态,一旦作业用完所分配的时间windows就会强行杀死作业中所有的进程,触发作业对象 。WaitForSingleObject()可以轻松捕获这个事件 终止作业中的所有进程终止作业中的所有进程BOOL TerminateJobObject( HANDLE hJob,UINT uExitCo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年财务规划师《财务风险评估与投资组合管理》备考题库及答案解析
- 2025年CFP金融规划师考试备考题库及答案解析
- 商铺租赁合同噪音控制2025年
- 商铺租赁安全管理协议2025
- 商铺转租合同协议2025年风险版
- 人力资源招聘合同2025年候选人保密
- 全职员工2025年工作时长变更协议
- 旅游行程安排协议2025年
- 客服沟通技巧培训合同协议2025
- 2025年价值观与行为指标考核考试试题及答案
- 2025河南农商银行金融科技人才常态化招聘考试参考试题及答案解析
- 2025年船舶建造合同协议样本
- 工业高质量数据集研究报告 2025 中国工业互联网研究院
- 甘肃省张掖市甘州区2024-2025学年八年级上学期期中考试英语试卷(含解析无听力原文及音频)
- 《人工智能导论》课件 第4章 人工智能的行业应用
- 人教版(2024)八年级上册生物第四单元第七章 健康地生活 教案
- 2025年肾脏病学慢性肾病防治知识考试答案及解析
- 浙江省鄞州中学2026届化学高一上期末联考试题含解析
- 血常规复检规则与报告解读
- 2025中国中煤销售集团总部及所属企业公开招聘电力营销专业人才笔试参考题库附带答案详解(10套)
- 粮食收购方案模板(3篇)
评论
0/150
提交评论