Windows操作系统实验二实验报告总结计划.docx
《Windows操作系统实验二实验报告总结计划.docx》由会员分享,可在线阅读,更多相关《Windows操作系统实验二实验报告总结计划.docx(9页珍藏版)》请在冰豆网上搜索。
![Windows操作系统实验二实验报告总结计划.docx](https://file1.bdocx.com/fileroot1/2023-2/10/1e72e1df-b939-4f87-8478-a96d9299df5b/1e72e1df-b939-4f87-8478-a96d9299df5b1.gif)
Windows操作系统实验二实验报告总结计划
Windows操作系统
C/C++程序实验
姓名:
_____王晨璐_____
学号:
____46____
班级:
____1班_____
院系:
___信息工程学院___
__2015__年_10_月_26_日
实验二Windows2000/xp进度控制
一、背景知识
二、实验目的
三、工具/准备工作
四、实验内容与步骤
请回答:
Windows所创立的每个进度都是以调用CreateProcess()API函数开始和以调用
TerminateProcess()或ExitProcess()API函数停止。
创立进度
步骤5:
编译达成后,单击“Build”菜单中的“Build”命令,成立可履行文件。
操作可否正常进行假如不可以,则可能的原由是什么
能够正常运转。
清单2-1展现的是一个简单的使用CreateProcess()API函数的例子。
第一形成简单的命
令行,供给目前的EXE文件的指定文件名和代表生成克隆进度的号码。
大部分参数都可取缺省
值,可是创立标记参数使用了:
CREATE_NEW_CONSOLE
标记,指示新进度分派它自己的控制台,这使得运转示例程序时,在任务栏上产生很多活动标
记。
而后该克隆进度的创立方法封闭传达过来的句柄并返回main()函数。
在封闭程序以前,
每一进度的履行主线程暂停一下,以便让用户看到此中的起码一个窗口。
CreateProcess()函数有10个中心参数本实验程序中设置的各个参数的值是:
a.LPCSTRlpApplivetionNameszFllename
b.LPCSTRlpCommandLineszCmdLine
c.LPSECURITY_ATTRIBUTESlpProcessAttributesNULL
d.LPSECURITY_ATTRIBUTESlpThreadAttributesNULL
bInherithandleFalse
f.DWORDdwCreationFlageCREATE_NEW_CONSOLE
g.LPVOIDipEnvironmentNULL
h.LPCTSTRlpCurrentDirectoryNULL
I.STARTUPINFOlpstartupinfo&si
J.LPPROCESS_INFORMATIONlpProcessInformation&pi程序运转时屏幕显示的信息是:
提示:
部分程序在VisualC++环境达成编译、链接以后,还能够在Windows2000/xp
的“命令提示符”状态下试试履行该程序,看看与在可视化界面下运转的结果有没有不
同为何界面是同样的
正在运转的进度
步骤10:
编译达成后,单击“Build”菜单中的“Build”命令,成立可履行文件。
操作可否正常进行假如不可以,则可能的原由是什么能够正常运转
步骤11:
在工具栏单击“ExecuteProgram”(履行程序)按钮,履行程序。
运转结果:
目前PID信息:
3692
目前操作系统版本:
系统提示信息:
taskmanagershouldnownowindicatethisprocessishighpriority.
清单2-2中的程序向读者表示了怎样获取目前的PID和所需的进度版本信息。
为了运转这
一程序,系统办理了全部的版本不兼容问题。
接着,程序演示了怎样使用GetVersionEx()API函数来提取OSVERSIONINFOEX构造。
这一
数据块中包含了操作系统的版本信息。
此中,“OS:
”表示目前运转的操作系统是:
windowsXp
5清单2-2的最后一段程序利用了操作系统的版本信息,以确认运转的是Windows2000/xp。
代码接着将目行进度的优先级提高到比正常级别高。
步骤12:
单击Ctrl+Alt+Del键,进入“Windows任务管理器”,在“应用程序”选项
卡中右键单击“2-2”任务,在快捷菜单中选择“转到进度”命令。
在“Windows任务管理器”的“进度”选项卡中,与“2-2”任务对应的进度映像名称是(为
什么):
右键单击该进度名,在快捷菜单中选择“设置优先级”命令,能够调整该进度的优先级,如设置为“高”后从头运转程序,屏幕显示有变化吗为何
除了PID有变化,其余的没有变化
除了改变进度的优先级之外,还能够对正在运转的进度履行几项其余的操作,只需获取其
进度句柄即可。
SetProcessAffinityMask()API
函数同意开发人员将线程映照到办理器上;
SetProcessPriorityBoost()
API
可关
闭前台应用程序优先级的提高;而
SetProcessWorkingSet()
API
可调理进度可用的非页面
RAM的容量;还有一个只对目行进度可
用的
API函数,即
SetProcessShutdownParameters()
,可告诉系统怎样停止该进度。
3.停止进度
步骤15:
编译达成后,单击“Build”菜单中的“Build”命令,成立可履行文件。
操作可否正常进行假如不可以,则可能的原由是什么
能够正常运转
步骤16:
在工具栏单击“ExecuteProgram”按钮,履行程序。
运转结果:
1)creatingthechildprocess
表示:
创立一个子进度
2)childwaitingforsuicideinstruction
表示:
子进度等候父进度给一个自杀命令
3)tellingchildprocesstoquit
表示:
子进度自杀
步骤
17:
在熟习清单
2-3
源代码的基础上,利用本实验介绍的
API
函数来试试改良本程序
(比如使用
GetProcessTimes()API
函数)
并运转。
请描绘你所做的工作:
2-3
源
代
码
中
std
:
:
cout
<<"Creating
the
child
process."
<:
:
endl;
:
:
StartClone()
为创立子进度
代码。
应将其用
CreateProcess()API函数创立。
std:
:
cout<<"Child
quiting.
"
<
:
:
endl;
CloseHandle(hMutexSuicide)
为结束子进度代码,应将其改为ExitProcess()或TerminateProcess()