《Windows系统编程习题答案作者李晓黎练习题参考答案.doc》由会员分享,可在线阅读,更多相关《Windows系统编程习题答案作者李晓黎练习题参考答案.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章 操作系统概述一、选择题1A 2D 二、填空题1程序2数据3MS-DOS4用户模式5内核模式6Win327POSIX8OS/29执行体效劳10内核11硬件抽象层三、简答题1答:1对应用程序的用户群进行分析,有些行业的用户至今还在使用Windows 98系统。如果要为他们开发应用程序,就要考虑使用Windows 98作为开发环境。而如果应用程序的用户是普通的家庭用户,那么要考虑使用Windows XP作为开发环境。2在经典的C/S结构应用程序中,效劳器程序通常运行在Windows Server操作系统上,而客户端程序通常运行在Windows XP、Windows 7等兼顾家用和商用的操作系
2、统上。3从Windows XP开始,所有现在版本Windows都基于Windows NT内核。因此,Windows系列产品具有很好的向下兼容性。也就是说在低版本Windows上开发的应用程序通常可以稳定的运行在高版本Windows,而反之那么不一定。因此应尽可能选择满足客户需求的低版本Windows作为卡发环境。2答:Windows操作系统的用户模式由系统支持进程、效劳进程、应用程序、环境子系统和Ntdll.dll组成。3答:硬件抽象层是物理硬件与计算机之间一层,设计这一层的目的是隐藏硬件中的不同。从而为操作系统内核提供一个一致的运行平台,这样Windows就可以在不同的母板上运行而不需要修改
3、内核。第2章 使用Visual Studio 2021开发Visual C+应用程序一、选择题1B 2A 3B 4C 二、填空题1Debug2 Release3CObjct4CWinThread5CDialog 三、简答题1答:断点是程序中的一行代码,程序在运行到断点时将中断,用户可以查看变量的值,单步调试程序,对程序的运行情况进行分析。2答:在MFC中,可以采用文档/视图结构将应用程序中数据的存储和显示别离开来。“文档可以看作是一个应用程序的数据元素的集合;“视图是数据的用户界面,可以通过窗口显示,也可以通过打印机打印出来。视图可以为用户提供与文档中数据进行交互的功能。一般情况下,采用文档/
4、视图结构的应用程序至少应由以下对象组成:l 应用程序,是CWinApp的派生对象,它充当整个应用程序的容器。l 框架窗口,是CFrameWnd派生对象。第3章 MFC用户界面设计一、选择题1C 2A 3B二、填空题1CListBox2InsertString3CDialog:DoModal()4CDialog5GetDlgItem()6CListBox7图标视图Icon、8小图标视图Small Icon9列表视图List10报表视图11UPDATE_COMMAND_UI三、操作题略第4章 GDI编程一、选择题1A 2C 3B 4C 5D6A 二、填空题1WM_PAINT2COLORREF3Te
5、xtOut()4CFontDialog三、简答题1答:GDI是位于应用程序与不同输出设备硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理,使Windows应用程序能够顺畅地在Windows支持的任何图形输出设备上运行。设备环境Device Context是GDI内部维护的一些数据结构。它与特定的输出设备相关联。一个设备环境对应输出设备上的一块区域。设备环境中包含一些图形属性,这些属性定义了GDI绘图函数的工作方式,例如输出文字或图形的前景和背景颜色、坐标等。2答:调用CreatePen()函数创立一个画笔对象。然后使用CDC: SelectO
6、bject()函数为设备环境选择画笔对象,就可以使用画笔对象绘图了。第5章 文件系统编程一、选择题1C 2B 3D 4A 5B6C 二、填空题1GetLogicalDriveStrings()2GetDiskFreeSpaceEx()3SHBrowseForFolder()4CreateDirectory ()5CFileDialog6GetFileSize()三、简答题1答在Visual C+中可以通过标准输入输出库、Windows API和MFC类文件编程。标准输入输出库的可移植性较好,既可以在Windows下使用,也可以在Linux和Unix等操作系统下使用;而Windows API那么
7、只能在Windows平图台下使用;MFC类只能用于支持MFC的应用程序。第6章 Windows注册表编程一、选择题1A 2B 3C 4B 二、填空题1键2值3regedit.exe4RegEnumKey()三、简答题1答HKEY_LOCAL_MACHINE、HKEY_CURRENT_CONFIG、HKEY_CLASSES_ROOT、HKEY_USERS、HKEY_CURRENT_USER第7章 进程编程一、选择题1A 2D 3B 二、填空题1被创立created2就绪ready3运行running4阻塞blocked5挂起suspend6终止terminated7CreateProcess()
8、8EnumProcess()三、问答题1答:进程是正在运行的程序的实例。每个运行的Visual C+工程都对应一个进程,每个进程至少包含一个线程,它从main()函数开始执行,直到执行return语句返回,主线程结束,该进程也被从内存中卸载。主线程在运行过程中还可以创立新的线程,实现多线程的功能。计算机程序是由指令代码组成的,而进程那么是这些指令的实际运行体。如果屡次运行一个程序,那么该程序也能对应多个进程。2答:进程由如下几个局部组成。l 与程序相关联的可执行代码的映像;l 内存空间通常是虚拟内存中的一些区域,其中保存可执行代码、进程的特定数据、用于记录活动例程和其他事件的调用栈、用于保存实
9、时产生的中间计算结果的堆heap。l 分配给进程的资源的操作系统描述符比方文件句柄以及其他数据资源。l 平安属性,比方进程的所有者和权限。l 处理器的状态,比方存放器的个内容、物理内存地址等。操作系统在叫做进程控制块Process control block,PCB的数据结构中保存活动进程的上述信息。3答:互斥体mutex是保证一个资源被互斥访问的机制。所谓互斥访问即指同一时间只能有一个线程进程访问资源。在进程通讯中通常使用互斥体防止运行一个应用程序的多个实例。调用CreateMutex()函数可以创立或翻开一个互斥体对象。四、练习题略第8章 多线程编程一、选择题1A 2D 二、填空题1CON
10、TEXT2CreateThread()3WaitForMultipleObjects()4CRITICAL_SECTION5未受信nonsignaled6受信signaled三、简答题1答:线程是操作系统可以调度的最小执行单位,通常是将程序拆分成2个或多个并发运行的任务。一个线程就是一段顺序程序。但是线程不能独立运行,只能在程序中运行。不同的操作系统实现进程和线程的方法也不同,但大多数是在进程中包含线程,Windows就是这样。一个进程中可以存在多个线程,并且可以共享进程的资源比方内存。而不同的进程之间那么是不能共享资源的。2答:线程与进程的比照方下:l 进程通常可用独立运行,而线程那么是进程
11、的子集,只能在进程运行的根底上运行。l 进程拥有独立的私有内存空间,一个进程不能访问其他进程的内存空间;而一个进程中的线程那么可以共享内存空间。l 进程之间只能通过系统提供的进程间通信的机制进行通信;而现场间的通信那么简单得多。l 一个进程中的线程之间切换上下文比不同进程之间切换上下文要高效得多。第9章 Windows效劳编程一、选择题1B 2D 3B 4B 二、填空题1Services.msc2CreateService()3StartService()4ATL三、简答题1答效劳控制器Service Control Manager ,SCM是Windows NT家族操作系统中的一个系统进程,
12、它可以启动、停止Windows效劳,并与Windows效劳交流。效劳控制器对应的可执行文件是%SystemRoot%services.exe,它以Windows控制台程序的形式运行。在系统启动时,由Wininit进程加载。SCM的主函数是SvcCtrlMain(),它将加载被配置为自动启动的效劳列表。第11章 动态链接库编程一、选择题1A 2A 二、填空题1DllMain()2LoadLibrary()3GetProcAddress()三、简答题1答:导入库的扩展名是*.lib,它与DLL文件同时生成,它们的名字相同,只有扩展名不同。导入库中包含一个导入地址表IAT,import addres
13、s table。DLL中的每个函数都在导入地址表有一个记录。如果在工程中引用了DLL文件,那么在生成和链接可执行文件时,链接到动态链接库通常被处理为链接到导入库。这样,可执行文件就可以通过导入库中的导入地址表知道如何调用DLL中的函数。导入库就像一本书的目录和索引,而DLL那么是书的正文。在生成可执行文件时,可执行文件中已经包含了导入库中的导入地址表。在运行时,还必须找到DLL文件。可执行文件会根据导入地址表在DLL文件中调用函数。第11章 Windows钩子编程一、选择题1A 2B 二、填空题1WH_KEYBOARD2SetWindowsHookEx3UnhookWindowsHookEx(
14、)三、简答题1答:钩子是Windows中可以拦截事件的一种机制。可以指定一个函数作为特定类型的被拦截事件的钩子过程。钩子过程可以对拦截的每个事件进行处理。2答:nCode,是钩子过程用于决定采取什么动作的钩子编码,它取决于钩子的类型。不同类型的钩子都有相对应的一组钩子编码。第12章 WMI编程一、选择题1A 2A 二、填空题1rootcimv22系统类3核心与公共基类4Microsoft扩展类5TotalPhysicalMemory6核心7公共8扩展9wbemtest.exe三、简答题1答:使用WMI技术的方式通常包括以下3种:l 通过WMIC命令行工具对系统进行查询和管理。l 编写WMI脚本实现自动任务管理。l 通过C+程序接口、.NET类等方法编写应用程序获取和管理Windows操作系统中的对象信息。2答:参照表2.1理解。