盖世豪侠 下载封系控制怎么样?。。。.

系统封装 系统封装工具 系统封装教程 如何封装系统 xp系统封装 win7系统封装 怎么..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
自动封装系统中运动控制的设计与实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口  先自我介绍,我之前做过民企的液压产品销售和欧美外企的传感器销售,目前在广州,现基本可确定拿到以下的两个Offer  1.特瑞堡密封系统  瑞典企业,销售工程师,底薪+奖金(几个月的底薪),感觉公司的未来待遇一般---面试时主管对我的忠诚度表示怀疑,也有可能是我跳槽的原因多吧(05年毕业到现在工作过3家公司),而且面试观察到办公室很大,办公台很多,但广州分公司只有6人(销售经理,3个销售,2个内勤)。  2.埃莫运动控制技术  以色列公司,销售工程师,底薪+奖金,底薪比特瑞堡高1000,奖金相对也高些,主要做运动控制器和伺服驱动器,大概了解到的竞争对手有PMAC, TRIO, GALIL, ACS等,西门子、博世力士乐这些应该也是吧。据了解,全国目前只有3个销售(包括销售经理)。  SWOT分析,第一次做这样的分析,见笑了…  1.特瑞堡密封系统  优势:产品应该相对容易做, 行业和液压的有一些延续;  劣势:公司发展空间可能不大,OEM可开发的目标客户并不多,行业和传感器的有较大不同;  机会:都是和知名企业合作,公司可能会给一些大客户跟踪,对于以后个人的发展比较有利  威胁:人员流动性比较大,有可能是待遇问题,感觉公司不太能留住人。  2.埃莫运动控制技术  优势:公司发展空间可能比较大,自己对做伺服更感兴趣,自己有些编程经验,可能会用得上,更能体现自身技术销售优势;行业、客户和之前传感器的有一定的延续,都属于工控;  劣势:产品的竞争力不了解,了解到有很多竞争对手  机会:行业应用会广一些,做得好收入会不错,自己也想做伺服;   威胁:公司进入中国应该也有8年左右,目前只有3个销售,感觉发展趋势不明朗;另外,试用期工资比转正后工资低30%,令我很困惑,不知道公司是怎么考虑。  请各位了解这两家公司和行业的朋友都说说自己的看法。谢谢!
楼主发言:4次 发图:0张
  貌似都是很不错的公司,同样在纠结前途的我表示羡慕。如果感觉差不多,就选那个领导好一点的,有好的领导你可以事半功倍。我的建议仅供参考
  我也想了解伺服行业
  谢谢果粒程兄的建议!  
  谢谢果粒程兄的建议!  
  没人回复,哈哈...  
  帮楼主顶贴!
  回复第3楼(作者:@ew9527 于
16:39)  谢谢果粒程兄的建议!  [来自UC浏览器]  ==========  呵呵,同样在纠结找一个理想的工作,不过我就没有你这么幸运了。加油吧兄弟  
  @ew9527   特瑞堡的底薪是多少?
