DriverSetupUtility是系统驱动程序安装应用程序。
系统软件和应用软件
系统软件就是包各种硬件驱动程序,它们的任务就是用来驱动各种硬件,使硬件完成正常的功能。比如网卡发送数据,声卡播放声音等。驱动程序提供给应用程序接口,供应用程序调用接口来使用硬件。应用软件接受用户的请求,再通过驱动程序来驱动相关的硬件来实现相关的功能。
没有引入 *** 作系统的问题
一个计算机上会有很多硬件,所以会有很多的硬件驱动,每个硬件对应的驱动也会不一样,一个应用程序会和很多驱动程序对接,大大加重了应用程序员的编程负担。
同时,一个系统上面会同时有几个应用程序运行,比如qq和音乐,这两个应用都会使用显示屏来显示,都要使用内存来运行程序,但是硬件资源总是有限的。所以需要使用某种机制来使用和分配资源。设计的时候,这种机制要么放在应用程序中来实现,要么放在驱动程序中来实现。但是无论哪一种,都会增减程序员的负担。
引入了 *** 作系统之后
应用程序员只想关心应用程序的开发,而不想花费时间在资源管理和分配上,也不想花时间在区分不同的驱动程序接口上。驱动程序开发人员只想关心开发驱动程序去驱动硬件,不想花费时间在资源管理上。那么就需要引进 *** 作系统了。
*** 作系统的作用是管理各类资源(软件和硬件),并将硬件驱动程序的接口抽象,形成一套简单一直的接口给上层的应用程序应用。因此,应用程序只需要知道这套 *** 作系统提供的编程接口(API)就行了。前面提到系统软件就是各种驱动程序。而我们这里认为系统软件是 *** 作系统。
实际上,驱动程序是嵌入到 *** 作系统里面去的,所以 *** 作系统是包括驱动程序的。这就大大加大了驱动程序开发人员的开发难度,因为他们不仅需要熟悉手头硬件的工作原理,更重要的是他们要确保他们写的驱动能够嵌入到 *** 作系统里面去。就这要求他们必须熟悉 *** 作系统提供的用来嵌入驱动程序的接口。
uint16 :无符号16bit整数,
uint32:无符号32bit整数,
unit8:无符号8bit整数,
int8:有符号8bit整数。
其作用是程序更加简洁,增强可移植性和可维护性,尤其是在16位机器,32位,或者是64位机器上相互之间移植的时候只需要修改这些宏定义就可以满足要求了,而不需要去修改整个工程里边的每一个变量定义。
在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。
那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。
uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。比如C中没有bool,于是在一个软件中,一些程序员使用int,一些程序员使用short,会比较混乱,最好就是用一个typedef来定义,如:
typedef char bool。
一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。为了用户的方便,C99标准的C语言硬件为我们定义了这些类型,我们放心使用就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)