A. 什么是驱动程序
01
驱动程序是什么?
驱动程序是计算机硬件与操作系统(Windows、Linux、MacOS、Unix等)软件沟通的桥梁,正是有了驱动驱动程序,操作系统才能够知道这个硬件可以做什么,有多高的传输速率,如何通信,功能是什么。驱动程序是软件和硬件通信的接口,所有的硬件要实现其功能都会有驱动程序的支持,离开了驱动程序,硬件就不能正常的工作。
02
驱动程序能做什么?
以Window 10操作系统为例,计算机安装好系统以后,会自动安装一些通用的公版驱动程序供你使用,这样你可以正常的看到屏幕的显示(集成显卡驱动),听到声音(集成声卡驱动),使用USB接口或PS/2接口的键盘鼠标(外设驱动),计算机连接互联网冲浪(集成有线或者无线网卡驱动),识别各种存储媒介(主板芯片组驱动)。
如果你的计算机安装有独立的显卡、网卡、声卡、蓝牙音响、打印机、磁盘阵列等设备,新安装的操作系统也许不能识别这些硬件,那么如何正确安装这些驱动呢?
不建议大家使用第三方的软件来安装驱动程序,第三方的驱动程序提供者不是大公无私的慈善家,你能保证第三方软件安装的驱动程序百分之百没有恶意插件以及后门程序,不会给你的系统安装无用的广告流氓软件。第三方驱动软件提供的驱动会比硬件官方提供的驱动程序更加及时?
03
正确安装驱动程序
大家动动手指,使用网络搜索你的计算机硬件官方网站,进入服务与支持页面,搜索或者选择硬件型号名称,此时硬件官网会为你列出最新的驱动程序供你下载。如果你使用品牌电脑或者笔记本,你也可以网页搜索进入官方网站下载相关的驱动程序。安装最新的驱动程序能使你的计算机硬件功能、性能得到最大的发挥,而最新的驱动程序在硬件官方网站会第一时间更新。
B. 如何编写驱动程序
代码:
#include<linux/mole.h>
#include<linux/kernel.h>
#include<asm/io.h>
#include<linux/miscdevice.h>
#include<linux/fs.h>
#include<asm/uaccess.h>
//流水灯代码
#define GPM4CON 0x110002e0
#define GPM4DAT 0x110002e4
static unsigned long*ledcon=NULL;
static unsigned long*leddat=NULL;
//自定义write文件操作(不自定义的话,内核有默认的一套文件操作函数)
static ssize_t test_write(struct file*filp,const char __user*buff,size_t count,loff_t*offset)
{
int value=0;
int ret=0;
ret=_from_user(&value,buff,4);
//底层驱动只定义基本操作动作,不定义功能
if(value==1)
{
*leddat|=0x0f;
*leddat&=0xfe;
}
if(value==2)
{
*leddat|=0x0f;
*leddat&=0xfd;
}
if(value==3)
{
*leddat|=0x0f;
*leddat&=0xfb;
}
if(value==4)
{
*leddat|=0x0f;
*leddat&=0xf7;
}
return 0;
}
//文件操作结构体初始化
static struct file_operations g_tfops={
.owner=THIS_MODULE,
.write=test_write,
};
//杂设备信息结构体初始化
static struct miscdevice g_tmisc={
.minor=MISC_DYNAMIC_MINOR,
.name="test_led",
.fops=&g_tfops,
};
//驱动入口函数杂设备初始化
static int __init test_misc_init(void)
{
//IO地址空间映射到内核的虚拟地址空间
ledcon=ioremap(GPM4CON,4);
leddat=ioremap(GPM4DAT,4);
//初始化led
*ledcon&=0xffff0000;
*ledcon|=0x00001111;
*leddat|=0x0f;
//杂设备注册函数
misc_register(&g_tmisc);
return 0;
}
//驱动出口函数
static void __exit test_misc_exit(void)
{
//释放地址映射
iounmap(ledcon);
iounmap(leddat);
}
//指定模块的出入口函数
mole_init(test_misc_init);
mole_exit(test_misc_exit);
MODULE_LICENSE("GPL");
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏
你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
当上述程序代码进入预处理时,如果_DEBUG_宏已被定义,那么预处理器会插入myProject_dbg.h的内容;如果还没定义,则插入myProject.h的内容。
C. 什么是驱动程序
第一个问题:驱动程序是管理硬件的软件。它将使用硬件的软件(如word)与管理硬件(如打印机)的编程区分开,例如打印机驱动程序,对外,即对调用它的应用软件(如word、excel等),它提供统一的调用接口,也就是说各种品牌的打印机这部分都是一样的,对内,即对打印机本身,则根据不同品牌的打印机编写不同的管理程序;所以不管什么打印机,只要安装了驱动程序都可以用相同的方式在word中使用。
第二个问题:每个配件在自己的相关芯片上固定的位置都会存有产品本身的型号等参数,CMOS程序只是从这些固定的位置读出配件的型号及其它参数,因此CMOS不需要驱动程序。
D. 驱动程序是什么
驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia 显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。
当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢?参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。
在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Moden甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。
在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢?因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附带有驱动程序;二是Windows系统自带有大量驱动程序;三是从Internet下载驱动程序。最后一种途径往往能够得到最新的驱动程序。
供Windows 9x使用的驱动程序包通常由一些.vxd(或.386)、.drv、.sys、.dll或.exe等文件组成,在安装过程中,大部分文件都会被拷贝到“Windows System”目录下。
Windows怎样知道安装的是什么设备,以及要拷贝哪些文件呢?答案在于.inf文件。.inf是从Windows 95时代开始引入的一种描述设备安装信息的文件,它用特定语法的文字来说明要安装的设备类型、生产厂商、型号、要拷贝的文件、拷贝到的目标路径,以及要添加到注册表中的信息。通过读取和解释这些文字,Windows便知道应该如何安装驱动程序。目前几乎所有硬件厂商提供的用于Windows 9x下的驱动程序都带有安装信息文件。事实上,.inf文件不仅可用于安装驱动程序,还能用来安装与硬件并没有什么关系的软件,例如Windows 98支持“Windows更新”功能,更新时下载的系统部件就是利用.inf文件来说明如何安装该部件的。
在安装驱动程序时,Windows一般要把.inf文件拷贝一份到“Win-dowsInf”或“WindowsInfOther”目录下,以备将来使用。Inf目录下除了有.inf文件外,还有两个特殊文件Drvdata.bin和Drvidx.bin,以及一些.pnf文件,它们都是Windows为了加快处理速度而自动生成的二进制文件。Drvdata.bin和Drvidx.bin记录了.inf文件描述的所有硬件设备,也许朋友们会有印象:当我们在安装某些设备时,经常会看到一个“创建驱动程序信息库”的窗口,此时Windows便正在生成这两个二进制文件。
Windows 9x专门提供有“添加新硬件向导”(以下简称硬件向导)来帮助使用者安装硬件驱动程序,使用者的工作就是在必要时告诉硬件向导在哪儿可以找到与硬件型号相匹配的.inf文件,剩下的绝大部分安装工作都将由硬件安装向导自己完成。
给硬件设备安装驱动程序对Windows 9x用户来说并不是一件陌生事,在安装或重装Windows时需要安装驱动程序,在购买了某些新硬件之后也需要安装驱动程序。如果驱动程序安装不正确,系统中某些硬件就可能无法正常使用。虽然Windows 9x支持即插即用,能够为用户减轻不少工作,但由于PC机的设备有非常多的品牌和型号,加上各种新产品不断问世,Windows不可能自动识别出所有设备,因此在安装很多设备时都需要人工干预
E. 什么是驱动程序为什么要用驱动程序
驱动程序,英文名为“Device Driver”,全称为“设备驱动程序”,它是一种特殊的程序。首先其作用是将硬件本身的功能告诉操作系统,接下来的主要功能就是完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。
所以简单的说驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。
F. 什么是驱动程序他有什么作用和功能
我们都知道,任何硬件要在Windows下工作,都必须安装其驱动程序。一般情况下,我们都是在安装完Windows后进行驱动程序的安装的。如果你的驱动盘在你的身边话,那只要按部就班,安装一下就可以了。还有,如果我们的机器里已经安装了硬件的驱动程序,但是我却发现我的驱动盘找不到了,如何才能够把驱动程序备份出来呢?所有与驱动程序有关的问题将这里一网打尽!
一、如果驱动丢失怎么办
驱动程序是硬件赖以正常工作的基础,如果驱动程序丢失,那我们的硬件根本就无法正常工作,无异于废铁一块!因此,驱动程序丢失是一件很痛苦的事情。不过,如果这样不幸的事情已经发生在你的身上,你又该怎么办呢?
1.上网查找法
现在是互联网信息时代,如果我们发现硬件驱动程序没有了,那第一个就应该想到互联网。同时,如果你的硬件是非常出名的,那么在国际互联网上一定有它们公司的网站,这时候我们就可以登录到相应的网站上去,然后选择下载其驱动程序,不过在下载之前最好要看一看到底是为哪一种操作系统设计的,可不要弄错了。有时候查找起来不那么方便,要有耐心。要先到它的老家(即本公司的网站)先找,如果实在无法找到,就可以到一些驱动程序网站去下载。如驱动程序-中国下载www.mydrivers.com,驱动程序-中国下载www.download.com.cn/show.phtml?action=list&class=1,06,65等。只要你的硬件不是特别的古董,一般都可以找到。如果实在不行,可以发信给网管,让他发电子邮件给网友们,请他们帮忙。当然,你也可以到众论坛上乱发帖子,让大家来帮助你,所谓“众人拾柴火焰高”嘛!
2、克隆法
如果我们的Windows现在还算健康,那在系统崩溃之前,我们有必要使用诸如Ghost、DriveImage等克隆软件为现在的系统做一个克隆镜像文件。以后机器崩溃了,只要用Ghost或DriveImage把克隆镜像文件恢复一下即可。由于各种硬件在原来的“老系统”下都能够正常工作,说明已经正确安装了驱动程序,当系统被还原后,它们自然能够正常工作。
小提示:
(1)在覆盖系统之前,请你把你宝贵的数据要先备份出来。
(2)这不是一种非常好的方法,但是最快的方法,更精彩的技巧在下面的文字中。
3、手工提取法
一般硬件的驱动文件由INF文件、VXD文件、SYS文件组成。而INF中则会指向驱动程序所要的VXD或SYS文件。因此,我们建议大家先搜索C:\Windows\INF文件夹,把相应硬件的INF文件找出来,打开INF文件就可以找到这些VXD和SYS文件,最后把INF文件、VXD文件和SYS文件拷贝出来就完成驱动程序的提取了。如笔者要查找Trident 9750显卡的驱动程序,这时只要在Windows查找对话框的包含文字中填入Trident,当这个INF文件找到后,双击它,记事本会打开它,从中我们就可以看到VXD、SYS等文件,而这些文件一般都分布在Windows文件夹下的System文件夹中,把它们拷贝出来,并连同找到的INF文件放到某一文件夹下,以后就可以通过安装正常的驱动程序的方法来安装这个设备了。
注意:当然,提取驱动程序难度较大,而且需要大家要有很多的耐心。其实,通过一个软件我们就能够实现抠取,具体的方法可以参见下文。
4、直接拷贝法
有一些硬件,如扫描仪、刻录光驱等,即使驱动程序丢失了也没有关系,因为我们只要把原来系统中的应用程序拷贝过来即可。如笔者一VAST 36 Bit扫描仪,由于驱动程序丢失,笔者将C:\PWIN98\TWAIN_32文件夹拷贝到新系统的相应文件夹下,连上扫描仪,执行其中的TBridge.exe文件,一切正常!而一般IDE接口的刻录光驱都是不需要驱动程序的,只要你的刻录软件支持即可,而现在刻录软件非常多,版本也在不断地改进更新,我相信必有一款适合你的刻录机。
二、如何把系统中的驱动程序抠出来
丢失驱动程序是痛苦的,那我们有没有办法把系统中已有的驱动程序备份出来呢?答案是肯定的,我们从dl.163.com/downloadthis.php?id=8440&temp=/windrvexpert150.zip处请来国人编写的免费软件“驱动程序备份专家WinDriver Expert”,这个操作将会变得易如反掌!
“驱动程序备份专家WinDriver Expert”是一款免费且绿色的软件,把下载回来后的windrvexpert150.zip包中的所有文件解压到一临时文件夹下,然后双击其中的WinDrvExpert.exe文件即可启动。单击“快速收集”按钮后,该软件会自动把我们当前机器里的驱动程序找到(如图1),单击“备份全部”按钮后,程序会向你询问备份文件夹,输入后,单击“OK”按钮即可把这些驱动程序保存到相应的文件夹下了。
图1
小提示:
(1)我们知道,Windows本身含有很多通用硬件的驱动程序,这些硬件在安装Windows时会被Windows自动识别,而无需使用第三方提供的驱动程序。但有些硬件无法被Windows识别,用户必须提供第三方的驱动程序,这些驱动程序我们称为外部驱动程序。
(2)在驱动程序备份专家的右边有很多按钮,单击“快速收集”按钮后,驱动程序备份专家会快速把我们机器上外部驱动程序找到。再次单击“备份驱动”按钮,我们就可以快速备份外部驱动程序;而如果我们按下“收集全部”按钮,该程序会把我们机器上所有设备驱动程序都找到,再单击“备份驱动”按钮后,系统会把机器上所有设备驱动程序都找到,并允许我们把它们都做备份。因为当前Windows能够认识的硬件,换了机器或换了Windows版本后不一定能够认识。建立大家做两种备份,并把这些驱动程序备份到不同的文件夹下以防不测。
(3)如果我们要恢复驱动程序,只要启动“驱动程序备份专家”,选择“安装驱动”→“恢复驱动程序”命令,再选择我们备份文件夹下的INF文件即可恢复。大家要注意的是,驱动程序备份专家会把驱动程序放在你备份文件夹下(如C:\My Drivers)以相应设备名称命名的子文件夹中。如笔者要恢复机器上的“RAS 同步适配器”设备,只要选择“安装驱动”→“恢复驱动程序”命令,再选择“C:\My Drivers\RAS 同步适配器”文件夹下的INF文件,驱动程序备份专家就会把当前驱动程序恢复到系统中,使相关它能够正常工作。
(4)该软件是免费、绿色软件,而且作者已经还在不断完善之中,大家可以放心使用它。
三、使用驱动程序应该注意的几个问题
1.可以使用通用的驱动程序
一般来说,驱动程序和硬件是一一配套使用的,但有时如果找不到某一硬件的驱动程序时,可以找同一品牌的驱动程序来试一试。同时,也可以试着选择Windows中通用的驱动程序。同时,如果我们找不到为当前Windows设计的驱动程序,也可以试着安装为低版本Windows设计的驱动程序,有时说不定就能够成功。
小提示:很多程序在系统不安装任何打印机驱动程序的情况下,不能够支持打印预览功能。其实,这时我们只要随便安装一个Windows中内置的打印驱动程序就可以让它支持打印预览。
2.有的驱动程序是可执行文件
一般来说,安装驱动程序都是先把硬件插到机器上,然后让Windows识别出来,再通过“添加硬件向导”来找到驱动程序的INF文件。但有的硬件并不是这样的,在Windows识别后,我们必须关闭“添加硬件向导”,而要打开驱动盘上的驱动安装程序,安装后才可以使用。有很多读者在运行“添加硬件向导”时怎么也找不到驱动程序时,不妨试着关闭“添加硬件向导”,然后运行驱动程序,一般问题会得到解决。如笔者购买的USB闪存,就是这样的。
3.有的要重新启动才能够生效
一般来说,即插即用的设备被Windows识别,并安装驱动程序后,Windows即可正常使用该设备。但有时并不是这样的,有的设备需要重新启动后才能够被识别。如笔者机器上的一台USB接口的刻录机,在安装驱动程序后,再重新启动计算机,才会被Nero-Burning Rom正常识别。
4.拔设备时最好通过正确的操作步骤
尽管按照微软承诺即插即用设备都是直接热插拔的,但是我们还是建议大家通过正确的操作步骤来插拔硬件设备。如我们在拔USB设备时,最好先单击任务栏上即插即用图标,并在打开的窗口中选中欲拔下的设备,单击“停止”按钮,直至系统出现“”消息后,再把它从USB口上拔下来,这样可以保证驱动程序不被破坏。有很多人由于强行“热拔”设备,使驱动程序损坏,后来Windows便不再识别。
5.常把驱动放在身边,必要时把它们和Windows放在一起
把驱动程序放在身边,必要时要把它们和Windows安装盘放在一起,这样在系统崩溃或重新安装Windows时就会用它们。如果有必要,大家可以把它们和Windows的安装程序烧到到一张光盘上。这样使用起来会方便许多。
6.解决无效驱动有妙招
一般情况下,安装驱动程序都是很顺利的,但如果有时你可能会发现有些驱动程序无论如何都安装不上。这时,大家可以右击桌面上“我的电脑”图标,选择“属性”,在打开的“系统属性”窗口中单击“硬件”标签卡,并单击“设备管理器”,查看带黄色惊叹号的项是不是你要安装的设备。找到你要安装的设备项,双击或点击“属性”按钮,然后选择“驱动程序”卡片,单击“升级驱动程序”,选定“搜索比当前设备使用的驱动程序更好的驱动程序”项,接着一直按“下一步”了,通过它来安装驱动,一般可以安装上。最后重新启动计算机,即可让硬件生效。
6.使用更新驱动
无可否认,一般高版本的驱动程序都提供了比旧版本驱动程序更好的性能,因此,我们平时可以到厂商网站上查找当前机器设备,并下载安装它的最新驱动程序。这样,可以让我们机器上的设备时刻保持最新性能。
7.有的机器上需要特定驱动
有的程序可能需要特定的驱动,如有的CD抓音轨软件可能会要求我们安装ASPI驱动,这些在程序里会说明如何去装,大家只要照着操作就可以了。另外,像豪杰、交大铭泰等播放器还可能需要立体眼镜的驱动程序,大家只要使用供应商提供的产品就可以了。
9.不要忽视DOS驱动程序
尽管现在是Windows的天下,但是我们还是有必要保留某些设备的DOS驱动程序。因为,在有的机器上(尤其是不太发达的地区)仍然使用着DOS驱动程序。而且,我们更多的系统维护工作是在DOS平台下完成的,有时会用到设备的DOS驱动程序。
当然,促使某一设备所有平台的驱动程序是一个很好的习惯,而且现在刻录机和CD-R都很便宜。数据还是要做到有备无患。另外,如果我们使用的是Windows 2000/XP,那笔者建议大家用Windows 2000/XP光盘启动系统,并通过控制台来修复,Windows 2000/XP光盘在引导机器时会加载很多的驱动程序,可以保证很多设备即使在控制台下也能够正常使用。
10.尽量用最新的操作系统
新的操作系统兼容性肯定要好出许多,很多内置的驱动都是做过优化的,而且稳定性相当好,所以大家尽可能使用最新的操作系统。
11.必要时可以刷新BIOS
BIOS在硬件的最低端,很多硬件都依附在其上才能够发挥出它们的潜能。经常从网上下载与我们主板配套的BIOS文件,并刷新是一个更好地发挥硬件和驱动程序功能的好主意,但是刷新BIOS是一个很专业的过程,必要时要请高手来操作。
G. 什么是网络设备驱动程序,如何正确安装.
网络设备驱动程序即添加到操作系统中的一小块代码,其中包含有关网络硬件设备的信息。有了此信息,计算机就可以与网络设备进行通信。网络设备驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有网络设备驱动程序,计算机中的网络设备就无法工作。驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。网络设备驱动程序扮演沟通的角色,把网络设备的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。
安装时你需要把网络设备正确的安装在电脑上,开机后电脑会自动的检测新的设备,检测完毕后,你需要插入网络设备自带的安装光盘,然后按照计算机提示的步骤进行安装就好了