请遵守言论规则,不得违反国家法律法规同时转发到微博查看: 3155|回复: 4
《封装日志》-3.磁盘控制器驱动---自由天空
第三章、磁盘控制器驱动
  3.1 磁盘控制器相关知识
  (1)磁盘控制器
  磁盘控制器,顾名思义,是磁盘的控制设备。这里的磁盘是个广义的概念,泛指目前的机械硬盘、固态硬盘等各种存储体。“磁盘控制器”一词来源于微软官方文档中的“大容量磁盘控制器”,由于当今普通用户的磁盘容量都已达到TB级,故去掉“大容量”三个字以避免混淆。
  大多数人过于关注磁盘的类型,往往忽略了最重要的磁盘控制器。随着磁盘技术的发展,各种类型的磁盘琳琅满目,如IDE、SATA、SCSI、SAS硬盘等等,加上新生代固态硬盘,可谓是种类繁多。但Windows操作系统真的关心磁盘类型吗?No,Windows操作系统只关心磁盘控制器的类型和磁盘控制器的工作模式!
  (2)磁盘控制器驱动
  驱动程序是硬件与系统之间的桥梁,系统通过驱动程序控制和管理硬件,并通过驱动程序发挥出硬件的最佳能力。而磁盘控制器驱动程序是系统与磁盘控制器之间的桥梁,系统通过磁盘控制器驱动管理磁盘控制器,又通过磁盘控制器管理磁盘。
  这也就是为什么系统不关心磁盘类型的原因,系统只要能够通过驱动操作磁盘控制器,那么对硬盘的管理完全由磁盘控制器承担。举例子说,就像我去图书馆借书,我只要告诉图书管理员我需要什么书,图书管理员就会帮我找到这本书,而我无需了解这本书存放在哪个书架、归在哪个分类里。这里的“我”相当于系统,“图书馆管理员”相当于磁盘控制器,而“图书馆”就是磁盘。虽然这不是个特别恰当的例子,但是基本与系统、磁盘控制器、磁盘之间的关系吻合。
  这里,我们必须还要明确,磁盘控制器驱动是针对磁盘控制器的,而不是针对磁盘的。尽管多年来我一直在努力纠正这个概念,但很多技术员仍将“SATA硬盘驱动”、“串口驱动”等名词挂在嘴上,误导了很多新手。那为什么有时系统会无法在SATA硬盘的计算机上部署呢?这是因为系统映像中没有包含此目标计算机的磁盘控制器驱动,没有匹配的驱动则系统就无法管理磁盘控制器,从而无法执行对磁盘的管理,所以造成的系统部署失败。
  看到这里,请以后不要将“SATA硬盘驱动”挂在嘴边了,这会误导更多的新手。
  (3)“两种”磁盘控制器驱动
  磁盘控制器驱动分为“两种”,一种是使系统可以正确识别磁盘控制器以部署系统的驱动,一种是让系统可以更好的控制与管理磁盘控制器的驱动。其实这“两种”驱动是同一类驱动,只不过是不同的工作时机、不同的工作模式罢了。通常前者被俗称为“SRS驱动”,而后者被称为“PNP(即插即用)驱动”。
  前者属于系统关键设备驱动,让系统能够启动,以不至于宕机蓝屏;后者就像你的显卡与声卡驱动一样,为的是能够让硬件更好的发挥其性能。
  (4)磁盘控制器工作模式
  磁盘控制器工作模式一般有:IDE(PATA)、SATA、AHCI、RAID等,而磁盘控制器工作模式与磁盘类型是基本无关的。这也就是说,即使你是SATA的硬盘,而如果磁盘控制器开启的是IDE工作模式,那么系统也仅仅把你的SATA硬盘当做一个IDE硬盘来对待。
  同一个磁盘控制器可能会存在多种工作模式,例如同时拥有PATA、AHCI和RAID工作模式,一般可以在CMOS中进行设置。而每种工作模式下磁盘控制器的硬件ID又是不同的,也就是说虽然磁盘控制器还是这个磁盘控制器,但由于它工作模式的变更,它的硬件ID也随之变更,那么就需要为它重新安装磁盘控制器驱动。
  这样也从另外一个角度解释了为什么系统安装完毕后,如果更改磁盘控制器工作模式,会造成蓝屏的问题。例如安装系统时,磁盘控制器工作模式为SATA,系统为磁盘控制器安装的是SATA模式的驱动,而一旦磁盘控制器工作模式改为了AHCI,由于系统里针对磁盘控制器的驱动仍是SATA模式的,系统无法正常操作磁盘控制器,所以就出现蓝屏宕机的情况。
  (5)“SRS驱动”
  SRS驱动是对“封装专用磁盘控制器驱动”的简称,SRS驱动最早是指磁盘控制器SATA、RAID和SCSI工作模式的驱动,时过境迁,新的AHCI模式已出,SCSI模式已被SAS模式取代,但由于SRS驱动是我们长期以来的简称,很多情况下仍旧在使用,所以我们保留这个名词并继续使用。
  SRS驱动泛指用于拓展系统部署范围的磁盘控制器驱动,而由于这个驱动经常是在系统封装时导入的,所以也称为“封装专用磁盘控制器驱动”。所以如果您在本书中看到关于“SRS驱动”的说法,只要知道它代表的是什么就可以了,它本身的含义已经被大大的扩充了。
  (6)IDE硬盘也需要磁盘控制器驱动?
  这个问题本身就带有谬误,前文已述,磁盘控制器驱动针对的是磁盘控制器,而不是硬盘,所以无论硬盘如何,都是需要磁盘控制器驱动的。那为什么我们通常不太考虑磁盘控制器IDE工作模式时的驱动呢?这是因为Windows操作系统会自带大多数磁盘控制器IDE工作模式的驱动。
  另外一个层面上讲,如果把IDE硬盘接入到一个支持其他工作模式的磁盘控制器上,如RAID工作模式,由于IDE工作模式的磁盘控制器驱动无法驱动此RAID工作模式,从而系统无法识别此IDE硬盘。
  (7)系统自带磁盘控制器驱动
  Windows XP和Windows 7都自带了一定量的磁盘控制器驱动,都包括了其发行时常见的磁盘控制器的驱动。这些驱动中包括了最常见磁盘控制器IDE模式、SATA模式、AHCI模式的驱动,还包括部分RAID模式、SCSI模式和SAS模式的驱动。这也就是为什么一个系统映像不额外添加SRS驱动也能具有一定的系统部署范围的原因。
  但随着时间的推移,拿WinXP为例,2001年时其自带的磁盘驱动也几乎是无所不能的,但在2010年的今天,WinXP如果不额外集成SRS驱动几乎是寸步难行的。Win7也一样,虽然现在可以应付大多数磁盘控制器,但随着时间的推移也会和WinXP一样。
  所以,为系统增补额外的SRS驱动是势在必行的。
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
3.2 磁盘控制器驱动的工作流程
  这里的磁盘控制器驱动指的是SRS驱动,即用于拓展系统部署范围的磁盘控制器驱动。SRS驱动属于系统关键设备驱动,随系统启动而启动,属于不可或缺的驱动,如果没有这个驱动系统将无法控制磁盘控制器,从而无法操作磁盘,结果一般会造成系统宕机。
  那么SRS驱动的工作流程是怎么样的?一般而言分三步:
  第一步,系统启动时检测系统关键设备列表。
  关键设备数据库位于注册表的:
  HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase
  打开这个键,其下是以系统关键设备的HWID命名的各子键。每个子键一般包括ClassGUID和Service两个项,ClassGUID的值为此设备所属类,Service的值为此设备所依赖的系统服务。系统启动时,根据当前计算机磁盘控制器对应工作模式的HWID,去CriticalDeviceDatabase键下寻找是否有以其HWID命名的子键,如果有,则加载其Service键值规定的服务;如果没有,则蓝屏宕机。
  第二步,使用磁盘控制器驱动服务。
  系统服务列表位于注册表的:
  HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\services
  打开这个键,其下包括了当前系统所有的系统服务。(1)中所要加载的服务也位于此键下。如果(1)中所需的服务存在于此,则使用此服务;而如果不存在,则蓝屏宕机。
  我们打开一个磁盘控制器驱动服务,这个服务包含了很多键值,其中需要着重关注的是ImagePath和Start两个键值,ImagePath规定了此服务所需的磁盘控制器驱动文件所在位置,而Start规定了此服务的启动方式。
  第三步,加载磁盘控制器驱动文件。
  磁盘控制器驱动文件一般位于C:\\Windows\\System32\\drivers(假设C盘是系统盘),且一般以.sys为后缀名。
  在(2)中所使用的服务需要ImagePath所规定的磁盘控制器驱动文件才能运行,如果此驱动文件存在,则加载使用;而如果此驱动文件不存在,则蓝屏宕机。
  我们根据上面的描述,总结出如下一个流程:
  系统关键设备--&设备驱动服务--&设备驱动文件
  (1)当前磁盘控制器对应工作模式的HWID如果属于系统关键设备,则启用其对应的服务;而如果不属于系统关键设备,则蓝屏宕机。
  (2)被要求使用的驱动服务如果存在,则尝试加载驱动文件启动;如果不存在,则蓝屏宕机。
  (3)被要求加载的驱动文件如果存在,则加载并使用;如果不存在则蓝屏宕机。
