Windows核心编程(第5版)ch05

Windows核心编程(第5版)ch05

ID:41032741

大小:2.40 MB

页数:19页

时间:2019-08-14

Windows核心编程(第5版)ch05_第1页
Windows核心编程(第5版)ch05_第2页
Windows核心编程(第5版)ch05_第3页
Windows核心编程(第5版)ch05_第4页
Windows核心编程(第5版)ch05_第5页
资源描述:

《Windows核心编程(第5版)ch05》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第5章作业第5章作业本章内容5.1对作业中的进程施加限制5.2将进程放入作业中5.3终止作业中的所有进程5.4作业通知5.5JobLab示例程序我们经常都需要将一组进程当作单个实体来处理。例如,我们用VisualStudio来构建一个C++项目的时候,它会生成Cl.exe,后者可能必须生成更多的进程(比如编译器每次对源文件进行扫描的时候。①译注:在每次扫描过程中,都对源程序或源程序的中间结果从头到尾扫描一次,并进行相关的加工处理,从而生成新的中间结果或目标程序。)。但是,如果用户希望提前停止构建过程,VisualStudio必须能够以某种方式终止Cl.exe及其所有子

2、进程。虽然这是一个简单而常见的问题,但在MicrosoftWindows中解决起来非常难,这是由于Windows没有维护进程之间的父/子关系。具体地说,即使父进程已经终止运行,子进程仍在继续运行。设计一个服务器时,也必须把一组进程当作一个单独的组来处理。例如,一个客户端也许会请求服务器执行一个应用程序并将结果返回给客户端(该应用程序也许会生成自己的子进程)。由于许多客户端都可能连接到此服务器,所以服务器应该以某种方式限制客户端能请求的东西,避免任何一个客户端独占其所有资源。这些限制包括可以分配给客户端请求的最大CPU时间;最小工作集(workingset)和最大工作集

3、大小、禁止客户端应用程序关闭计算机以及安全限制。Windows提供了一个作业(job)内核对象,它允许我们将进程组合在一起并创建一个“沙箱”来限制进程能够做什么。最好将作业对象想象成一个进程容器。但是,创建只包含一个进程的作业同样非常有用,因为这样可以对进程施加平时不能施加的限制。下面是我编写的StartRestrictedProcess函数,该函数将一个进程放入一个作业中,以限制此进程具体能够做哪些事情,如下所示:voidStartRestrictedProcess(){//Checkifwearenotalreadyassociatedwithajob.//Ift

4、hisisthecase,thereisnowaytoswitchto//anotherjob.139第5章作业BOOLbInJob=FALSE;IsProcessInJob(GetCurrentProcess(),NULL,&bInJob);if(bInJob){MessageBox(NULL,TEXT("Processalreadyinajob"),TEXT(""),MB_ICONINFORMATION

5、MB_OK);return;}//Createajobkernelobject.HANDLEhjob=CreateJobObject(NULL,TEXT("Win

6、tellect_RestrictedProcessJob"));//Placesomerestrictionsonprocessesinthejob.//First,setsomebasicrestrictions.JOBOBJECT_BASIC_LIMIT_INFORMATIONjobli={0};//Theprocessalwaysrunsintheidlepriorityclass.jobli.PriorityClass=IDLE_PRIORITY_CLASS;//Thejobcannotusemorethan1secondofCPUtime.jobli.Per

7、JobUserTimeLimit.QuadPart=10000;//1secin100-nsintervals//Thesearetheonly2restrictionsIwantplacedonthejob(process).jobli.LimitFlags=JOB_OBJECT_LIMIT_PRIORITY_CLASS

8、JOB_OBJECT_LIMIT_JOB_TIME;SetInformationJobObject(hjob,JobObjectBasicLimitInformation,&jobli,sizeof(jobli));//Second,setsome

9、UIrestrictions.JOBOBJECT_BASIC_UI_RESTRICTIONSjobuir;jobuir.UIRestrictionsClass=JOB_OBJECT_UILIMIT_NONE;//Afancyzero//Theprocesscan'tlogoffthesystem.jobuir.UIRestrictionsClass

10、=JOB_OBJECT_UILIMIT_EXITWINDOWS;//Theprocesscan'taccessUSERobjects(suchasotherwindows)//inthesystem.jo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。