实验二 Windows 2000进程控制
Windows 2000进程控制
实验二 Windows 2000进程 控制
Windows 2000进程控制
一、背景知识Windows所创建的每个进程都从调用 CreateProcess() API函数开始,该函数的任务 是在对象管理器子系统内初始化进程对象。 每一进程都以调用ExitProcess() 或 TerminateProcess() API函数终止。通常应用程 序的框架负责调用 ExitProcess() 函数。 对于C++运行库来说,这一调用发生在应用程 序的main() 函数返回之后。
Windows 2000进程控制
1、创建进程
CreateProcess()调用的核心参数是可执行文 件运行时的文件名及其命令行。表 2-1详细地列 出了每个参数的类型和名称。
Windows 2000进程控制
表2-1 CreateProcess() 函数的参数
参数名称LPCTSTR lpApplivationName LPCTSTR lpCommandLine LPSECURIITY_ATTRIBUTES lpProcessAttributes
使用目的全部或部分地指明包括可执行代码的EXE文件的文 件名 向可执行文件发送的参数 返回进程句柄的安全属性。主要指明这一句柄是否 应该由其他子进程所继承
LPSECURIITY_ATTRIBUTES lpThreadAttributes BOOL bInheritHandle DWORD dwCreationFlage LPVOID lpEnvironment LPCTSTR lpCurrentDirectory STARTUPINFO lpStartupInfo LPPROCESS_INFORMATION lpProcessInformation
返回进程的主线程的句柄的安全属性 一种标志,告诉系统允许新进程继承创建者进程的 句柄 特殊的创建标志 (如CREATE_SUSPENDED) 的位 标记 向新进程发送的一套环境变量;如为null值则发送 调用者环境 新进程的启动目录 STARTUPINFO结构,包括新进程的输入和输出配 置的详情 调用的结果块;发送新应用程序的进程和主线程的 句柄和ID
Windows 2000进程控制
可以指定第一个参数,即应用程序的名称,其 中包括相对于当前进程的当前目录的全路径或 者利用搜索方法找到的路径; lpCommandLine参数允许调用者向新应用程 序发送数据; 接下来的三个参数与进程和它的主线程以及返 回的指向该对象的句柄的安全性有关。
Windows 2000进程控制
标志参数,用以在dwCreationFlags参数中指 明系统应该给予新进程什么行为。经常使用的 标志是CREATE_SUSPNDED,告诉主线程立 刻暂停。当准备好时,应该使用 ResumeThread() API来启动进程。另一个常 用的标志是CREATE_NEW_CONSOLE,告 诉新进程启动自己的控制台窗口,而不是利用 父窗口。这一参数还允许设置进程的优先级, 用以向系统指明,相对于系统中所有其他的活 动进程来说,给此进程多少CPU时间。
Windows 2000进程控制
接着是CreateProcess() 函数调用所需要的三 个通常使用缺省值的参数。第一个参数是 lpEnvironment参数,指明为新进程提供的环 境; 第二个参数是lpCurrentDirectory,可用于向主 创进程发送与缺省目录不同的新进程使用的特 殊的当前目录; 第三个参数是STARTUPINFO数据结构所必需 的,用于在必要时指明新应用程序的主窗口的 外观。
Windows 2000进程控制
CreatePr
ocess() 的最后一个参数是用于新进程 对象及其主线程的句柄和ID的返回值缓冲区。 以PROCESS_INFORMATION结构中返回的句 柄调用CloseHandle() API函数是重要的,因为 如果不将这些句柄关闭的话,有可能危及主创 进程终止之前的任何未释放的资源。
Windows 2000进程控制
2、正在运行的进程 如果一个进程拥有至少一个执行线程,则为正 在系统中运行的进程。通常,这种进程使用主 线程来指示它的存在。当主线程结束时,调用 ExitProcess() API函数,通知系统终止它所拥 有的所有正在运行、准备运行或正在挂起的其 他线程。当进程正在运行时,可以查看它的许 多特性,其中少数特性也允许加以修改。
Windows 2000进程控制
首先可查看的进程特性是系统进程标识符 (PID) ,可利用GetCurrentProcessId() API函 数来查看,与GetCurrentProcess() 相似,对 该函数的调用不能失败,但返回的PID在整个 系统中都可使用。其他的可显示当前进程信息 的API函数还有GetStartupInfo()和 GetProcessShutdownParameters() ,可给出 进程存活期内的配置详情。
Windows 2000进程控制
通常,一个进程需要它的运行期环境的信息。 例如API函数GetModuleFileName() 和 GetCommandLine(),可以给出用在 CreateProcess() 中的参数以启动应用程序。 在创建应用程序时可使用的另一个API函数是 IsDebuggerPresent() 。
Windows 2000进程控制
可利用API函数GetGuiResources() 来查看进程的GUI 资源。此函数既可返回指定进程中的打开的GUI对象的 数目,也可返回指定进程中打开的USER对象的数目。 进程的其他性能信息可通过GetProcessIoCounters()、 GetProcessPriorityBoost() 、GetProcessTimes() 和 GetProcessWorkingSetSize() API得到。以上这几个 API函数都只需要具有 PROCESS_QUERY_INFORMATION访问权限的指向 所感兴趣进程的句柄。
Windows 2000进程控制
另一个可用于进程信息查询的API函数是 GetProcessVersion() 。此函数只需感兴趣进 程的PID (进程标识号) 。本实验程序清单中列 出了这一API函数与GetVersionEx() 的共同作 用,可确定运行进程的系统的版本号。
Windows 2000进程控制
3、终止进程 所有进程都是以调用ExitProcess() 或者 TerminateProcess() 函数结束的。但最好使用 前者而不要使用后者,因为进程是在完成了它 的所有的关闭“职责”之后以正常的终止方式 来调用前者的。而外部进程通常调用后者即突 然终止进程的进行,由于关闭时的途径不太正 常,有可能引起错误的行为。
Windows 2000进程控制
TerminateProcess() API函数只要打开带有 PROCESS_TERMINATE访问权限的进程对 象,就可以终止进程,并向系统返回指定的代 码。这是一种“野蛮”的终止进程的方式,但 是有时却是需要的。 如果开发人员确实有机会来设计“谋杀”(终 止别的进程的进程) 和“受害”进程 (被终止 的进程) 时,应该创建一
个进程间通讯的内核 对象——如一个互斥程序——这样一来,“受 害”进程只在等待或周期性地测试它是否应该 终止。
Windows 2000进程控制
二、实验目的
通过创建进程、观察正在运行的进程和终止进 程的程序设计和调试操作,进一步熟悉操作系 统的进程概念,理解Windows 2000进程的 “一生”。 通过阅读和分析实验程序,学习创建进程、观 察进程和终止进程的程序设计方法。
Windows 2000进程控制
三、实验内容与步骤1、创建进程 本实验显示了创建子进程的基本框架。 步骤1:登录进入Windows 2000操作系统。 步骤2:进入Visual C++ 6.0。 步骤3:新建工程,新建文件,输入下列代码。
Windows 2000进程控制
// proccreate项目 # include <windows.h> # include <iostream.h> # include <stdio.h> // 创建传递过来的进程的克隆过程并赋于其ID值 void StartClone(int nCloneID) { // 提取用于当前可执行文件的文件名 TCHAR szFilename[MAX_PATH] ; :: GetModuleFileName(NULL, szFil …… 此处隐藏:3177字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