这是一条紧密的链条,任何一个环节出现问题,都会造成蓝屏宕机的后果。所以在处理SRS驱动时一定要小心谨慎。
3.3 阅读磁盘控制器驱动的INF
  驱动程序一般包括.sys和.inf文件,大部分包括数字签名.cat文件,有些还包括.dll、.exe等驱动应用程序。就磁盘控制器文件来说,一般需要.sys和.inf文件即可使驱动正常运作。这里的.sys文件就是驱动文件本身,也是我们在3.2节中提到的最终需要加载的驱动,而.inf文件的作用则是告之系统如何使用这个驱动程序。
  本节我们将一起阅读一下磁盘控制器驱动的.inf文件,加深对磁盘控制器驱动的理解,同时为我们下一步的制作SRS驱动作准备。建议新手在练手时选用Intel的磁盘控制器驱动,Intel的驱动写的比较工整条理,适合我们做为分析和练习的对象。
  本节我们将选用Intel Rapid Storage Technology Driver 9.5.0.1037版中的AHCI部分(iaAHCI.inf)作为实例进行讲解。
  虽然驱动inf包含了很多的内容,但是本节只着重讲解与SRS驱动相关的驱动inf内容,学习知识讲究把握重点,尽可能减少不相关知识的干扰。至于其他部分的内容,建议您多问问百度和谷歌,并自己体会一下。
  另外,由于inf的阅读方法未查阅到官方文档说明,除非是开发驱动的高级技术人员,一般人很难能完全讲清一个inf中每个段的作用。下文我要讲的内容是我个人根据长时间的实践与揣摩而总结出来的,其中难免会有个别错误,还请读者见谅。但我绝对能保证大方向的正确性,还请读者放心。
  (1)version段
  Intel Rapid Storage Technology Driver 9.5.0.1037的version段如下:   [version]  CatalogFile=iaAHCI.cat  Signature=&$WINDOWS NT$&  Class=hdc  ClassGuid ={4D36E96A-E325-11CE-BFC1-0}  Provider=%INTEL%  DriverVer=10/02/.0.1037复制代码version段的作用一般是介绍本驱动的相关信息:
  CatalogFile:驱动认证文件的文件名。
  Signature:签名。
  Class:此驱动(或使用本驱动的硬件)所属分类,一般磁盘控制器驱动都属于hdc类或SCSIAdapter类。
  ClassGuid:所属类的Guid,可以理解为Class所对应的数字编号。
  Provider:驱动提供者。在inf文件中,凡是以“%”开头或结尾的字符串,在inf文件末的string段中都有其对应的值。如%INTEL%的对应值是“Intel”。
  DriverVer:驱动生成时间以及驱动版本。
  特别注意Class、ClassGuid和DriverVer,搞清楚它们可以避免不必要的麻烦。
  另外,确定本驱动可以用于源计算机的系统环境,WinXP用WinXP的驱动,Win7用Win7的驱动,一般不可混用。
  (2)Manufacturer段
  Intel Rapid Storage Technology Driver 9.5.0.1037的Manufacturer段如下:  [Manufacturer]  %INTEL%=INTEL_HDC,ntx86复制代码意思是:名为%INTEL%(在此是Intel)的制造商使用了本inf的“INTEL_HDC,ntx86”段。
  “INTEL_HDC,ntx86”信息本身也包含多个意思:第一个字符串,即第一个“,”之前的那个字符串,为主段名,其他的为附段名。一个主段名后可以有多个附段名,附段名间用英文逗号隔开。主段名可以单独使用,也可以与任何一个附段名结合使用,如本例“INTEL_HDC,ntx86”中,“INTEL_HDC”可以独立成为段名,也可以与附段名结合组成“INTEL_HDC.ntx86”来使用。
  再举个nVIDIA的例子,“%NVIDIA%=NVIDIA, ntx86, ntx86.6.0”,其中主段名为“NVIDIA”,附段名为“ntx86”和“ntx86.6.0”,可以使用的段名有“NVIDIA”、“NVIDIA. ntx86”、“NVIDIA.ntx86.6.0”。
  回到Intel的inf。通过对上文的阅读和理解,Intel Rapid Storage Technology Driver [Manufacturer]段的意思为:“名为Intel的制造商使用本inf的“INTEL_HDC”段和“INTEL_HDC. ntx86”段”。
  而后我们去查找这个两个段,发现只能找到“INTEL_HDC. ntx86”段,有时制造商为了方便拓展等理由会刻意这样安排。那我们就来看看“INTEL_HDC. ntx86”段:  [INTEL_HDC.ntx86]  %PCI\\VEN_8086&DEV_2681&CC_0106.DeviceDesc% = iaStor_Inst, PCI\\VEN_8086&DEV_2681&CC_0106  %PCI\\VEN_8086&DEV_27C1&CC_0106.DeviceDesc% = iaStor_Inst,PCI\\VEN_8086&DEV_27C1&CC_0106  %PCI\\VEN_8086&DEV_27C5&CC_0106.DeviceDesc% = iaStor_mobl_Inst,PCI\\VEN_8086&DEV_27C5&CC_0106  %PCI\\VEN_8086&DEV_2821&CC_0106.DeviceDesc% = iaStor_Inst, PCI\\VEN_8086&DEV_2821&CC_0106  %PCI\\VEN_8086&DEV_2829&CC_0106.DeviceDesc% = iaStor_mobl_Inst, PCI\\VEN_8086&DEV_2829&CC_0106  %PCI\\VEN_8086&DEV_2922&CC_0106.DeviceDesc% = iaStor_Inst, PCI\\VEN_8086&DEV_2922&CC_0106  %PCI\\VEN_8086&DEV_2929&CC_0106.DeviceDesc% = iaStor_mobl_Inst, PCI\\VEN_8086&DEV_2929&CC_0106  %PCI\\VEN_8086&DEV_3A02&CC_0106.DeviceDesc% = iaStor_Inst, PCI\\VEN_8086&DEV_3A02&CC_0106  %PCI\\VEN_8086&DEV_3A22&CC_0106.DeviceDesc% = iaStor_Inst, PCI\\VEN_8086&DEV_3A22&CC_0106  %PCI\\VEN_8086&DEV_3B29&CC_0106.DeviceDesc% = iaStor_mobl_Inst, PCI\\VEN_8086&DEV_3B29&CC_0106  %PCI\\VEN_8086&DEV_3B2F&CC_0106.DeviceDesc% = iaStor_mobl_Inst, PCI\\VEN_8086&DEV_3B2F&CC_0106  %PCI\\VEN_8086&DEV_3B22&CC_0106.DeviceDesc% = iaStor_Inst, PCI\\VEN_8086&DEV_3B22&CC_0106复制代码
