Windows程序(精选12篇)
Windows程序 篇1
1 事件驱动的工作机制
Windows程序也叫窗口程序,工作机制是事件驱动和消息响应。Windows程序一般有用户交互界面,也叫窗口,用户在窗口中的任何动作,比如鼠标动作、键盘动作等都认为是产生了事件,操作系统负责捕获事件,并以消息的形式通知对应的Windows程序,Windows程序就应该对此事件做出响应。具体是应用程序执行相应的函数来响应这次事件。当然,也可以让操作系统代为响应。比如,窗口移动、窗口大小改变等鼠标动作都是操作系统代劳响应处理的。
Windows程序的执行次序和传统的非Windows程序的执行次序不同。传统的控制台程序的执行次序是预先规定好的。但是,Windows程序的执行次序由事件发生的先后决定,没有事先规定好的执行次序。Windows程序的框架是先建立窗口,作为用户和程序交互的界面,然后是进入消息循环,等待事件的发生(也即消息的产生),并处理消息,直到接到退出程序的消息,程序才结束运行。所以Windows程序是在被动等待消息的到来,一旦有消息到来就处理它。
2 MFC
Windows程序的开发工具很多。其中微软的Visual studio系列就是其中之一,从最初的Visual C++ 6.0 到现在的Visual studio.NET。并且Visual studio.NET已经发展到Visual studio2015。
MFC是微软提供的C++类库集合,能辅助Visual C++ 6.0开发平台,快速开发Windows程序。尽管现在的开发平台功能越来越强大,但是它们也是在继承前面平台的基础上发展起来的。对初学Windows程序的人来说,了解一些MFC是有好处的。
开发Windows程序可以从最原始的开始,就是用WIN32API函数来构建程序。但是微软提供的MFC是快速开发Win⁃dows程序的C++类库集合。用户开发Windows程序时,基础性的工作MFC已经替我们做了。借助MFC会快速生成应用程序框架,包括交互用的窗口界面及消息循环。同时框架中消息路由机制也替开发者做了消息响应的处理。开发者的工作只是添加消息响应函数代码,函数框架也自动生成了。
3 应用程序框架
在Visual C++ 6.0 中开发程序时,应用程序向导(MFC App Wizard(exe))提供了三种程序架构,分别是单文档应用程序、多文档应用程序和基于对话框的应用程序。下面以单文档应用程序为例说明使用MFC开发程序的过程及相关的知识和概念。
在Visual C++ 6.0 开发环境中利用应用程序向导(MFC App Wizard(exe))新建一个基于MFC的单文档应用程序时,向导会自动生成应用程序框架,如图1所示。框架中包括四个主要类和一个全局对象。其中的四个类分别是主框架类(CMain⁃Frame)、应用程序类(CMy_1App)、文档类(CMy_1Doc)、视图类(CMy_1View)。一个全局对象是应用程序类(CMy_1App)的全局对象(the App)。这几个类分工并协同负责应用程序的不同功能。其中的应用程序类对象(the App)负责创建主框架窗口及显示窗口,并进入消息循环,等待消息的到来;主框架类负责主窗口的管理;文档类和视图类分工并合作完成数据的处理和显示交互功能。
接下来开发者可以利用类向导(MFC Class Wizard)辅助完成消息处理函数代码的添加工作。如图2、图3所示。
窗口在Windows程序中扮演了非常重要的角色,它是程序和用户交互的界面,在应用程序框架中由主框架窗口类(CMain Frame)负责窗口的管理工作,包括窗口的创建、显示、销毁和消息处理等都是这个类来完成。主框架窗口类继承至CWnd,其中封装了标识窗口的句柄m_h Wnd。窗口和主框架类(CMain Frame)对象间的关系就像人和身份证、户口本之间的关系。
4 消息映射
Windows程序顺利执行的关键就是用户触发的事件,比如按下鼠标左键,应用程序会对事件诱发的消息处理。应用程序如何处理消息,是由消息映射表安排的。消息映射表中包含了各种类型的消息处理函数的入口。MFC中的消息主要包括四类:
4.1 Windows消息
这类消息主要以WM_开头的消息,WM_COMMAND除外。Windows消息由窗口和视图处理。此类消息往往带有如何处理消息用的参数。
4.2 控件通知
此类消息包括从控件和其他子窗口发送到其父窗口的WM_COMMAND通知消息。框架像传递其他WM_消息一样传送控件通知消息。但是有一个例外,即当用户单击按钮时由按钮发送的BN_CLICKED控件通知消息。该消息被作为命令消息特别处理,并像其他命令一样传送。
4.3 命令消息
此类消息包括用户界面对象(菜单、工具栏按钮和组合键)发出的WM_COMMAND通知消息。
4.4 反射消息
反射消息是父窗口反射回来的消息。子窗口传递给父窗口的通知消息,父窗口会将该消息反射回子窗口,使得子窗口有机会优先处理该消息。
在基于MFC的windows应用程序中,消息处理函数属于框架生成的类的成员函数,几乎任何一个框架中的类都可以添加消息处理函数。并且是利用类向导快速添加并自动生成函数架构,开发人员只需要在其中加入代码而已。
5 结语
Windows应用程序的工作机制是事件驱动和消息响应。操作系统像人的神经系统一样为应用程序捕获事件,并包装成消息的形式,送入应用程序的消息队列,等待应用程序的处理。应用程序从消息队列中获得消息并处理它。MFC是微软开发的C++类库集合,能协助微软开发平台Visual studio系列,快速开发Windows应用程序。其中包括应用程序框架和封装了Win32 API函数的类,框架能帮助开发人员自动生成基础性代码,方便Windows程序的开发。其中,消息映射机制为开发者方便快速添加消息处理函数代码提供了保障。同时,开发人员也有很大的自由,随时可以调用API函数。
Windows应用程序也有入口函数,它就是Win Main,它已经包括到MFC提供的程序框架中,自动生成的代码中不会明显看到。但是,单步跟踪程序的执行就可以看到。MFC尽管方便了编程,但框架也隐藏许多细节,需要我们慢慢掌握。
摘要:该文写给初涉Windows程序的读者。文中主要讲述Windows程序的工作机制及它和MFC的关系。文中也会涉及窗口、句柄、消息循环、事件驱动等概念。
关键词:窗口,事件,消息,消息处理,MFC,应用程序框架
参考文献
[1]张欢.虚实结合框架下的数字电路远程网络实验[D].杭州:浙江大学,2014.
[2]曹喆.数据卡终端设备PC侧辅助工具的研究与开发[D].西安:西安电子科技大学,2013.
[3]马勋.手机Camera和LCD部件调试工具测试软件的开发和实现[D].西安电子科技大学,2013.
Windows程序 篇2
教材分析
本节内容为上海科技教育出版社出版的七年级信息技术教材第二单元第四小节《使用应用程序》,目的是使学生了解和掌握信息技术的基础知识,具有使用计算机工具进行图形绘制和图形处理的能力。
学情分析
授课对象为七年级学生。学生经过计算机基础知识和windows XP操作系统的学习,对计算机基本操作有了一定的了解。通过本节课的学习,大部分学生能用画图程序进行简单的图形绘制和图像处理,提高学生应用信息技术的能力。
教学目标
1.知识与技能
(1)学会启动与退出画图程序。
(2)认识画图窗口的组成和画图工具箱中的工具。
(3)能用画图程序画一幅图画。
2.过程与方法
(1)通过Windows XP附件程序的学习,让学生体验学习应用程序的方法。
(2)通过画图程序的学习,培养学生创造性探索和解决问题的能力。
3.情感、态度与价值观
培养学生良好的学习习惯和学习兴趣。
教学重点与难点
重点:
1、“画图”程序的启动。
2、熟悉“画图”程序工具箱中的工具。
难点:“画图”程序中工具的使用。
教学准备
多媒体课件、图片。
教学方法
讲授法、演练法、自主探究法
课时安排
一课时
教学过程
一、导入
回忆:同学们都上过美术课,都画过画,画画时大家都用过哪些工具呢?
学生回答„„。展示图片:
这两幅图是我用你们刚才说的这些工具来画的,只不过我是用电脑来画的,同学们这两幅图漂亮吗?学生回答„„。这两幅图是我用Windows XP系统自带的应用程序—画图程序来画的,同学们想不想学习这个画图程序呢?学生回答„„,好,这节课我就和大家一块来学习Windows XP应用程序—画图。
二、新课探究
1、启动“画图”程序
问题:如何打开“画图”程序?(1)学生动手探索。
(2)教师讲解并演示启动“画图”程序的操作步骤。
步骤:开始→程序→附件→画图
启动后的屏幕窗口如下图所示:
2、认识“画图”程序
(1)标题栏:它包含了程序的名称和图画的命名。(2)菜单栏:有六个下拉式菜单。
(3)工具箱:有许多绘图工具,绘画时任选一项工具,选择工具后,讲鼠标移到绘图区,指针就变成工具的形状。
(4)绘图区:在该区作图、绘画。
(5)调色板:左面是交叉重叠的矩形,左上角的矩形显示当前前景色,右下角矩形显示当前背景色,右边有28种颜色供选择。
3、认识“画图”工具
(1)重点讲解
橡皮工具:可以擦除图面中不想要的部分
涂色工具:用前景色对封闭区填充。
喷枪工具:该工具由鼠标的拖动速度决定的,速度越们慢,斑点越密,速度越快,斑点越稀少。
文字工具:利用文字工具可以在图画上写字。
直线工具:利用它可以画直线、水平线、垂直线。
曲线工具:利用它可以画单弯头曲线、双弯头曲线。
铅笔工具:可以在绘图区内任意画线。
椭圆工具:可以画一些垂直或水平的椭圆环。
(2)简单讲解
剪切工具、选定工具、取色工具、放大镜、刷子工具、矩形、多边形 圆角矩形。
4.实例:荷塘月色(教师演示)5.作品存盘退出:(讲解并演示)
存盘:选择“文件”菜单下的“保存”命令, 将所绘制的图画保存磁盘上。退出画图程序:
方法一:单击画图窗口右侧的关闭按钮;
方法二:单击菜单中“文件”选项中的退出命令
三、课堂练习
(1)绘制学案上的“小鸡吃米”图。(2)学生作品展示。
四、课堂小结
本节课主要学习了画图程序的启动与退出,画图窗口的组成以及画图工具箱中工具的使用。
五、课后作业
使用画图工具绘制一张圣诞贺卡图片。
Windows程序 篇3
一但你不在电脑的旁边,如果有同事想窥视一下你的电脑,屏幕保护程序可能会成为一道有效的屏障,需要输入的密码将会让他们只能“一声叹息”了。可是有的朋友可能会发现,在WindowsXP系统中屏幕保护程序的使用和设置似乎有点不同,这也是很多朋友问过我的问题,其实事情很简单,按照下面的方法,让我们一起来重温一下屏保的使用方法。
使用屏幕保护程序
在桌面右击鼠标,在弹出菜单中选“属性”,弹出“显示 属性”窗口,选择“屏幕保护程序选项卡”。(图1)
在图1中“屏幕保护程序(S)”下拉菜单中选择一种样式的屏幕保护程序,图中选择的是“三维飞行物”。
在“等待(W):”后选择待机几分钟后屏何开始运行,图中选择10分钟,则当电脑在无任何人工操作的状态下,10分钟后就会自动进入屏幕保护程序。
使用屏幕保护程序的密码保护功能
如果将“在恢复时使用密码保护(P)”选项勾选中,则取消屏幕保护程序时必须输入密码。
如果你发现你因为这个原因而无法使用屏保密码保护功能,你可以按下面的方法来添加Windows XP的登录密码:
首先,点击开始菜单,打开“控制面板”,在控制面板中双击“用户帐户”项目,打开用户帐户窗口。(图2)
在此窗口,你可以看见你的用户帐户,点击您使用的帐户,本例中使用的帐户为“Administrator”,随后进入下一个页面。(如图3)
在“您想更改您的帐户的什么?”下,选择“创建密码”,打开下一个页面,在图4所示的所示的页面中输入密码,并确认,密码提示可以填入一个提示单词,也可以不填,然后点击下方的“创建密码”。此时密码创建已完成,关闭窗口就行了。
这时候,如果运行屏幕保护程序,当有人想取消屏保时,就会弹出窗口要求输入正确的密码,否则将不能取消屏幕保护程序的运行,从而能够很好的保护我们的隐私不受别人的侵犯。
Windows XP中即时激活屏幕保护程序
屏幕保护程序只有在我们的电脑无人操作的时间,达到我们设置的时间限制之后才会自动运行,那么如果我们有事需要离开一下,能不能在离开之前立即运行屏幕保护程序呢?
我们可以通过在桌面上添加屏幕保护程序的快捷方式,从而在无需等待的情况下即可随时随地的激活屏幕保护程序,方法如下:
单击开始菜单,在菜单中点击“搜索”,打开“搜索结果”页面,在頁面的左边选择“所有文件和文件夹”选项。(图5)
在打开的页面中,在“全部和部分文件名(O):”中填入“*.scr”,再在搜索范围下拉菜单中选择“本地硬盘(C:)”,然后点击“搜索”按钮。(图6)
搜索完毕后,我们会在窗口右侧的搜索结果中看到一组屏幕保护程序的列表,选中所需的屏幕保护程序,在该文件上点击右键,选择“发送到/桌面快捷方式”。(图7)
Windows程序 篇4
1 分析过程
应用程序在长期的运行过程中, 常常因为程序bug和其他不可知的原因终止运行, 要找出程序bug只是费点时间, 找出使应用程序终止的其他原因不是一件容易的事, 然而让终止了的程序迅速重新运行起来却是一件不难的事。在Visual C#NET Framework中可以通 过System.Management命名空间 中提供的一 组托管代 码类来访 问WMI, 通过这些 类.NET Framework应用程序 可以访问 和操作从 任何资源提供的管 理信息 ,以便在WMI储存库和 提供程序 提供的动 态对象之 间收发数据, 这些资源包括: Windows操作系统、用WMI规范化的本机应用程序, 以及用System.Management.Instrumentation规范化的托管代 码等。System.Management.Instrumentation仅是通过WMI提供信息的 几种方法之 一 , 两个命名空 间不互相依 赖。如果使用System.Management类, 将能够访问任何WMI信息,而不仅仅是用System.Management.Instrumentation编写的规范。要管理远程服务器需要有登录远程计算机的账号和密码, 要执行相关操作还需要有在该计算机上的相应管理权限, .NET提供了简单、一致的编程模式, 主要包括远程连接、查询和提取数据。只要通过WMI接口编写一个运行在后台的程序,时刻监视应用程序的运行状态, 发现应用程序的进程不存在了就立即启动应用程序。同时监控程序的运行状态必须由被监控的应用程序来监控, 如果发现它终止了, 也应该由被监控的应用程序立即启动监控程序, 只有这样才能保证这一对监控与被监控程序的正常运行, 从而实现应用程序的长久运行。要启动一个应用程序首先要知道它的名字、位置和是否有启动参数等。由于应用程序的名字是可以改变的, 在应用程序启动时就应保存它的名字, 以便监控程序启动之用。具体实现: 首先在应用程序中保存应用程序自身的名称和扫描时间周期; 检查监控程序进程是否存在, 如果存在则 终止 ,主要是防止有两个以上的同名进程, 然后启动监控进程; 设置一个时钟控件定时检查监控程序进程是否存在, 如果不存在则启动监控程序。在监控程序中, 首先读取被监控程序的名称和扫描时间周期; 设置并激活定时检查被监控程序进程的时钟控件来检测应用程序进程是否存在, 如果不存在则立即启动应用程序, 同时写日志文件。
2 实现代码
(1) 下面是实 现监控应 用程序状态、启 动应用程序 和写日志等功能的部分监控程序的代码:
(2) 应用程序 中用来保 存程序名称 、监视监 控程序状态和启动监控程序等功能的部分代码:
3 结语
通过此方法, 实现了应用程序启动后不论什么原因终止都会在规定的时间内迅速启动应用程序, 对于那些运行在无人值守工作站上的应用程序, 省去了不少麻烦。
摘要:介绍了通过WMI接口从Windows操作系统中获取、分析和启动程序进程的过程,以及利用C#实现守护进程的方法和主要功能的编程代码。
Windows程序 篇5
一、限制“添加/删除程序”功能
如果你是和他人共用一台电脑,而你又不想让他人随便的添加/删除程序,那么适当地限制“添加/删除程序”的一些功能可以达到我们的目的。
方法一:组策略法
(一)、点击“开始--〉运行”,在运行对话框中键入“GPEDIT.MSC”,回车后打开组策略编辑器。
(二)、依次展开“本地计算机策--〉用户配置--〉管理模板--〉控制面板--〉添加/删除程序”选项,在右侧的窗格有下列选项可供选择,如图1所示(图1):
图 1
1.删除“添加/删除程序”程序;
2.隐藏“更改/删除程序”页;
3.隐藏添加新程序页面;
4.隐藏添加/删除Windows组件页面;
5.隐藏“从CD-ROM或软盘中添加程序”选项;
6.隐藏“从Microsoft中添加程序”选项;
7.隐藏“从网络中添加程序”选项;
8.直接打开“组件向导”;
9.删除支持信息;
10.为“添加新程序”指定默认类别。
我们可以通过修改右侧窗格中的上述策略项来个性化“添加、删除程序”项。双击我们欲改变策略的某一选项后,弹出该策略的“属性”窗口,将该策略由“未配置”修改为“已启用”,如图2所示(图2),单击“确定”即可启用相应的功能。
图 2
二、注册表法
1.打开记事本程序,键入以下内容:
Windows Registry Editor Version 5.00
(此处空一行)
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciesUninstall]
”NoAddRemovePrograms“=dword:00000001 //禁止使用整个“添加/删除程序”功能
”NoRemovePage“=dword:00000001 //禁止“更改/删除程序”功能
”NoAddPage“=dword:00000001//禁止“添加新程序”功能
”NoWindowsSetupPage“=dword:00000001 //禁止使用“添加/删除Windows组件”功能
”NoAddFromCDorFloppy“=dword:00000001 //隐藏“从CD-ROM或磁盘中添加程序”选项
”NoADDFromInternet“=dword:00000001 //隐藏“从Microsoft网站中添加程序”选项
”NoAddFromNetwork“=dword:00000001 //隐藏“从局域网中添加程序”选项
”NoSupportInfo“=dword:00000001 //禁用“支持信息”功
”NoServices"=dword:00000001//直接进入“添加/删除Windows组件”向导
未尾空一行以上空格或是回一下车,
录入完毕经检查确认无误后,另存为“DIYContrlpad.reg”,如图3所示(图3)。注意:文件名任取,扩展名必须是reg,另外,“//”后是笔者为方便大家的阅读而加的注释,在录入时,请不必录入。再就是上述各键值的数值数据取“00000001 ”时,表示禁止或隐藏,你要开启该功能只需将该键值设为“00000000”即可,利用数值数据“0”与“1”的不同你就可以自由定制“添加/删除程序”组件的相应功能了。
图 3
2.按照你的要求,定制好上述的注册表文件,双击导入到注册表中。重新启动计算机,使设置生效即可。
三、增强“添加/删除程序”功能
对于大多数用户,特别是个人用户都希望自己的“添加/删除程序”功能尽可能强大,以方便自己管理应用程序和Windows组件。比如,当我们试图删除Windows自带的一些组件(如:Windows Messenger、Netmeeting、系统自带的游戏等等)时,在“添加/删除程序”组件中却找不到相关的选项,其实这些选项是存在的,只不过让系统给隐藏起来罢了。好了,下面我们就让这些隐藏的选项统统现形,以增强“添加/删除程序”功能。
1.打开资源管理器,找到位于“X:WINDOWSinf”目录中的“sysoc.inf”文件(X为操作系统所在的分区,请自行修改),用记事本程序将其打开。
2.把欲在“添加/删除程序”组件中显示的项目后面的“Hide”字样删除,这样在“添加/删除Windows组件”中就可以找到它们身影。比如我们要在“添加/删除Windows组件”中显示“Windows Messenger”,以便删除该选项,可以将“sysoc.inf”文件中的下面一行“msmsgs=msgrocm.dll,OcEntry,msmsgs.inf,hide,7”中的“hide”去掉,如图4所示(图4),即修改为“msmsgs=msgrocm.dll,OcEntry,msmsgs.inf,,7”就可以了。
图 4
Windows程序 篇6
方法一:注册表法
步骤一点击“开始”|“运行”,在运行对话框中输入“Regedit”,回车后打开注册表编辑器。
步骤二依次展开如下分支:
[HKEY_CURRENT_USERSoftware
MicrosoftWindowsCurrentVersion
Policies],在“Policies”上点右键,新建一个“项”命名为“uninstall”。
步骤三选中刚刚新建的“uninstall”,在右侧的窗口中新建一个DWORD值,命名为“NoChooseProgramsPage”,双击,将其数值数据修改为“1”,如图3所示,点“确定”按钮并关闭注册表编辑器。
步骤四按“F5”刷新一下,好了,现在打开“添加/删除程序”窗口,看看“设定程序访问和默认值”选项是不是消失得无影无踪了。
方法二:组策略法
步骤一 点击“开始”|“运行”,在运行对话框中输入“GPEDIT.MSC”,回车后打开组策略编辑器。
步骤二依次展开如下分支:“本地计算机策略”|“用户配置”|“管理模板”|“控制面板”|“添加或删除程序”,如图4所示,在右侧的窗口中找到“隐藏设置程序访问和默认页面”选项,双击它,在弹出的“设置”对话框中,将其值由“未配置”修改为“已启用”,点“确定”按钮,并关闭组策略编辑器。
Windows程序 篇7
1.1 WDM驱动模型
Windows 2000对驱动程序的编写不再基于以往的win3.x 和win9x下的VxD(虚拟设备驱动程序)结构,而是基于一种新的驱动模型——WDM(windows driver model)。WDM为Windows98/2000/XP操作系统的设备驱动程序的设计提供了统一的框架。WDM来源于Windows NT的分层32位设备驱动程序模型(layered 32-bit device driver model)。它支持更多的特性,如即插即用(PnP)、电源管理、WMI和NT事件。
设备驱动程序是操作系统的一个组成部分,它由I/O管理器(I/O Manager)管理和调动。Windows 2000操作系统下的I/O管理器功能描述图1所示。
1.2 PCI介绍
PCI(Peripheral Component Interconnect)总线是一种同步的独立于处理器的32位或64位局部总线,最高工作频率33MHz,峰值吞吐率在32位时为132Mb/s,64位时为264Mb/s,总线规范由PCI SIG(Special Interest Group)发布。
这里主要介绍TI公司TDS642EVM的PCI拥有的3个基址寄存器:Base 0基址寄存器,Base 1基址寄存器,Base 2基址寄存器。
1) Base 0基址寄存器。
确定一个4MB可预取的访问区域。另外由DSP页寄存器设置该区域在DSP存储空间中的映射位置。DSP寄存器的bit 9:0与PCI访问地址的bit 21:0组合,形成最后对从DSP的访问地址。可预取的读操作一定是32bit的。
2) Base 1基址寄存器。
确定一个8MB不可预取的访问区间,这一区间映射到DSP的存储器映射寄存器空间(地址0x0180 0000)。PCI地址的bit22:0与一个固定偏移值(0000 0001 1)相组合,构成最后对DSP的访问地址。不可预取的操作允许字节访问。
3) Base 2基址寄存器。
16B的I/O空间,对应于PCI主机访问的I/O寄存器。
综上所述,TDS642EVM的PCI接口为PCI主机访问DSP的存储空间提供了2种方式:可预取访问,对应为一个4MB的Base 0区间;不可预取的数据访问,对应为一个8MB的Base 1区间(寄存器区间)。对不可预取空间的任何访问都会在单字传输后断开连接。对可预取空间的访问允许采用突发模式。
2开发工具的选择和具体实现方法
2.1开发工具的选择
开发PCI设备驱动程序需要专门的开发工具,目前应用广泛的工具主要有两大类。
一类是微软公司提供的Windows DDK(Device Driver Kit)。它有Windows 98 DDK和Windows 2000 DDK两个版本。由于DDK基于汇编语言的编程方式和内核模式的调用,对没有深厚的OS原理和编程水平的人员来说,任务相当艰巨。
另一类是NuMega公司提供的DriverStudio,它是一个大的开发工具包,包含VtoolsD、SoftICE和DriverWorks等开发工具。DriverWorks用于开发KMD和WDM驱动程序,并且对DDK函数进行了类的封装,从而为开发Windows NT、Windows 2000和Widnwos 98 WDM设备驱动程序提供了一个自动化的方法。
DriverWorks,提供了VC++下的开发向导Driver Wizard,按照它的提示可以迅速地生成驱动程序的框架。这个框架结构提供可以正确执行WDM动态环境中IRP的请求,而且,也包含用于简化系统提供的标准类驱动程序(如HID、流)和总线驱动程序(如PCI和USB)接口的类等。
总之,利用DriverWorks开发WDM驱动程序,可以大大简化开发人员的工作量、缩短开发周期以及降低开发驱动程序的难度。
2.2实现方法
下面介绍在Windows 2000下的PCI(针对TDS642EVM)驱动程序的设计具体实现方法。
在利用DriverWorks V2.5的向导DriverWizard完成驱动程序的框架时共有10个步骤,其中关键步骤有:
1) 在第三步中选中PCI,将VendorID中添加为104c,DeviceID中添加为9065,PCI Subsystem ID中添入06421652,在PCI Revision ID中添入00。这四项可以用软件PCIView浏览PCI设备,用这个软件也可以得到BAR0~BAR5的资源分配情况和中断号。
2) 第六步中设置IRP队列排队方法,它决定了驱动程序检查设备的方式。本设计选System-Managed,则所有的IRP排队都由系统(即I/O管理器)完成。
3) 第八步是最关键的一步。首先在Resources中添加资源,在name中输入变量名,在PCI Base Address中输入0~5的序列号。0~5和BAR0~BAR5一一对应。在设置中断对话框中,在name栏写入中断服务程序的名称,选中创建中断服务程序ISR(Create ISR),不选创建延迟程序调用DPC(Create DPC),选中Make ISR/DPC class functions,使ISR/DPC成为设备类的成员函数。在设置DMA对话框中,在name栏中写入DMA服务程序的名称,选中Bus Master DMA,选中Exclusive to this device。其次选中Buffer以选取读写方式,用于描述与I/O操作相关的数据缓冲区。本设计需要快速传送大量数据,因此采用Direct I/O方式。
4) 在第九步中,需要加入与应用程序或者其他驱动程序通信的I/O控制代码参量。
通过以上操作,可以生成一个PCI驱动程序的简单框架,以下将通过编写TDS642EVM的PCI驱动介绍如何实现主机与DSP之间的通信,主要功能是实现IRAM和SDRAM的读取操作。
首先,通过DriverWizard生成简单的框架(PCI642);
其次,在PCI642中的PCI642-IOCTL-800-Handler函数中的相应位置添加入写寄存器的函数
在PCI642中的PCI642-IOCTL-801-Handler函数中的相应位置添加入读寄存器的函数
m-MemoryRange1.ind(ds.OffsetAdd,ds.data,ds.count); //读寄存器
在PCI642中的PCI642-IOCTL-802-Handler函数中相应位置添加写映射存储器的函数
m-MemoryRange0.outd(ds.OffsetAdd,ds.data,ds.count); //写映射存储器
在PCI642中的PCI642-IOCTL-803-Handler函数中相应位置添加读映射存储器的函数
m-MemoryRange0.ind(ds.OffsetAdd,ds.data,ds.count); //读映射存储器
到现在,一个简单的通过PCI接口实现主机与DSP通信的程序就完成了,通过编译链接生成pci642.sys和pci642.inf。
3驱动程序的调用
编写驱动程序本身不是最终目的,最终目的是调用驱动程序管理资源,并为用户应用程序使用。驱动程序加载以后,它的许多进程处于空闲状态,实际上需要用户应用程序去调用激活。
以下将通过具体的函数实现寄存器的读写和存储器的读写操作。
首先,通过MFC生成一个简单的应用程序框架,程序中通过CreateFile打开设备驱动程序,判断是否为PCI引导,复位DSP,初始化EMIF;
其次,在程序中加入实现寄存器读写操作和存储器读写操作的函数,主要函数是DeviceIoControl(m-hPci,PCI642-IOCTL-80X,pds,IOCTL-INBUF-SIZE,pds,
IOCTL-OUTBUF-SIZE,&nRead,NULL),
其中,m-hPci是通过CreateFile得到设备句柄,PCI642-IOCTL-80X中的X代表0,1,2,3分别表示寄存器的读写和存储器的读写,pds是与DSP通信的数据,IOCTL_INBUF_SIZE和IOCTL-OUTBUF-SIZE是输入和输出缓冲区的大小,nRead是读或写的字节数。
在进行存储器操作前,应首先向DSP页寄存器(DSPP)中写入存储器的地址,以确定Base 0基址寄存器在DSP存储空间中的位置,然后计算出偏移地址,最后调用DeviceIoControl进行存储器的操作。
4结论
在Windows 2000下使用DriverStdio开发PCI驱动程序,程序结构清晰,开发周期较短,效率高。在PCI从模式条件下,大数据量连续传输速度可达28Mbps以上。PCI总线速度最高可达528MB/s(66MHz、64位)。这是其他总线无法比拟的速度,如ISA总线速度只有5MB/s。
参考文献
[1]尹勇,李宇.PCI总线设备开发宝典[M].北京:北京航空航天大学出版社,2005.
Windows程序 篇8
1 Windows界面设计原则
1.1 主次性原则
在界面设计过程中, 要注重厘清界面各要素的关系, 用户在使用计算机的过程中一般会有经常使用的软件和不经常使用的软件, 同样在界面元素中, 有对用户重要的元素, 也有次要的元素。以用户为中心, 将重要的元素放在显眼的位置。同时将控件和元素进行适当分组, 也可以起到凸显重要元素的作用。具体做法是根据界面元素功能不一的特性, 将关系紧密的元素进行捆绑, 也就是在屏幕上加以整合, 显示其关联性, 方便用户查找和使用。
1.2 注重人们阅读习惯
现代人基本上都习惯于从左至右阅览书籍、报纸以及刊物等, 同样对于计算机, 人们也习惯于从左至右看, 因此左边的位置相对右边的位置要重要些, 在界面设计中要将重要的元素放置于此[1]。
1.3 一致性原则
界面设计要遵循一致性原则。一致性原则是指界面窗口风格的一致, 界面使用元素、控制方法的一致以及界面术语一致。用户最讨厌每换一个屏幕或是每打开一个窗口就要更换一套操作指令和操作方法, 因此程序员在设计界面的过程中, 要确保用户打开界面操作行为简单可行, 保持窗体风格设计规范化和一致性, 以便让用户始终用一种思维模式和操作方法运作, 同时也要保持窗口按钮的位置、标签和信息语言、色彩风格的一致性, 减少用户操作步骤和查找程序, 提高界面可使用性和操作性。界面设计一致性有助于用户提高计算机使用效率, 减少用户时间和精力的浪费, 给用户带来方便。
1.4 空间布局的合理性原则
通常情况下人们不喜欢充满的界面, 因此在界面设计中要注意界面不应被全部塞满, 要合理利用空间留白, 即将界面内容与界面四周的空白区域进行合理搭配, 同时界面内容之间也不要太过拥挤, 合理利用空白区域不仅有助于突出重要元素还能提高界面美观度, 从而给用户带来享受[2]。
1.5 色彩使用原则
界面设计用到的最基础的要素便是色彩。明亮的色彩能起到惊醒人的作用, 柔美的色彩能给人视觉享受, 因此在界面设计中要注重不同色彩的特性及使用原则。同时, 使用色彩也要适当, 过多的色彩堆砌在一起会给人混乱不安的感觉, 最好使用保险的色彩。除此之外, 也要将色彩的使用与界面布局统一起来, 优化界面设计, 确保能给用户带来主观享受体验。
1.6 简明性原则
在设计Windows界面过程中要注重简明性原则, 简明性原则力求界面干净简单, 如果界面程序设计过于复杂, 会使用户感到使用非常困难。为此, 程序员在设计界面时要使创建界面的操作趋于简单化以及界面各个控件的分布一目了然, 便于用户使用。
1.7 动感性原则
一般用户界面都处于静态, 用久了会让用户产生倦怠感, 为此, 程序员在设计界面时可以考虑使用静态效果的界面, 改变传统界面显示状态, 给用户不同的视觉体验。界面动感化也就是将界面可见元素添加动感显示功能, 比如可以对界面控件添加动感显示效果, 既醒目又可以缓解用户视觉疲劳。但是动感元素使用不要过多, 过度使用会给人杂乱无章的感觉, 引起用户烦躁感。同时, 动感效果也要与界面风格一致, 便于用户使用。
2 Windows界面操作设计
Windows的界面操作包括快捷方式或热键, 对于用户操作频率大的软件要设置成快捷方式或热键, 减少用户操作步骤, 从而提高用户的使用效率。
2.1 工具提示
工具提示在Windows界面中显示为小标签, 当鼠标指针在控件上停留会立即显示, 工具提示是一种向用户显示消息的好方法, 当鼠标停留在某一个工具栏时, 会出现一个弹出式信息框, 指引用户了解该软件的功能, 简化了用户查找信息的步骤。
2.2 操作可逆
不同的用户计算机操作能力不一, 通常情况下用户会对某一程序重复操作或错误操作, 为此, 在程序设计中, 要将单个的程序设置为可逆操作, 同时如果用户出现错误操作, 程序应该设置一个弹出对话框提示用户正确操作路径, 以减少用户不必要的时间浪费[3]。
2.3 输入操作
在操作计算机的过程中, 用户需要对特定的数据或文字反复输入, 比如在输入文字过程中, 用户上次操作已经输入过, 反复输入会降低用户的使用效率, 为此就应该将用户输入的数据进行记录, 将用户数据输入量降至最低。
2.4 设计良好的联机帮助
联机帮助主要指信息提示、解决用户遇到的疑难问题。联机帮助是任何应用程序都应设置的内容, 一个优秀的应用软件应该提供在线求助功能, 甚至提供使用向导, 引导用户了解正确的使用方法。如今科技发展迅速, 基于这些先进的科技, 在设计联机帮助功能的过程中也应该引入先进技术, 比如可以将联机帮助设置为语音导向和文字导向2种形式, 通过语音的讲解, 使操作内容形象化、具体化, 从而更好地帮助用户解决问题[4]。
2.5 界面特色化设计
现代人都讲究个性, 对于千篇一律的Windows界面风格会产生厌倦感, 为此在符合界面设计规范的基础上, 为用户设计出多种风格界面尤为重要。通过文字、图片、图标以及音效的使用, 使界面突出个性化。比如当下很流行的花体, 计算机程序设计员可以在原有字体的基础上增加这种字体, 供用户选择, 同时图标也可以多样化, 比如将图标设计成小动物的形状, 既吸引用户的注意, 也使界面形象化和个性化。除此之外, Windows界面是一个很好宣传商业广告的平台, 如果将广告标识运用于Windows界面中, 一定会收到很好的广告效果, 同时也形成界面个性化设计。
2.6 错误处理
在操作计算机的过程中, 用户往往会因自己专业技术水平不够会出现操作失误的状况, 比如键入错误、数据输入错误等, 因此计算机程序在设计时应考虑增强处置各种错误的能力, 当用户操作错误, 程序应及时向用户发送提示报告, 并将正确的操作步骤显示出来。目前, 提示功能在计算机操作中比较常见, 比如鼠标停在某一个工具栏时, 旁边就会弹出一个信息框, 用以指示该工具的功能。
2.7 安装向导的设计
向导是一种提供给用户的辅助策略, 它引导用户根据自己的实际需要按部就班地实现一个个程序操作过程, 比如说向导帮助用户完成操作程序复杂且用时多的Windows应用程序安装任务:Windows应用程序的安装都是以“Setup”命令进行的, 安装程序完成后, 为方便用户的安装, 一般采用相应的打包软件或有关系统提供的功能为应用程序打包, 建立安装向导。
3 结语
Windows应用程序的界面设计因遵循设计原则与方法, 注重用户体验, 同时在设计过程中要注意Windows界面的一致性, 在运用色彩填充界面内容的同时也要为界面布局留有空白, 以使用户得到独特的视觉体验。在操作设计过程中, 要增强程序的可操作性, 减少用户操作步骤, 为用户带来便利。最后, 每个用户拥有不同的习惯和爱好, 界面设计要充分考虑用户的个性化需求, 在色彩配置、界面风格设计上给用户提供可选择的余地。总之, Windows界面设计要以用户为中心, 在满足用户需求的同时, 程序员也要不断进取, 引用先进技术和设计方法, 提升界面设计质量。
参考文献
[1]宋元涛.Windows应用程序的用户界面设计研究[D].曲阜:曲阜师范大学, 2000.
[2]张明真.基于用户体验的智能手机应用程序界面设计研究[D].无锡:江南大学, 2011.
[3]罗杰红.Windows应用程序的界面设计[J].吉林工学院学报:自然科学版, 2002 (1) :61-64.
Windows程序 篇9
关键词:Windows7,Windows XP,应用程序,兼容
Windows 7自2009年问世以来, 得到广大用户的认可和好评, 稳定性和安全性更好, 用户数逐年增加, 可是, 由于Windows XP平台上拥有大量的应用程序无法在Windows 7中运行, 存在兼容性问题。如何发挥Windows 7平台安全稳定性能的前提下, 同时兼顾XP平台下的应用程序, 保护用户原有的投资, 是广大XP用户关心的问题, 通过采用微软桌面虚拟化技术, 在Windows 7中引入“Windows XP Mode”, 让XP平台下的应用程序在Windows 7环境中顺利运行。
1 微软虚拟化技术概述
1.1 虚拟化技术概念
虚拟化通常是指计算元件在虚拟的基础上而不是真实的基础上运行[1]。虚拟化技术可以扩大硬件的容量, 简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行, 允许一个平台同时运行多个操作系统, 并且应用程序都可以在相互独立的空间内运行而互不影响, 从而显著提高计算机的工作效率。
1.2 虚拟应用程序
虚拟应用程序是指在主机桌面上运行的在虚拟机中所安装的应用程序[2]。从用户的感觉上来看, 虚拟应用程序的启动和运行就像安装在本地主机的应用程序一样, 只要点击桌面“开始”菜单上的应用程序快捷方式就可以运行程序。虚拟应用程序是Windows Virtual PC的一个主要功能, 通过在来宾操作系统中运行应用程序, 允许用户透明地运行与主机操作系统无法完全兼容的应用程序。
1.3 Windows XP mode原理
Windows Virtual PC是Windows 7操作系统的一个可选组件, 这个组件允许用户在单一计算机上同时运行多个操作系统。Windows XP Mode是一个预配置的虚拟机, 在Windows XP Service Pack 3 (SP3) 中预装了并且预激活了该虚拟机[3]。该虚拟机已经预配置为发布虚拟应用程序, 为用户提供一个快速解决Windows XP应用程序兼容性问题的方法, 可以直接从运行Windows 7的计算机上安装和运行原本运行于Windows XP上的应用程序。
Windows 7系统中的XP模式, 实际上就是一个全功能、包含有SP3补丁的专业版XP操作系统, 免费且完全的运行在Windows 7系统中。只是在虚拟机中, 操作系统所需的全部硬件资源 (包括CPU、内存、显卡、硬盘等) 都会被虚拟机的软件给模拟出来或者为其所用。
2 Windows XP mode安装和配置
Windows Virtual PC和Windows XP mode是Windows 7的系统可选组件, 正版合法的Windows 7用户可以在微软下载中心免费下载, 只有Windows 7的专业版 (Professional) 、旗舰版 (Ultimate) 和企业版 (Enterprise) 中才支持XP模式, 可以从微软网站下载Windows XP Mode的系统文件。在计算机下载安装Windows XP mode前先确认计算机硬件是否兼容, Virtual PC要求使用支持硬件虚拟化的处理器 (在BOIS中启用AMD-V™、Intel®VT或VIA®VT) 。现在所有的CPU都支持XP Mode, 通过安装微软发布的系统补丁KB977206后, 不支持CPU虚拟化的计算机也可以使用XP Mode的功能了, 安装和配置XP模式步骤如下:
1) 下载并运行XP模式文件。先下载适合版本的文件, 访问http://www.microsoft.com/windows/virtual-PC, 单击“立即得到Windows XP Mode”。在出现的页面中选取所需的Windows 7版本和语言, 下载正确的安装包。在下载开始之前, 微软网站会运行一个正版验证检查, 以确保你的Windows 7系统是正版的, 按照屏幕上的提示进行操作即可。XP模式文件名是:Windows XPMode_zh-cn.exe, 大小560.4 MB。下载完成后, 安装提示进行安装, 初始化安装结束后, XP模式就存在于系统中了。
2) 下载安装虚拟机系统。在下载安装XP模式之后, 还需要安装一个虚拟机软件才能正常使用。在微软的下载中心页面, 点击选择“Windows虚拟机下载”, 按照网站提示下载虚拟机软件, 文件名:Virtual PC_install.mht, 大小15.3MB。在虚拟机安装完毕之后, 需重启电脑, 提示系统配置更新, 按照提示选择即可。
3) 首次使用XP模式。安装XP模式和虚拟机重新启动后, 进入Windows 7主界面, 通过依次点击“开始”→“所有程序”→“Windows Virtual PC”, 然后选择“Windows XP Mode”。当XP模式第一次运行时, 出现一些简短的设置窗口, 类似于首次启动一个预装了系统的计算机的情形, 包括接受协议, 设置用户名、密码和允许自动更新等。同样, 设置完毕后有一个简单的功能介绍, 跟着屏幕上的提示进行操作即可。设置完成之后, 系统重启, 再次在开始菜单中打开XP模式, 就会出现熟悉的XP经典界面, 虚拟的XP系统就运行在Windows 7桌面的窗口中了。
3 使用Windows XP mode
通过Windows7桌面的“开始”按钮, 进入熟悉的XP环境, 用户可以像拥有另一台完整的安装Windows XP系统的计算机一样, 在这个虚拟的XP环境中可以安装运行XP下各种应用程序。由于是在完全的XP环境下, 用户不用担心系统兼容性问题。此时, Windows 7和Windows XP两个操作系统同时运行, 集成在一个桌面上。例如:用户可以在Windows 7中安装运行office2007, 同时在虚拟的XP中运行office2003或其它程序等。
XP Mode为用户提供了一个有用的“集成功能”, 该集成功能让XP虚拟系统可以使用计算机的硬件资源包括音频、显卡、光驱、硬盘、移动存储设备和打印机等, 也可以通过Windows剪贴板进行数据交换, 在虚拟系统 (XP) 与真实系统 (Windows 7) 之间进行文件传输。
XP Mode的有一个很人性化的功能“应用程序虚拟”, 如果用户不习惯开启虚拟系统来进行工作, 可以开启XP Mode的自动发布虚拟应用程序功能, 这样可以让在虚拟系统中安装的应用程序脱离虚拟机来运行。此时当用户在虚拟系统中安装软件后, XP Mode会自动把该应用程序以虚拟形式发布到Windows7中。发布后, 用户可以在“Windows 7的开始菜单→所有程序→Windows Virtual PC→Windows XP Mode应用程序”中找到该虚拟应用程序的快捷方式。用户只需要打开该快捷方式, 无需进入到虚拟系统环境, 就可以实现在Windows7下虚拟运行该应用程序。虽然XP Mode的XP环境是虚拟的, 但是在使用过程中, 和普通运行的操作系统一样, 需要安装更新系统补丁, 安装防杀毒软件, 以防止病毒木马的入侵, 确保系统安全。
带Windows XP Mode的Windows Virtual PC的主要优势在于, 可以使用它解决桌面迁移到Windows7版本的应用程序兼容性问题;并充分利用Windows 7所有激动人心的新特性, 同时仍能运行原有的XP平台下丰富的应用程序。使用带Windows XP Mode的Windows Virtual PC的限制是缺乏集中的管理功能, 运行在每个桌面计算机上的每个虚拟机必须在该桌面计算机上本地进行管理和控制, 这样终端用户要管理两个系统, 增加用户的管理难度, 这样带Windows XP Mode的Windows Virtual PC主要适合于较小的计算机网络[4]。
4 结束语
通过在Windows7中安装系统的可选组件:Virtual PC及XP模式, 实现了在Windows 7环境下安全稳定地运行XP应用程序, 解决将桌面迁移到Windows 7的应用程序的兼容性问题。这样桌面计算机迁移到Windows 7, 能够充分利用Windows 7的新功能和新特性, 同时又能运行XP平台下较老的应用程序, 保护了用户原有的投资。
参考文献
[1]雷万云.云计算、平台及应用案例[M].清华大学出版社, 2011.
[2]http://technet.microsoft.com/zh-cn/library/ee449411 (v=ws.10) .aspx.
[3]http://windows.microsoft.com/en-us/windows7/install-and-use-windows-xp-mode-in-windows-7.
Windows程序 篇10
当前,移动互联网已成为了人们主要的获取信息的主要渠道。在移动互联网上主要有两种方式获取信息。 一是通过各种浏览器来浏览网站内容。二是通过手机上安装的app来获得来自服务器上的数据,如QQ和微信。这两种通讯方式都需要服务器端程序的支持。而衡量服务器端程序性能的一个重要指标就是并发量,也就是同时可以接入客户端的数量,本文讨论如何在windows系统下最性能的服务器端程序模型完成端口模型。
2 具体内容
首先,我们讲到同步和异步两个概念。
同步模式是比较早期的模式,在Windows套接字创建时,默认工作在同步模式下。同步模式就是需要服务器完成收发后才可以做下一步的操作,这样会大大降低程序的运行性能。所以高性能的服务器端程序多数使用异步模式。异步模式是指服务器程序不等当前I/O是否完成,就马上执行下一个任务,并不等待程序执行结果或程序本身出现错误退出。这样就大大提高了程序性能。举个例子来说,一个公司的物流公司的经理给一个快递员下达快递任务后,等待这个快递员送完快递后再给第二个快递员下达新任务。如果需要用1 分钟的时间把下单的内容通知给快递员,且第一个快递员用时完成任务1小时,第二个快递员也用时1小时完成任务,则一共用时2小时2分钟,这样的模式就是同步模式。如果经理给第一个快递员下完任务后不等待快递员执行任务的完成就直接给下一个快递员下达第二个任务,这时用时就只有2 分钟,仅仅是下单内容通知给快递员的时间,这样的模式就是异步模式。很明显,采用异步模式的程序大大提高了性能。
第二,我们讲到阻塞和非阻塞两个概念
阻塞模式就是指本线程结果返回之前,线程会被挂起该线程进入非可执行状态,CPU不给线程分配时间片,即线程暂停运行,进入待机状态。函数只会有执行结果或者出错码生成以后才会做下一步的操作。而非阻塞模式指的是不等待执行结果或出错码的出现不会直接进入睡眠状态而是马上执行下一步的操作,此时线程本身还是处在激活状态。同样用上面经理-快递员的例子来说明,阻塞模式是指经理在下达指令后一直等待快递员返回执行情况。在此期间不做任何事情,直到快递员返回唤醒经理,再进行下一个命令。而非阻塞模式指的是经理下达指令后在等待返回执行情况期间可以做其他事情,比例不停打电话给快递员询问执行情况等。
第三,我们来讲到IOCP的工作原理和编写过程。
IOCP是Windows下高性能的可伸展的I/O模型,是最高性能的模型,与其性能相当的模型都没有。IOCP全称Input/Output Completion Port,译为I/O完成端口。首先我们来说为什么Windows下要使用该模型。我们知道在网络上客户端与服务器发送和接收数据(即网络I/O操作)相对于CPU而言要花费大的时间,两者的差距可能有数几千倍之多。显然如果要CPU和网络I/O操作采用同步模式的话即让CPU等待网络I/O完成收发数据之后再做下一步的操作,对于整个系统来说是一种巨大的浪费。所以为了提高效率,让系统不等待结果而是直接做下一条操作,只是让I/O操作完成之后再通过回调函数来通知系统收发执行情况。这也是为什么叫做完成端口的原因。IOCP其实上是一个线程池。这个线程池的核心工作是去调用I/O操作完成时的回调函数。IOCP可以想象为一个包含网络通信操作即接收新客户端的加入,发送数据到客户端,接收客户端上交的数据的一个信息队列,它会把上述网络操作即接收客户端接入请求,发送数据和接收数据操作执行的结果存放在这个队列里。我们可以读出所有的网络操作的结果以及出错码。
具体实现过程:
第一步:创建一个完成端口。使用HANDLE完成端口=Create Io Completion Port(参数1,参数2,参数3,参数4);参数4 代表的是程序可以同时生成线程的最大数量。人们很自然地想到在一个CPU上运行的线程数量是越多越好。但是如果线程太多的话,系统要在不同的线程上不断地切换上下文,这样不但不能加大CPU的能力,反而会降低CPU的实际使用效率。所以我在这里只是设置为零,也就是说我们只需要让一个CPU上运行一个线程就好。
第二步:创建n个I/O操作线程。业内一般控制n的数量为CPU数量的2 倍加2,如果是4 核CPU,就是4*2+2 个即创建10个I/O操作线程。因为在网络上接收客户端数据和发送数据到客户端都是比较需要时间的事情,而在CPU上的线程操作是比较高速的,两者的差距可能是网络I/O操作用时几千ms而CPU一个线程只是用几个ms而已,所以只需要几个I/O操作线程就可以满足一台服务器上几万个客户端的accept,send,rec执行操作。
I/O操作线程用来处理上述讲到的接收客户端接入请求,发送数据和接收数据操作,也是处理我们I/O网络事件的线程。那么我们就要首先获取系统中CPU的数量以便确定I/O操作线程的具体数量。
使用SYSTEM_INFO, Get System Info来取得Windows系统信息,在Get System Info中的就有CPU的核心数量,然后如上所述生成的I/O操作线程为CPU核心数量的两倍加二。
然后:把用于监听的本地套接字绑定到完成端口上面并在程序设置的网络端口上开始监听。绑定方法为使用Create IoCompletion Port()函数。注意这里和创建完成端口的Windows API完全相同。
第三步:I/O操作线程不停地取出已有的发送数据和接收数据的结果,这些结果都存放在完成端口上,取出这些结果的函数是阻塞函数,也就是说不会被打断,除非出错。
第四步:程序的主线程里只做等待客户端的套接字连接的工作。这里可以使用Accpet()和Accept Ex()两个函数,Accept Ex是微软专门在Windows操作系统里面提供的扩展函数,使用重叠I/O机制。在Windows里的异步I/O操作都要使用重叠I/O机制。重叠I/O机制可以简单地理解为含有这种机制的操作方法和系统里别的操作是异步的,不需要和别的操作有任何联系。
扩展函数Accept Ex()的定义
BOOL Accept Ex(
生成套接字参数1, //生成用于本地监听的套接字
生成套接字参数2, //用于接受连接的socket,事先建好的,有客户端连接进来时直接把这个Socket拿给它用的那个,是Accept Ex高性能的关键所在。一般来说,根据业务的多少来确定事先准备socket的数理。
PVOID参数3, //这个为缓冲区,包含了三个信息:一是客户端发来的第一组数据,二是服务器的地址,三是客户端的地址。
DWORD参数4, //参数3中用于存放数据的空间大小。如果为零,则Accept时将不会等待数据到来,而直接返回,如果此参数不为0,那么一定得等接收到数据了才会返回。
DWORD参数5, //服务器地址信息空间的大小。
DWORD参数6,//接入客户端地址的信息空间大小。
LPDWORD参数7,//可不管理
LPOVERLAPPED参数8 //重叠I/O操作所要用到的重叠结构);
第五步:这时主线程和I/O操作线程开始分工工作,主线程处理新接入的客户端工作,就是接入连接和安排到完成端口中去。使用accept()和accept Ex()函数接入新的客户端,使用Create Io Completion Port()安排到已有的完成端口中去,同时可以在对新接入的客户端进行读写操作。
主线程一直在等待新的客户端的接入,这里采用的是阻塞模式,I/O操作线程则一直在做网络I/O操作,I/O操作线程采用的是异步非阻塞模式,只是给操作系统发命令,让操作系统去完成数据的收发工作,I/O操作线程这时并不等待系统是否完成收发工作,而是只不停的发命令,就好像上面提到的快递员-经理模式一样,这里的I/O操作线程就是经理,而做具体工作的操作系统就是快递员。经理只发命令,不监督快递员的具体工作,只是关心工作执行的结果。
在操作系统完成收发数据后,把结果发送到完成端口上来,这样完成端口上就有了所有已有客户端的收发数据执行结果。
而I/O操作线程只要读出结果就可以了,以此循环。
简单地概括完成端口模型为:
完成端口由三个主体构成,第一主线程,第二I/O操作线程,第三操作系统。首先由主线程生成一个完成端口,初始化监听套接字和生成两倍CPU数量加2 个的I/O操作线程,之后主线程的主要工作是接入新的客户端。工作线程负责命令操作系统去接收和发送数据,操作系统负责具体的收发数据工作,并把执行结果发送到完成端口上。I/O操作线程不断的读取完成端口上的收发执行结果,以确定下一步的操作,以此循环。
最后提到关闭完成端口,由于I/O操作线程是采用阻塞模式一直不停地读取操作系统放在完成端口上的执行结果,所以没有新的收发数据工作执行结果,完成端口则进入死循环中不能退出,所有我们要采用发信息的方式来使完成端口关闭。
操作系统发送完成端口退出信息的API为Post QueuedCompletion Status,实际上就是发送一个特定的网络事件给I/O操作线程,让完成端口自行退出。
代码:
摘要:本文讨论在Windows环境下,如何开发出一种基于TCP协议的高并发服务器程序。本文谈论Windows下套接字I/O模型,同步和异步I/O,阻塞和非阻塞模式,主要谈论IOCP通讯模型的原理和开发过程。
关键词:高并发,服务器端程序开发,IOCP
参考文献
[1]王艳平,张越.Windows网络与通信程序设计[M].人民邮电出版社,2013.
[2]张越.Visual C++网络程序设计实例详解[M].人民邮电出版社,2013.
[3]Jeffrey Richter.Windows核心编程Windows via C/C++[M].清华大学出版社,2011.
Windows程序 篇11
【关键词】研讨式 程序设计 教学法 Windows
【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2015)07-0231-02
随着信息技术发展以及如智能手机类的便携式计算设备普及,计算机与人们生活已息息相关,涉及社会生活各个领域。因而,社会对计算机人才需求急剧增加,使得我国高等院校计算机专业迅速发展起来。然而,伴随素质教育的广泛开展以及信息时代的来临,我国高等院校计算机专业课程教学模式弊端日益凸显,因此推动计算机专业课程的教学改革势在必行。
一、计算机专业教学改革与教学方法的意义
教学改革主要是指学校对教学模式、教学方法和教学手段等方面进行革新与变换。高等院校计算机专业教学改革则是要通过改革,改掉不合时宜的教学方法、教学手段和教学模式,适应计算机专业工程实践强及更新换代快特征,从而有效地提高学生学习效率,培养掌握最新计算机技术的社会可用专业之才。
高等院校计算机专业教学改革的重要内容是教学方法改革。当前以知识讲授为主的“填鸭式”的教学方法,注重向学生讲授概念、理论、要领等内容,忽视如何促使学生主动参与教学,因而,学生主要功能是“听、记、背”,而不是主动去理解知识,束缚、压抑了学生学习能动性,教学效果不佳。
研讨式教学法实质是解放教师的教授力和学生的学习力,让学生脑筋开动起来,充分调动学生主动学习、参与教学的积极性,从而达到培养高素质人才的目标。
二、研讨式教学法在Windows程序设计课程的应用
基于对讲授“填鸭式”教学方法的改进,针对Windows程序设计课程研究如何实现从忽视学生自主学习能力、消极被动参与教学到主动参与教学、自主学习和创新思维培养为主的转变,关键内容主要包括如下几点:
1.设计适合学生知识结构的研讨内容
研讨式课堂教学过程中,教师要把课程知识巧妙地隐含在研讨内容中,使学生在研讨过程中达到理解Windows 程序设计课程基础知识、掌握基本技能目的。因而,研讨内容必须考虑到学生现有的知识结构和能力水平,容易让学生调动原有智力构建新知识体系。
2.依据程序设计理论分析研讨内容,激发学生研讨兴趣
Windows 程序设计课程知识具有共性与个性,教师应用对Windows操作系统API函数、数据结构、数据类型等共性背景知识进行必要讲解,精心设计一些程序设计目标,如动态效果,让学生对研讨内容产生浓厚兴趣。然后,教师要适当设置一些技术要点,启发和引导学生进入自主协调学习。
3.学生自主协作积极参与研讨
自主多人协作学习是以学生为中心,由学生自主探索研讨内容,独立分析查阅文献,讨论研讨内容,得出初步研讨结论。通过与多人的研究讨论、协商,进一步完成和深化对目标的建构。通过这种协作和沟通,学生可以看到问题的不同侧面和解决途径,开阔了学生思路,产生对知识新的认识与理解。
三、教学案例分析
本教学案例针对Windows程序设计课程中的“常用绘图函数及编程”,主要学习Windows API绘图函数。目标是要求编写在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,且每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,圆的半径在四分之一周期之内由正弦曲线幅值的0.2倍至0.6倍线性增长。
本教学案例适合学生现有知识结构,且动态效果能激发学生求知欲和对技术的挑战性。首先学生们通过课余自学正弦曲线点坐标生成方法、窗口程序如何处理WM_PAINT消息、Windows API绘图函数等,对绘图过程有了初步认识。在研讨阶段,先由两位同学通过自己的PPT 讲解如何由点和Polyline函数生成正弦曲线,如何通过100个点把正弦曲线分成四段,当i<=25处于第1个1/4周期,创建红色画笔和画刷;25
作者简介:
唐小勇(1973-),男,汉族,湖南洞口人,副教授,研究方向:教学法、并行分布式处理。
Windows程序 篇12
嵌入式系统在当前生产生活中得到越来越广泛的应用[1], 基于嵌入式的软硬件系统开发成为当今的热门, 同时, 其开发技术也得到了迅猛发展。在嵌入式系统开发中, 当目标设备移植了嵌入式操作系统后该系统还不能满足具体的应用需求。只有开发相应的应用程序并移植到目标设备中运行后, 此时系统才具有一定的实际应用价值。嵌入式应用程序与桌面应用程序的开发有着很多的不同之处。与PC有着相对标准的配置不同, 嵌入式硬件设备的厂商和产品较多, 每个厂商可能采用不同的设计方式, 因而在开发应用程序时要考虑到具体硬件平台的特性[2]。此外还要考虑宿主机和目标机的同步, 系统开发软件选择以及应用程序如何在目标机上运行等问题。
本文是基于嵌入式操作系统Windows CE, 采用Visual Studio 2005作为开发工具, 研究嵌入式程序开发环境的架构以及应用程序开发与运行过程。嵌入式应用程序一般开发流程如图1所示。
2、SDK的定制与安装
SDK (Software Development Kit) 即“软件开发工具包”。它是用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用程序的开发工具的集合, SDK是为开发Windows平台下的应用程序所使用的。它为程序设计语言提供应用程序接口API的一些文件, 也包括能与某种嵌入式系统通讯的复杂的硬件。同时SDK也包括示例代码、支持性的技术注解或者其他的支持文档。
2.1 定制SDK
嵌入式应用软件开发与嵌入式硬件和操作系统密切相关。使用Platform Builder定制、编译Windows CE生成镜像文件NK.bin后, 要在此基础上生成SDK, 为在该软硬件平台上进一步开发应用程序提供环境支持。主要操作过程包括:
(1) platform→SDK→New SDK, 新建SDK。
(2) platform→SDK→Configure SDK, 配置SDK, 如选择CPU类型等。
(3) platform→SDK→Build SDK, 编译SDK生成扩展名为msi的安装文件。
2.2 安装SDK
为了让Visual Studio 2005所开发的应用程序能够在嵌入式平台上运行, 要运行上面所生成的SDK安装文件[3], 并选择完全安装。完成后则在“工具”→“选项”→“设备工具”→“设备”下会有对应的SDK名称和CPU型号, 如图2所示。
在Visual Studio 2005开发环境下选择“文件”→“新建”→“新建项目”, 在对话框中选择“智能设备”选项卡下的“MFC智能设备应用程序”。接着下面的向导“选择要添加到当前项目中的Platform SDK”中“选定的SDK”添加安装的SDK名称, 如图3所示。其它设置与桌面应用程序开发基本相同。
3、设备同步
PC机 (宿主机) 与设备同步是嵌入式应用程序开发很重要的一个环节, 应用程序如果要在开发板 (目标机) 上调试或运行需要在它们之间建立同步[4]。其主要过程分为以下几个步骤:
1、安装同步软件Active Sync_4.1_setup.exe。
2、连接USB线, 通过USB线将PC机的USB接口与开发板的USB Device口连接。
3、安装USB同步驱动, 连接USB线后打开开发板
电源, PC机检测到USB接口的新设备, 通过向导安装驱动所需的wceusbsh.sys文件。
最后通过软件Microsoft Active Sync与开发板连接。由于通过USB接口同步, 在Windows CE系统中将网卡禁用, 将时间修改为宿主机当前时间。同步连接成功后如图4所示。同时在宿主机“我的电脑”中显示“移动设备”。
4、应用程序执行
在宿主机上编写好应用程序并建立宿主机与目标机的同步后, 即可通过USB Device口
向目标机发送指令代码并在目标机上运行程序。在Visual Studio 2005中的主要操作过程如下:
(1) 选择菜单“工具”→“连接到设备”, 建立连接, 为发送指令作准备。完成后提示“至TQ2440:AR-MV4I_Release连接成功”。
(2) 选择菜单“调试”→“启动调试”, 编译生成exe文件后发送到目标机执行程序。
其它几种运行方式:
(1) 在宿主机编译程序, 并将编译得到的文件用U盘拷贝到目标机开发板中运行。
(2) 在宿主机编译程序, 并将编译得到的文件通过宿主机“我的电脑”下虚拟的“移动设备”复制到目标机开发板中运行。
(3) 在宿主机编译程序, 将编译得到的文件拷贝到BSP包的“Files”目录下, 编译生成新的NK.bin镜像, 最后向目标开发板烧写该镜像时应用程序随着Windows CE操作系统的烧写一并完成。这种方法适合于成品的批量生产。
5、结语
掌握Windows CE应用程序开发关键技术有助于熟悉Windows应用程序开发的程序员快速转向Windows CE应用程序开发。本文以TQ2400硬件开发平台为基础, 研究了在Windows CE操作系统下利用VS2005开发应用程序的关键技术, 并总结了嵌入式应用程序向开发板移植的几种方法。对嵌入式应用软件开发具有实践意义。
摘要:本文以广州天嵌计算机科技有限公司TQ2440开发板、嵌入式操作系统Windows CE及相关软件为例, 研究了SDK定制安装, 系统同步, 程序执行等嵌入式应用程序开发的关键步骤。介绍并比较了嵌入式应用程序在开发板上运行的几种方法。
关键词:Windows CE,嵌入式系统,TQ2440,应用程序
参考文献
[1]陈长顺, 管希萌, 洪伟, 等.嵌入式技术研究进展[J].扬州教育学院学报:2009 (3) :50-54.
[2]章专, 沈冬, 郭晔.简析Windows CE与桌面Windows应用程序开发的区别[J].计算机工程:2002 (11) :261-261.
[3]贠汝文, 祁广云.基于VS2005的WinCE应用程序开发环境研究[J].大庆师范学院学报:2010 (3) :20-22.