资源描述:
《windows体系及编程实验指导书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、(Windows体系及编程》实验指导书实验一类Windows进程任务管理器实验实验名称:实验类型:进程管理实验设计性实验学时:适用对彖:4软件丄程专业、网络工程专业、信息安全专业一、实验目的理解Windows编程环境下的进程管理机制,能创建一个完成特定功能的进程,并能对进程进行信息的获取、终止和保护,实现一个类Windows的进程任务管理器。二、实验要求1.编写一段程序,能够完成创建进程的功能,耍求启动windows记事本程序(notepad.exe),同时打开一个文本文件,路径为:c:systemuser.log。并打
2、印出新建进程ID。2.获取当前系统进程信息,打印输出进程名称和ID号。3.终止任意进程并获取追出代码。三、实验原理(1)进程的创建进程的创建通过CreateProcess()函数来实现,CreateProcess()通过创建一个新的进程及在其地址空间内运行的主线程来启动并运行一个新的程序。具体地,在执行CreateProcess()函数时,首先由操作系统负责创建一个进程内核对彖,初始化计数为1,并立即为新进程创建一块虚拟地址空间。随后将对执行文件或其他任何必要的动态链接库文件的代码和数据装载到该地址空间中。在创建主线程时,也
3、是首先由系统负责创建一个线程内核对彖,并初始化为1。最后启动主线程并执行进程的入口函数WinMainO,完成对进程和执行线程的创建。CreateProcess()函数的原型声明女口卜:BOOLCreateProcess(//可执行模块名//命令行字符串//进程的安全属性//线程的安全属性//句柄继承标志//创建标志//指向新的环境块的指针//指向当前目录名的指针//指向启动信息结构的指针//指向进程信息结构的指针LPCTSTR1pApp1icationName,LPTSTRIpCommandLine,LPSECURITY_A
4、TTRIBUTESIpProcessAttributes,LPSECURITY_ATTRIBUTESlpThreadAttributes,BOOLblnheritHandles,DWORDdwCreationFlags,LPVOIDIpEnvironment,LPCTSTRIpCurrentDirectory,LPSTARTUPINFOIpStartupInfo,LPPROCESS_INFORMATIONIpProcessInformation);(1)进程的获取进程的定义是为执行程序指令的线程而保留的一系列资源的集合。进程
5、是一个可执行的程序,山私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。进程是一些所有权的集合,一个进程拥有内存、CPU运行时间等-•系列资源,为线程的运行捉供―•个环境,每个进程都有它自己的地址空间和动态分配的内存、线程、文件和其他一些模块。系统快照的获取可以通过Win32API函数CrcateToolhelp32Snapshot()来完成,通过该函数不仅可以获取进程的快照,同样可以获取堆、模块和线程的系统快照。函数的声明如下:HANDLEWINAP1CreateToolhelp32
6、Snapshot(DWORDdwFlags,//指定要创建包含哪一类系统信息的快照函数DWORDth32ProcesslD//指定进程的ID号,当设定为0吋表示指定当询进程);一旦系统得到系统快照旬柄,就可以对当前的标识号进行枚举,进程号通过函数Process32First()和Procoe32Next()得到,这两个函数可以用于获取系统快照中第一个和下一个系统的信息,这两个函数的声明如下:BOOLWINAPIProcess32First(HANDLEhSnapshot,LPPROCESSENTRY32lppe//系统快照句
7、柄//指向结构体PROCESSENTRY32的指针丿,BOOLWINAPIProcess32Next(HANDLEhSnapshot,//系统快照句柄LPPROCESSENTRY32lppe//指向结构体PROCESSENTRY32的指针);(2)进程的终止终止进程也就是结束进程,让进程从内存中卸载。进程的终止的原因一般有4种。1)主线程的入口函数返回。2)进程中的一个线程调用ExitProcess函数。3)次进程中的所有线程结束。4)其他进程中又有线程都结束。耍结束当前进程一般让主线程的入口函数返回。当用户的程序入口函数返
8、回的时候,启动函数会调用C/C++运行期追出函数EXIT,并将用户的返回值传递给它。EXTI函数会销毁所有全局的或静态的C++对彖,然后调用系统函数ExitProcess促使操作系统终止应用程序。ExitProcess是一个API函数,它会结束当前应川程序的执行,并设直退出代码,函数声明如