对HWID熟悉的朋友一眼就能看出来这里肯定和HWID有关,没错,的确与HWID有很大关系。这个段就是用来规定具有哪些HWID的硬件可以使用本驱动,或者说本驱动支持哪些HWID的硬件。我们抽出其中部分来讲解,如:
  %PCI\\VEN_8086&DEV_2681&CC_0106.DeviceDesc% = iaStor_Inst, PCI\\VEN_8086&DEV_2681&CC_0106
  “=”前的部分:对使用本HWID硬件的描述,具体描述见String段PCI\\VEN_8086&DEV_2681&CC_0106.DeviceDesc项的值。
  “=”后,“,”前的部分:使用本驱动的硬件,要安装哪个段来执行驱动安装操作,这里是“iaStor_Inst”段。
  “=”后,“,”后的部分:可以使用本驱动的硬件的HWID,这里是“PCI\\VEN_8086&DEV_2681&CC_0106”。
  (3)服务段
  在(2)中我们已经找到了,如果要安装HWID为PCI\\VEN_8086&DEV_2681&CC_0106硬件的驱动程序,要根据“iaStor_Inst”段的信息。这里的“iaStor_Inst”段是广义的,不只包含“[iaStor_Inst]”,还包含其子段(或叫做“派生段”),我们找一下它的“[iaStor_Inst.Services]”子段:  [iaStor_Inst.Services]  AddService = iaStor, %SPSVCINST_ASSOCSERVICE%, iaStor_Service_Inst, iaStor_EventLog_Inst复制代码AddService规定了要为此驱动安装哪个服务。
  第一个参数:iaStor,为需安装服务的服务名。
  第三个参数:iaStor_Service_Inst,为根据“iaStor_Service_Inst”段所规定的内容安装服务。
  我们再找到“iaStor_Service_Inst”段,看看这个驱动的服务要怎么安装。
  [iaStor_Service_Inst]  DisplayName& & = %*PNP0600.DeviceDesc%  ServiceType& & = %SERVICE_KERNEL_DRIVER%  StartType& && &= %SERVICE_BOOT_START%  ErrorControl& &= %SERVICE_ERROR_NORMAL%  ServiceBinary&&= %12%\\iaStor.sys  LoadOrderGroup = SCSI Miniport  AddReg& && && &= iaStor_parameters_AddReg复制代码DisplayName:服务的显示名,这个与服务名不同,在服务名不变的前提下可以根据需要有多种显示名,显示名的具体内容查阅“string”段“*PNP0600.DeviceDesc”项的内容。
  ServiceType:服务的类型,此处是“内核级驱动”,具体值见“string”段“SERVICE_KERNEL_DRIVER” 项的内容。
  StartType:服务的启动类型,此处是“在系统启动时即启动”,具体值见“string”段“SERVICE_BOOT_START” 项的内容。
  ErrorControl:错误类型,此处是“一般性报错”,具体值见“string”段“SERVICE_ERROR_NORMAL” 项的内容。
  ServiceBinary:驱动文件所在位置,“%12%”一般代表system32\\drivers目录,驱动文件完整路径为“system32\\drivers\\iaStor.sys”。
  LoadOrderGroup:服务所属的组,这里是“SCSI Miniport”。
  AddReg:额外需要添加的注册表项目,见“iaStor_parameters_AddReg”段的具体内容。
