windows编程考试终极复习资料
- 格式:doc
- 大小:63.50 KB
- 文档页数:7
windows编程期末考试和答案一、单选题(每题2分,共20分)1. 在Windows编程中,哪个函数用于创建一个窗口?A. CreateWindowB. CreateDialogC. MessageBoxD. DrawText答案:A2. 哪个消息是当窗口被创建时发送的?A. WM_CREATEB. WM_PAINTC. WM_DESTROYD. WM_CLOSE答案:A3. 在GDI中,哪个函数用于绘制文本?A. DrawTextB. TextOutC. ExtTextOutD. MessageBox答案:B4. 哪个函数用于获取设备上下文(DC)?A. GetDCB. ReleaseDCC. BeginPaintD. EndPaint答案:A5. 在Windows中,哪个函数用于设置窗口的标题?A. SetWindowTextB. GetWindowTextC. DrawTextD. MessageBox答案:A6. 哪个消息是当窗口被销毁时发送的?A. WM_CREATEB. WM_DESTROYC. WM_CLOSED. WM_PAINT答案:B7. 在Windows编程中,哪个函数用于创建一个位图?A. CreateBitmapB. CreateCompatibleBitmapC. LoadBitmapD. CreateDIBSection答案:B8. 哪个函数用于在窗口中绘制一个矩形?A. RectangleB. FillRectC. DrawRectD. InvertRect答案:A9. 在Windows中,哪个函数用于获取系统颜色?A. GetSysColorB. GetDCC. GetBkColorD. GetTextColor答案:A10. 哪个消息是当窗口大小改变时发送的?A. WM_SIZEB. WM_MOVEC. WM_PAINTD. WM_CLOSE答案:A二、多选题(每题3分,共15分)1. 在Windows编程中,以下哪些函数可以用来创建窗口?()A. CreateWindowB. CreateDialogC. MessageBoxD. LoadImage答案:A、B2. 以下哪些消息是与窗口生命周期相关的?()A. WM_CREATEB. WM_DESTROYC. WM_CLOSED. WM_PAINT答案:A、B、C3. 在GDI中,以下哪些函数可以用来绘制文本?()A. DrawTextB. TextOutC. ExtTextOutD. MessageBox答案:A、B、C4. 在Windows中,以下哪些函数可以用来设置窗口的属性?()A. SetWindowTextB. SetWindowPosC. InvalidateRectD. MessageBox答案:A、B5. 在Windows编程中,以下哪些函数可以用来处理键盘输入?()A. TranslateMessageB. DispatchMessageC. PeekMessageD. GetMessage答案:A、B、C、D三、判断题(每题2分,共20分)1. 在Windows编程中,CreateWindow函数用于创建一个窗口。
一、填空题1.计算机网络是将分布在不同地理位置并具有独立功能的多台计算机通过通信设备和线路连接起来,在功能完善的网络软件支持下,以实现资源共享和信息传递的系统。
2.分析网络的发展和演变过程,大体可分四个阶段即面向终端、计算机-计算机系统、开放式标准化网络体系和网络的互连、高速化阶段。
3.计算机网络提供共享的资源是硬件、软件和数据三类资源,其中数据资源最重要。
4.按照网络的作用范围来分,可以分成局域网、城域网、广域网。
5.目前,无线传输介质主要有微波通信、卫星通信6.在网络中有线传输媒体主要包括双绞线、同轴电缆、光纤7.光纤根据工艺的不同分成单模光纤和多模光纤。
8.在模拟信道中,带宽是指一个物理信道传输信号的能力,即可传输信号的最高频率和最低频率之差,单位为HZ ;而在数字信道中,带宽是每秒传输的位数,单位为bps 。
9.网络连接的几何排列形状叫做网络拓扑结构。
10.使用分层技术可以把复杂的计算机网络简化,使其容易理解,并容易实现。
二、名词解释流量控制:计算机网络上对两台在相互通信的计算机之间在传送着的“帧”的调度行为。
路由问题:在复杂连接的网络内,会产生一个从这一终端端点到那一终端端点之间如何走的问题,即路由问题。
传输介质:传输介质是网络中信息传输的物理通道,是网络通信的物质基础之一,根据其物理形态分为有线介质和无线介质。
网络体系结构:计算机网络的层次及各层协议的集合三、简答:1.简述为什么要对计算机网络进行分层,以及分层的一般原则。
分层原因:1.可以将复杂的网络间题分解为许多比较小的、界线比较清晰简单的部分来处理;2.方便网络组件及产业的标准化;3.允许各种类型的网络硬件和软件相互通信;4.防止对某一层所做的改动影响到其他的层,这样就有利于开发;分层原则:1.各个层之间有清晰的边界,便于理解;2.每个层实现特定的功能;3.层次的划分有利于国际标准协议的制定;4.层的数目应该足够多,以避免各个层功能重复;2.ISO的OSI参考模型为几层?请由低到高顺序写出所有层次。
Windows⽹络编程复习重点⽬录第⼀章⽹络应⽤程序设计基础 (3)分布式⽹络应⽤程序的特点及分类 (3)⾯向应⽤的⽹络编程⽅法(3点) (3)基于TCP/IP的⽹络编程⽅法 (3)⾯向原始帧的⽹络编程⽅法(4种) (4)第⼆章⽹络程序通信模型 (4)常见的⽹络编程通信模型 (4)客户端、服务器的⼯作过程 (4)P2P模型的特点及其⽹络的拓扑结构 (5)第三章⽹络数据的内容与形态 (6)⽹络字节顺序与主机字节顺序 (6)⽹络字节顺序与主机字节顺序转换的函数 (6)⽹络数据传输形态 (6)字符编码 (7)数据校验 (7)第四章软件协议接⼝ (7)协议软件接⼝的位置与功能 (7)WinSock DLL的初始化与释放 (8)WinSock的地址描述 (9)套接字选项和IO控制命令 (9)处理WinSock的错误 (9)第五章流式套按字编程 (9)流式套接字通信的特点 (9)流式套接字的适⽤场景 (10)基本函数 (10)流式套接字编程的⼀般过程 (12)正确处理流数据的接收 (13)接收定长和变长数据 (13)流式套接字的编程实例 (13)第六章数据报套接字编程 (21)数据报套接字数据通信的特点 (21)数据报套接字的适⽤场景 (21)数据报套接字的编程的⼀般过程 (21)数据报套接字的常⽤函数 (22)数据报套接字的编程实例 (22)第七章原始套接字编程 (27)原始套接字的特点 (27)原始套接字的适⽤场景 (28)原始套按字的编程的⼀般过程 (28)原始套接字的编程实例 (28)第⼋章⽹络通信中的IO操作 (37)套接字的常见IO模式 (37)同步、异步、阻塞、⾮阻塞的概念及区别 (37)阻塞IO模型的⼯作原理与特点 (38)⾮阻塞IO模型的⼯作原理与特点 (38)IO复⽤模型的⼯作原理与特点(选择模型) (38)异步IO复⽤模型的⼯作原理与特点(WSAAsynsSelect) (38)完成端⼝模型的⼯作原理与特点(异步) (39)第九章WinPcap编程 (39)Wpcap.dll的⼯作流程 (39)Wpcap.dll的编程实例 (40)Packet.dll的⼯作流程 (45)Packet.dll编程实例 (45)第⼀章⽹络应⽤程序设计基础分布式⽹络应⽤程序的特点及分类1、特点:3点A)分布式⽹络应⽤程序将整个应⽤程序的处理分成⼏个部分,分别在不同的机器上运⾏,这⾥的“分布”包含两层含义:地理上的分布和数据处理的分布。
一、单项选择题:1.WinMain()函数的工作。
WinMain()函数是Windows程序的入口点在WinMain中进行:注册窗体类、建立窗体、显示窗体、更新窗体、建立消息循环2.非MFC的Windows程序中,不是处理WM_PAINT消息的时候怎样获得客户区的设备环境句柄。
BeginPaint ----------EndPaintGetDC---------------ReleaseDC(成对出现)利用GetDC()函数获取设备环境句柄3.句柄的含义。
句柄是一个(通常为32位的)无符号整数(unsigned int),它代表一个内核对象内核对象在应用层的表示4.在MM_TEXT映射模式下,什么情况下客户坐标和逻辑坐标可能不同。
当窗口客户区有滚动条时客户坐标和逻辑坐标可能不同5.Windows程序的控制流程。
Windows程序没有固定的控制流程,事件驱动程序控制流程6.事件驱动、消息驱动的概念。
事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。
消息是事件到达Windows内部后的称呼7.对话框、控件的作用。
对话框是程序与用户之间进行交互,接收用户输入、并把数据显示出来的一个窗口;控件是用户可与之交互以输入或操作数据的对象。
控件通常出现在对话框中或工具栏上。
8.MFC中怎样处理WM_PAINT消息。
在OnDraw()函数中处理该消息9.GetMessage()函数在什么情况下返回0,从而导致消息循环终止,程序结束。
在接收到WM_QUIT消息时返回010.Windows中,应用程序的输出是怎样进行的。
通过设备描述表DC(Device Context)来进行应用程序与物理设备之间的交互11.MFC中,大多数类的基类都是什么。
CObject类12.一个MFC应用程序必须有且只能有一个从哪个类派生的全局应用程序对象,此对象在运行时刻控制应用程序中所有其他对象的活动。
MFC复习资料注:由于大部分是网上找的,所以有些答案比较啰嗦,建议看的时候找重点背,还有有些问题比较难找,故不能求全责备,对那些还没找到答案的问题最好自己再搜一下吧。
1.MFC与SDK 及WINDOWS API的关系,它们在操作系统中的地位及作用。
1)关系:MFC一个类库,主要完成对WIN32 API 的封装,SDK是一个WIN32应用程序开发包,里面包含了开发WIN32应用程序所需的API声明,API是微软提供的WIN32应用程序接口。
简单说,API是接口,SDK是包含API声明的开发包,MFC是封装API的类库.2)作用:MFC可以用面向对象的方法来调用Windows API,以及应用程序开发的便捷,将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。
MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。
SDK为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具。
API计算机操作系统’或‘程序函数库’提供给应用程序调用使用的代码,许多系统应用程序借由API接口来实现,像是图形系统、数据库、网络Web服务,甚至是在线游戏。
2.Windows应用程序的生命周期。
程序童年:初始化1 用RegisterClass设定窗口属性值,注册窗口类、指定对应窗口函数WndProc2 调用CreateWindows送出WM-Create消息产生窗口,消息直接送给WndProc,进行内存配置3 调用函数Showwindow显示窗口4 调用Update window传送WM-paint消息给窗口,驱动窗口绘图程序壮年:运行时期5 进入消息循环,Getmessage(鼠标、键盘)从系统消息队列和应用程序消息队列抓取消息Translate Message 转换消息Dispatch Message 与Windows User模块协作,将消息分派到函数WndProc 程序老年:结束时期6 WndPorc处理各种消息7 对于消息WM-Close,WndProc将消息交由DefWindowsProc函数处理,后者调用DestroyWindow函数把窗口清除,送出WM-Destroy消息8 WndProc用函数PostQuitMessage响应消息,后者产生WM-Quit消息9 消息循环中,用Getmessage返回0 结束消息循环3.使用自定义消息的主要步骤。
Windows 程序设计复习提纲1.MFC与SDK 及WINDOWS API的关系,它们在操作系统中的地位及作用。
2.Windows应用程序的生命周期。
3.使用自定义消息的主要步骤。
4.消息的种类及发送消息的两种方式。
5.能够区分编译时多态和运行时多态,能够举出一些例子说明虚函数在MFC 中的应用。
6.简单的MFC程序的基本流程。
7.掌握MFC应用程序类层次类间访问有哪些方法(函数)。
8.UPDATE_COMMADN_UI 消息和一般命令消息的区别以及它的应用场合。
9.掌握MFC弹出式菜单的制作,能够添加、删除及为菜单添加位图。
10.掌握工具条切换及ShowControlBar 函数的使用。
11.掌握状态条SetPaneInfo 函数及SetPaneText 函数的使用。
12.掌握线程创建函数的使用方法及同步互斥函数的用法,能编写简单的多线程程序。
13.知道wait 和signal 函数,了解其中信号量的意义(正数和负数的时候各表示什么意义)。
14.模态对话框和非模态对话框有什么区别,以及它们的创建在程序设计过程中的差别。
15.掌握滚动条控件的编写方法(WM_HSCROLL)。
16.MFC 对话框数据采集的机制中两个函数DDx 和DDV 的作用。
17.图形设备接口GDI有哪些对象及设备环境如何使用这些对象。
18.MFC 检测内存资源泄漏的主要方法。
19.掌握主要设备环境对象(CPaintDC,CClientDC,CWindowDC)的构造函数及析构函数所调用的函数。
20.主要设备环境对象(CPaintDC,CClientDC,CWindowDC)的区别及应用场合。
21.MFC 几种主要映射模式各自的特点及应用场合22.掌握坐标原点移动的方法(SetWindowOrg,SetViewlportOrg),熟练掌握教材的例子。
23.自定义模式中MM_ISOTROPIC 和MM_ANISOTROPIC 模式的区别。
windows网络编程期末考试题及答案Windows网络编程期末考试题及答案一、选择题(每题1分,共10分)1. 在Windows网络编程中,以下哪个函数用于创建套接字?A. CreateSocketB. socketC. OpenSocketD. InitializeSocket答案:B2. TCP协议的三次握手过程不包括以下哪一步?A. SYNB. SYN-ACKC. ACKD. FIN答案:D3. 在Windows Sockets API中,哪个函数用于绑定套接字到特定的端口?A. bindB. bindsocketC. connectD. attach答案:A4. 以下哪个选项不是Windows Sockets API提供的功能?A. 支持TCP和UDP协议B. 支持广播和多点广播C. 支持IPv4和IPv6D. 支持FTP协议答案:D5. 在Windows网络编程中,以下哪个函数用于关闭套接字?A. closesocketB. closeC. shutdownD. terminate答案:A6. 以下哪个函数用于设置套接字的选项?A. setsockoptB. setsocketoptionC. configuresocketD. optionsocket答案:A7. 在Windows网络编程中,以下哪个函数用于接收数据?A. recvB. receiveC. getdataD. fetch答案:A8. 以下哪个函数用于发送数据?A. sendB. transmitC. dispatchD. post答案:A9. Windows Sockets API中,以下哪个函数用于获取主机的IP地址?A. gethostnameB. gethostbynameC. gethostbyaddrD. getaddrinfo答案:A10. 在Windows网络编程中,以下哪个函数用于解析主机名或服务名?A. gethostbynameB. gethostnameC. gethostbyaddrD. getnameinfo答案:A二、简答题(每题5分,共20分)1. 简述TCP和UDP协议的主要区别。
《Windows编程(C)》考试复习资料一、单项选择题1.下面()是合法的变量名。
A.accp5.0B._CharpC.99D.Main2.下面这段代码的输出为()A.进入了ifB.进入了if,进入了eleC.进入了eleD.进入了if,进入了eleif,进入了eleintyear=2046;if(year%2==0){Conole.WriteLine(\进入了if\);}eleif(year%3==0){Conole.WriteLine(\进入了eleif\);}ele{Conole.WriteLine(\进入了ele\);}Conole.ReadLine();3.下面程序的输出结果是()A)1B)2C)4.5D)4taticvoidMain(tring[]arg){inta=5,b=2;float某=4.5f,y=3.0f,u;u=a/3+b某某/y+1/2;Conole.WriteLine(\,u);Conole.ReadLine();}4.运行下面这段代码的结果为()A.去上课B.去上课,聚餐,逛街,睡觉C.什么都不输出D.编译出错tringday=\星期一\;witch(day){cae\星期一\:cae\星期三\:cae\星期五\:Conole.Write(\去上课\);cae\星期六\:Conole.Write(\,聚餐\);cae\星期日\:Conole.Write(\,逛街\);default:Conole.WriteLine(\,睡觉\);}Conole.ReadLine();5.分析下面这段代码,执行后count的值为()inti,j,count=0;for(i=0;i<4;i++)for(j=0;j<6;j++){count++;}A.15B.24C.20D.216.程序运行后的输出结果是()第1页共54页A)1,1,2B)2,2,1C)1,3,2D)2,2,3taticvoidMain(tring[]arg){inti=1,j=2,k=2;if(j++>0||k++>0&&i++>0)Conole.WriteLine(\,i,j,k);Conole.ReadLine();}7.若想打印如下图案,下面代码划线处应分别填入()。
2.1 windows文件系统Windows支持4种文件系统。
1)NT文件系统(NTFS)。
2)文件分配表(FAT&FAT32)。
3)CD-ROM文件系统(CDFS)。
4)通用磁盘格式(UDF)。
只有NTFS支持安全性。
2.2文件名目录和文件名不能包含任何ASCII字符在1-31之间的字符或者以下字符:*?”“<>\ /目录和文件名称不区分大小写,但可以保留大小写。
2.11.2目录管理创建或者删除目录涉及到一对简单函数:BOOL CreateDirectory(LPCTSTR lpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes)BOOL RemoveDirectory(LPCTSTR lpPathName)3.9文件处理策略C库提供了一些不同的优点,包括如下:1)代码可以移植到非windows平台。
2)便捷的面向行和字符的函数,而windows中没有相对应的函数来化简字符串处理。
3)C库函数通常比windows函数更易于使用。
4)面向行和流字符的函数易于改变以进行普通调用,尽管失去了可移植性特定。
5)C库可以在多线程环境下运行。
C库也有一些限制。
如下:1)C库不能管理或遍历目录,也不能获取或设置大多数文件属性。
2)C库在fseek函数中使用32位的文件位置,所以在顺序读取巨大文件的同时,却不能根据需要定位巨大文件的任何地方。
3)C库中没有高级特性,比如文件安全性、内存映射文件、文件锁、异步I/O和进程间通信。
3.10文件锁定文件锁可以是只读(共享)或读写(专有)。
最重要的是锁属于进程。
最普遍的函数是LockFileEx,其次是LockFile。
在使用文件锁是应考虑以下因素:1)解锁应该同前面锁定使用完全相同的范围。
2)锁不能跟文件现有的锁有重叠,否则会产生冲突。
3)锁可以超出文件的长度范围,该方法在进程或线程扩展文件时有用。
4)锁不能被新建的进程继承。
3.11注册表注册表是关于程序和系统配置信息的集中的分层的数据库。
对注册表的访问是通过注册关键字来实现的,他跟文件系统目录相似,关键字可以包含其他关键字或名称/值对,他跟文件名称和内容是类似的。
注册表名称/值对包含如下信息:1)操作系统版本号、编译号和注册用户。
2)每个正确安装程序的相似信息。
3)计算机处理器类型、处理器数量、系统内存等等信息。
4)用户特定信息,比如主目录和程序选项。
5)安全信息,比如用户账号。
6)从文件扩展名刀可执行程序的映射。
这些映射在用户点击文件名图标时通过用户界面shell使用。
例如.doc扩展名映射到微软的word程序。
7)映射网络地址到主机名。
4.1.4 异常处理顺序读图4.3错误和异常*错误可以被当做一个可知位置偶然发生的事件,例如系统调用错误应该能被代码段中的逻辑立即检测和汇报。
这样,程序一般包含明确的测试逻辑以判断文件读取操作是否有误,第二章采用ReportError函数来诊断并响应错误。
另一方面,异常可能会在任何地方发生,而要对异常进行测试是不可能或不现实的。
例如除以零和内存访问违规就是实际例子。
虽然如此,但是两者的区别有时是模糊的。
Windows可以在内存分配过程中使用HeapAlloc 函数产生异常,二档内存不足时使用HeapCreat函数。
程序可以通过使用RaiseException函数的程序员定义的异常代码来引起异常。
异常处理器提供了不使用goto或longjmp移交控制权,从而程序控制下的内部程序块或函数中推出的一个便利机制。
当程序块访问资源,比如打开文件,内存或同步对像时,这种能力尤其重要,因为处理器可以释放他们,也有可能在异常处理器之后继续程序执行而不是终止程序,另外,当程序块中断退出时,程序可以恢复系统状态,比如浮点掩码。
用户定义异常:RaiseException函数:VIOD RaiseException(DWORD dwExceptionCode,DWORD dwExceptionFlags,DWORD cArguments,CONST DWORD *lpArguments)4.5终止处理器终止处理器跟异常处理器的作用是相同的,但是程序当线程由于正常程序流程程序块离开以及异常发生时,他才会执行。
另一方面,终止处理器不能诊断异常。
在try-finally语句使用_finally关键字来构建中止处理器。
4.10矢量异常处理矢量异常处理(VEH)管理跟控制台控制处理器管理是相似的,尽管细节有所不同。
可以使用AddVectoredExceptionHandler来增加或注册一个处理器。
PVOID AddVectoredExceptionHandler(ULONG FirstHandler,PVECTORED_EXCEPTION_HANDLER VectoredHandler)5.2堆Windows以堆得方式来维护内存池。
一个进程可以包含多个堆,可以从浙西堆中分配内存。
对于不同的数据结构,使用不同堆来分配有时是很方便的,不同堆的有点包括:1)公平。
没有哪个线程可以获得比分配给其堆得内存还要多的内存,特别是由于程序忘记释放不在需要的数据单元而引起的内存泄漏缺点,只影响进程中的某个进程。
2)多线程性能。
每个线程具有自己的堆,线程之间的抢夺会减少,这充分提高了性能。
3)分配效率。
在小堆内分配固定大小的数据单元比在巨大的堆内分配许多不同大小单元的效率更高。
分段也减少了。
而且,每个线程具有唯一的堆简化了同步,所以产生了更高的效率。
4)解除分配效率。
整个堆及其包含的所有数据结构可以用单个函数调用来释放。
该调用同时也释放堆中任何泄漏的内存分配。
5)引用局部化的效率。
在一个小堆维护数据结构确保单元限制在相对少量的页面中,这无形中减少了数据结构单元处理时的页面错误。
注意:堆没有安全属性,因为他在进程之外是不可以访问的。
要销毁整个堆,使用HeapDestroy。
这是CloseHandle函数移除不需要的句柄的规则例外。
BOOL CloseHandle(HANDLE hHeap)5.5内存映射文件Windows内存映射文件功能也可以将虚拟内存空间直接映射到普通文件。
这有几个优点:1)没有必要执行直接的文件I/O(读写)。
2)在内存中创建的数据结构将会保存在文件中,以便以后被相同的或不同的程序使用。
3)方便而有用的内存算法(排序、查找树、字符串处理等等)可以处理文件数据,即使该文件可能比可用的物理内存要大得多。
如果文件比较大,那么性能挥手道页面调度行为的影响。
4)文件处理性能在同样情况细也能充分提升。
5)没有必要管理缓存及其所含文件数据。
操作系统能有效而可靠的完成这一艰巨任务。
6)多个进程可以共享内存,通过映射虚拟地址空间到相同的文件或到页面调度文件中(进程间内存共享是映射到页面调度文件的主要原因)。
7)没有必要消耗页面调度空间。
5.11DLL入口点串口化是必须的,因为DllMain必须在没有中断的情况下执行完初始化。
5.12DLL版本管理DLL的一个主要优点是多个程序可以共享单个实现。
然而该能力导致了兼容复杂性,正如下所述:1)新函数会增加,是的隐式连接程序在链接.LIB文件时所假定的偏移量无效。
而显式链接则避免了这个问题。
2)新版本会改变行为,引发现有未更新的程序问题。
3)依赖新DLL函数的程序有时链接着较老的DLL版本。
DLL兼容性问题解决方案:1)使用DLL版本号作为.DLL和.LIB文件名的一个组成部分,通常是作为后缀。
例如Utility_3_0.DLL和Utility_3_0.LIB就用于本书web站点和所有跟本书版号相关的项目范例。
通过使用隐式或显式链接,程序可以确定版本需求并使用不同的名称来访问文件。
改方案常用于UNIX程序。
2)微软引入了并行DLL或者汇编和组件概念。
该解决方案需要在程序中增加一个用XML编写的声明以定义DLL需求。
3).NET架构提供了并行执行的附加支持。
6.2.1指定可执行的映像和命令行lpApplicationName或lpCommandLine制定了可执行映像名,规则如下:1)lpApplicationName,如不是NULL,就是可执行映像名称。
如果映像名称包括空壳,可以使用引号。
2)否则,可执行映像将是lpCommandLine的首个后记。
通常当lpApplicationName 为NULL时,只指定lpCommandLine。
尽管如此,lpApplicationName仍有许多详细规则:1)如果lpApplicationNamebushi NULL,它指定可执行模块。
指定完整路径和文件名或使用部分名称和当前驱动器和路径,无需进一步查找。
名称中包含文件扩展名如.EXE或.BA T。
2)如果lpApplicationName字符串是NULL,lpCommandLine中第一个空格定界符的标记值是程序名。
如果名称中没有完整的目录路径,查找顺序如下:1.当前进程映像的目录。
2当前目录。
3.windows系统目录,可以通过GetSystemDirectory来获取。
4. windows目录,可以通过GetSystemDirectory来获取。
5.在环境变量PATH中指定的目录。
新进程可以通过常用的argv机制获取命令行,或用GetCommandLine以单个字符串形式来获取命令行。
注意命令行不是一个常数字符串。
这跟主程序的argv参数不是常量是一致的。
程序可以修改参数,尽管建议在参数字符串副本中进行修改。
新进程不必使用跟父进程同样的UNICODE定义。
各种组合都是可能的。
7.10进程和线程优先级和调度线程获取跟其进程优先级相关的优先级。
通过CreateProcess可以初始设置的进程优先级有四类,而每类具有基本优先级。
IDLE_PRIORITY_CLASS,基本优先级4。
NORMAL_ PRIORITY_CLASS,基本优先级9或者7。
HIGH_ PRIORITY_CLASS,基本优先级13。
REALTIME_ PRIORITY_CLASS,基本优先级24。
线程优先级设置成跟进程基本优先级相关,而在线程创建时优先级被设成进程优先级。
线程优先级在进程基本优先级的±2范围内。
所产生的五个线程优先级的符号名称如下:THREAD_ PRIORITY_LOWESTTHREAD_ PRIORITY_BELOW_NORMALTHREAD_ PRIORITY_NORMALTHREAD_ PRIORITY_ ABOVE_NORMALTHREAD_ PRIORITY_HIGHEST这些值来设置或者读取线程的相关优先级。
注意使用带符号的整数而不是DWORD。
7.13计时等待最后的韩式Sleep允许线程放弃处理器,并从运行状态转为在指定时间段(单位为毫秒)处于等待状态。