正文内容 评论(0

一步一步教你自己打造移动显卡驱动程序
2009-08-06 11:16:08  出处:  作者:网络 编辑:王茂     评论(0)点击可以复制本篇文章的标题和链接

在打造移动显卡驱动程序之前我们需要搞明白winxp安装驱动程序的原理。

先给大家介绍一下INF文件。细心的朋友能发现,在通过设备管理器安装驱动程序的时候,都需要选择相应的INF文件才能继续安装。通过INF文件,XP才能了解到如何在众多的dll、sys文件中找到需要的文件进行安装,而且能够了解到该如何安装这些文件。也就是说,INF文件是整个驱动程序的核心,是驱动程序的“安装脚本”以及“身份证”。明白了这一点我们就知道了该如何下手了。非常幸运的是,INF文件里所包含的所有关于驱动安装的信息都是明文存储的,而且严格的依照着微软所制定的一套规则,我们可以通过简单的修改INF文件,打造自己的移动显卡驱动程序。

首先,你需要准备一套笔记本配备的原版驱动,我们需要从这里提取有关笔记本相应硬件的ID和名称,其次,你当然需要准备你想安装的最新驱动程序,然后,你还需要有一套好用的解压程序,比如WinRAR。

我们以华硕A8Jm笔记本的显卡驱动为例。首先,我们将原配驱动解压到某一个目录,找到解压出来的NVAM.INF文件,双击用记事本打开它。找到[NVIDIA.Mfg]段,在这一段,我们可以看到以下内容:

%NVIDIA_NV41.DEV_00C8.1% = nv4_A4S, PCI\VEN_10DE&DEV_00C8&SUBSYS_19011043
%NVIDIA_NV43.DEV_0144.1% = nv4_M7V, PCI\VEN_10DE&DEV_0144&SUBSYS_18891043
%NVIDIA_NV43.DEV_0148.1% = nv4_A4S, PCI\VEN_10DE&DEV_0148&SUBSYS_185A1043
%NVIDIA_NV44.DEV_0167.1% = nv4_M7V_K, PCI\VEN_10DE&DEV_0167&SUBSYS_188A1043
%NVIDIA_NV44.DEV_0168.1% = nv4_M7V, PCI\VEN_10DE&DEV_0168&SUBSYS_19281043
%NVIDIA_G72.DEV_01D7.1% = nv4_A6VM, PCI\VEN_10DE&DEV_01D7&SUBSYS_12121043
%NVIDIA_G72.DEV_01D7.2% = nv4_A6KM, PCI\VEN_10DE&DEV_01D7&SUBSYS_11011043
%NVIDIA_G72.DEV_01D7.3% = nv4_A6TC, PCI\VEN_10DE&DEV_01D7&SUBSYS_13A21043
%NVIDIA_G72.DEV_01D8.1% = nv4_A6VM2, PCI\VEN_10DE&DEV_01D8&SUBSYS_12111043
%NVIDIA_G72.DEV_01D8.2% = nv4_A6VM2, PCI\VEN_10DE&DEV_01D8&SUBSYS_12141043
%NVIDIA_G73M.DEV_0398.1% = nv4_A6JC, PCI\VEN_10DE&DEV_0398&SUBSYS_12321043
%NVIDIA_G73M.DEV_0398.2% = nv4_A6T, PCI\VEN_10DE&DEV_0398&SUBSYS_13221043


其中,被%%号圈起来的部分,是在INF文件里为设备起的一个名称,最后变长长的一串数字字母组合是XP通过硬件抽象层取得的安装在本本里的设备的ID,每一行代表此驱动程序包所支持的一种设备,所以我们可以看出此驱动支持12种显卡。

接着我们需要注意一下中间那些 "nv4_****"字段,学过编程或者bat文件的朋友应该都知道跳转吧?这里,就是的这个字段代表着一段子程序,我们以
%NVIDIA_G73M.DEV_0398.2% = nv4_A6T, PCI\VEN_10DE&DEV_0398&SUBSYS_13221043为例为大家解释一下。

这一句的含义就是,设备ID为 PCI\VEN_10DE&DEV_0398&SUBSYS_13221043的设备,在本次安装中起代号为NVIDIA_G73M.DEV_0398.2,安装方法依照本INF文件中的nv4_A6T段进行安装。

现在我们需要做的就是把这上边整个12行的内容全部复制下来,先放到一个文本文件里备用,接着,我们继续向下翻看原配的INF文件,在最后的[Strings]段中,我们可以看到以下内容

NVIDIA_NV41.DEV_00C8.1 = "NVIDIA GeForce Go 6800"
NVIDIA_NV43.DEV_0144.1 = "NVIDIA GeForce Go 6600"
NVIDIA_NV43.DEV_0148.1 = "NVIDIA GeForce Go 6600 "
NVIDIA_NV44.DEV_0167.1 = "NVIDIA GeForce Go 6200"
NVIDIA_NV44.DEV_0168.1 = "NVIDIA GeForce Go 6400"
NVIDIA_G72.DEV_01D7.1 = "NVIDIA GeForce Go 7300"
NVIDIA_G72.DEV_01D7.2 = "NVIDIA GeForce Go 7300 "
NVIDIA_G72.DEV_01D7.3 = "NVIDIA GeForce Go 7300 "
NVIDIA_G72.DEV_01D8.1 = "NVIDIA GeForce Go 7400"
NVIDIA_G72.DEV_01D8.2 = "NVIDIA GeForce Go 7400 "
NVIDIA_G73M.DEV_0398.1 = "NVIDIA GeForce Go 7600"
NVIDIA_G73M.DEV_0398.2 = "NVIDIA GeForce Go 7600 "

这里的前边的部分是不是很眼熟?对了,这个就是把每一个设备的代号翻译成了我们能够分辨得产品名称。我们把这一段也复制下来放到文本文件中。 接下来的工作就比较简单了,我们解压下在下来的公版驱动程序,打开其中的nv_disp.inf文件,找到其中的[NVIDIA.Mfg]段,将刚才复制下来的前12行内容插入此段,此时我们还应该注意下一下,将插入的12行内容等号后面的nv4_****统统改成nv4,这是为了让驱动程序安装能够找到正确的安装“子程序”。

接下来,我们找到[Strings]段,把后来复制下来的12行内容插入; Localizable Strings NVIDIA = "NVIDIA"的下边,然后保存inf文件。 就这样,你自己的移动版驱动程序已经打造成功了。运行setup.exe或者从设备管理器里安装都没问题,其中也许会提示你驱动程序委通过WHQL验证,不用管他,这是因为我们修改了INF文件内容造成的。

ATI显卡驱动的打造相当的类似,解压原配驱动程序之后,我们要到Driver\2KXP_INF子目录中找到cx_*****.inf文件,复制[ATI.Mfg.NTx86]段下的

"ATI MOBILITY FireGL V5200" = ati2mtag_M56GL, PCI\VEN_1002&DEV_71C4&SUBSYS_13121043
"ATI Mobility Radeon X1400" = ati2mtag_M54, PCI\VEN_1002&DEV_7145&SUBSYS_13331043
"ATI Mobility Radeon X1600" = ati2mtag_M56, PCI\VEN_1002&DEV_71C5&SUBSYS_10B21043


然后解压公版驱动(也可以双击运行,ati的驱动程序会自解压),然后找到\Driver\2KXP_INF子目录下的cx_*****.inf文件,将上边复制下来的内容插入[ATI.Mfg.NTx86]段下,之后更改复制内容等号后的ati2mtag_M**

X1600将ati2mtag_M56改为ati2mtag_RV530,X1300将ati2mtag_M**改为ati2mtag_RV515,X700将等号后的内容改为ati2mtag_RV410,X600改为ati2mtag_RV380,X300改为ati2mtag_RV370。

因为ATI的设备名称是直接通过程序读取得,所以不需要修改Strings段,保存安装即可。

责任编辑:

  • 支持打赏
  • 支持0

  • 反对

  • 打赏

文章价值打分

当前文章打分0 分,共有0人打分
  • 分享好友:
  • |
本文收录在
#快讯

  • 热门文章
  • 换一波

  • 好物推荐
  • 换一波

  • 关注我们

  • 微博

    微博:快科技官方

    快科技官方微博
  • 今日头条

    今日头条:快科技

    带来硬件软件、手机数码最快资讯!
  • 抖音

    抖音:kkjcn

    科技快讯、手机开箱、产品体验、应用推荐...