到这里,这个inf就算基本读完了,我们来总结一下我们读到的:
  (1)通过version段了解驱动的基本信息;
  (2)通过Manufacturer段找到包含HWID的段,在根据HWID的段找到配合此HWID的驱动所需要安装的驱动服务;
  (3)找到需要安装的驱动服务,了解这个驱动的服务是怎么样的,特别是启动类型和驱动文件所在位置。
  这也就完成了由inf文件中读到“系统关键设备--&设备驱动服务--&设备驱动文件”流程中各部分关键信息的目的。便于我们下一步制作SRS驱动。
3.4 制作SRS驱动
  (1)系统关键设备部分
  关键设备数据库(CriticalDeviceDatabase,简称CDDB)存储在:
  HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase
  其下包含了所有系统关键设备的HWID,磁盘控制器的HWID也属于此,所以需要将inf中的HWID及其相关信息写入此注册表项目下。
  CDDB下的注册表项目的一般形式为:     [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\(硬件ID)]  &ClassGUID&=&(类的GUID)&  &Service&=&(服务名)&复制代码硬件ID,读取自inf中Manufacturer段规定的段,如本例中是为INTEL_HDC.ntx86段。
  类的GUID,读取自inf中version段的ClassGuid项。
  服务名,读取自inf中硬件ID对应项目的参数,如本例中读取自iaStor_Inst段的子段iaStor_Inst.Services中AddService项决定的服务名:iaStor。
  那么PCI\\VEN_8086&DEV_2681&CC_0106对应的CDDB段应该为:
  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\ PCI#VEN_8086&DEV_2681&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=& iaStor &复制代码注意,HWID在写入注册表时“PCI”后的“\\”改为“#”,以避免混淆)
  (2)驱动服务部分
  在3.3中已述,驱动服务是由驱动安装段的Services子段中AddService的第三个参数决定的,本例中由“iaStor_Service_Inst”段来完成。
我们把“iaStor_Service_Inst”段中由“%”包含的字符串根据“String”段的信息来替换一下,得到:  [iaStor_Service_Inst]  DisplayName& & = &Intel AHCI Controller&  ServiceType& & = 1  StartType& && &= 0  ErrorControl& &= 1  ServiceBinary&&=system32\\drivers\\iaStor.sys  LoadOrderGroup = SCSI Miniport  AddReg& && && &= iaStor_parameters_AddReg复制代码将驱动inf的服务段转化为注册表时,有如下对应关系:
  inf中的ServiceType项对应注册表中的Type项;
  inf中的StartType项对应注册表中的Start项;
  inf中的ErrorControl项对应注册表中的ErrorControl项;
  inf中的ServiceBinary项对应注册表中的ImagePath项;
  inf中的LoadOrderGroup项对应注册表中的Group项。
  说明:
  DisplayName,由于我们是在制作SRS驱动,一般而言此值没有具体作用,所以无需转化;
  ServiceType、StartType、ErrorControl在注册表中为“REG_DWORD”类型,写入注册表时,如果其值为非二进制,则需要将其值转为二进制;
  ServiceBinary的注册表项目类型为“REG_EXPAND_SZ”,需要将它的字符串内容完全转化为二进制内容;
  AddReg段是个需要商榷的段,在有些磁盘控制器中这个不是必须的(如Intel),而有些磁盘控制器则是必须的(如nVIDIA),所以我们一般还需将AddReg所规定段的内容进行转化。
  SRS驱动服务部分一般形式为:  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\(服务名)]  &ErrorControl&=  &Group&=&&  &Start&=  &Type&=  &ImagePath&=复制代码
经过转化后,iaStor服务在注册表中的形式为:  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\iaStor]  &ErrorControl&=dword:  &Group&=&SCSI Miniport&  &Start&=dword:  &Type&=dword:  &ImagePath&=hex(2):73,00,79,00,73,00,74,00,65,00,6D,00,33,00,32,00,5C,00,64,00,72,00,69,00,76,00,65,00,72,00,73,00,5C,00,69,00,61,00,53,00,74,00,6F,00,72,00,2E,00,73,00,79,00,73,00,00,00复制代码
(3)驱动服务的附加注册表项
  在(2)中已经说到了服务创建段中的AddReg项,例如AddReg =iaStor_parameters_AddReg。我们在inf中寻找AddReg所规定的段,即“iaStor_parameters_AddReg”。
  一般来说,只有注册表附加项中的“Parameters”才是必要的添加项目。如:
  [iaStor_parameters_AddReg]  HKR,Parameters,queuePriorityEnable,%REG_DWORD%,0  HKR,Parameters,BusType,0xx0000003复制代码
第一个参数HKR:服务所在键。
  第二个参数Parameters:服务所在键下的Parameters子键。
  第三个参数,一般规定要建立名为什么的项,如这里的queuePriorityEnable项和BusType项。
  第四个参数,所创建项的类型,如果使用“%”包含则取string段寻找对应值。一般而言,0x是REG_EXPAND_SZ类型,0x是REG_DWORD类型。
  第五格参数,所创建项的值,请根据项的类型进行转化,如将十进制转化为二进制。
  将上述inf内容按照刚才所讲的规则进行转化后为:
  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\iaStor\\Parameters]  &queuePriorityEnable&=dword:  &BusType&=dword:复制代码(4)驱动文件
  折腾了这么多,别忘记了我们的主角——驱动文件。将对应的驱动文件放置到ImagePath(inf中ServiceBinary)所规定的位置。在此例中,需要将iaStor.sys放置到System32\\drivers中(假设C盘是系统盘),完整路径为:C:\\Windows\\System32\\drivers\\iaStor.sys。
  经过一番努力,我们完成了Intel Rapid Storage Technology 驱动的AHCI部分从一般驱动向SRS驱动的转化,转化为注册表文件后如下:  Windows Registry Editor Version 5.00  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_2681&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&[HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_27C1&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_27C5&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_2821&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_2829&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_2922&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_2929&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_3A02&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_3A22&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_3B29&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_3B2F&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\CriticalDeviceDatabase\\PCI#VEN_8086&DEV_3B22&CC_0106]  &ClassGUID&=&{4D36E96A-E325-11CE-BFC1-0}&  &Service&=&iaStor&  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\iaStor]  &ErrorControl&=dword:  &Group&=&SCSI Miniport&  &Start&=dword:  &Type&=dword:  &ImagePath&=hex(2):73,00,79,00,73,00,74,00,65,00,6D,00,33,00,32,00,5C,00,64,00,72,00,69,00,76,00,65,00,72,00,73,00,5C,00,69,00,61,00,53,00,74,00,6F,00,72,00,2E,00,73,00,79,00,73,00,00,00  [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\iaStor\\Parameters]  &queuePriorityEnable&=dword:  &BusType&=dword:复制代码将此注册表文件保存,例如Intel_Srs.reg
  最后,如果要使用Intel的SRS驱动,则需要:
  第一,将Intel的SRS驱动文件,即iaStor.sys,复制到C:\\Windows\\System32\\drivers下;
  第二,导入上述注册表。
3.5 本章总结
  SRS驱动被誉为高手手中的“圣物”,原因有如下几点:
  (1)很多所谓的技术员就没搞清楚磁盘控制器与磁盘是什么关系,天天盯着磁盘看,出点问题就了了一句“不支持SATA硬盘”带过,从未涉及问题的深层,从未了解问题的根本。
  (2)很多高手对SRS驱动的制作保密。
  (3)SRS驱动的制作比较复杂,且容易出错。
  (4)SRS驱动的制作需要一定经验和实践的堆积才能完成。
  (5)SRS驱动的测试需要大量的时间,并需要测试者的技术水平与问题处理能力。
  但SRS驱动的制作并非“平民”不能掌握的,今与大家共同探讨SRS驱动的收集方法,为的就是大家能一起交流SRS驱动,创建更好的技术研讨氛围。
网站管理,业务合作联系邮箱:
&nbsp&nbsp QQ: 限网站业务问题. 网站帐号、密码、密保找回请使用注册邮箱,发送邮件至
,否则不予受理.免责声明:本论坛所有文字和图片仅代表其个人观点.本站某些资料或文章来自于互联网,不代表本站观点,如果侵犯了您的权益,请来信告知,我们会在三天内删除.为了给大家一个更好的交流场所,请勿在本论坛发表与中华人民共和国法律相抵触的言论,请合作,谢谢!
Copyright &
Corporation
Powered by 版权所有
&nbsp&nbsp 转载请注明!
&&浙ICP备号
程序:Discuz! x3.1

我要回帖

更多关于 盖世豪侠 下载 的文章

 

随机推荐