zoukankan      html  css  js  c++  java
  • 【改自lg2lh】EZ-USB 68013 学习笔记--设备信息安装文件CyUSB.inf详细说明

    首先要明白一个INF文件的基本结构:INF由节组成,即一个个段组成。每个段的功能不一样。(大部分书上把这个段叫作""

    [Version]段:主要用说明版本信息的。

    [Strings]段:字符串信息,用于常量定义,用于显示。凡在其他段中出现的%XXXX%(就是两个百分号夹着一组字母),则对应的就会在Strings段里对应着它的一个字符串。

    [SourceDisksNames]段:定义安装源文件所在磁盘,一般为1,表示在第一个磁盘。此节可无。

    [SourceDiskFiles]段:驱动程序文件列表及被安装的位置,该节必须结合[SourceDisksNames]节才能知道具体的位置。如"atinbtxx.sys=1",则你必须到[DestinationDirs]节去查看"1"具体代表那个位置。

    [DestinationDirs]: 这里表示的就是上述驱动文件安装到什么地方。

    [Defaultinstall]段和[Install]段:这里表示安装段,对实际文件进行操作,比如说复制,删除,添加注册表等,但是安装段的名字不一定是这两个,可以通过Model段中指明哪个段是安装段。

    [Model] 此段用来指明安装段的名称。即说明哪个段是安装段。格式:%xxxx%=安装段名,USBVID_04B4&PID_8613.所以这里不仅指明了安装段,还设置了引导安装的VIDPID,当与检测到设备的PIDVID相同时,则设备管理器认为该设备找到了自己的安装信息文件(INF文件),从而开始引导安装。(新的通用驱动CyUSB.inf文件并不带Model段而是针对多种平台的Device段,同样也制订了VID/PID信息)

    [Manufacturer]段:此段用来指定设备供应商的名称,这个名称同时也是Model段。

    关于INF文件的相关语法:

    1、最后应该明白这8个段,有两个段不是直接显示出来的,就是[Model][Install],都是通过别的段指明的。

    2、关于段的定义:我个人认为,只要在INF文件中将自己的段名用中括号包起来即可,如[MySection]...... 则这个MySection就可以认为是一个段了。

    3、各个段之间的关系是并行的关系。如果两个段名相同,则接成一个段。不区分大小写

    4、字符串标记,格式%xxxxxx%,这是一个字符串的标记,并不是字符串,他只是代表一个字符串,这个字符串在Srtings段定义,当然可以把这个字符串和一个段名关联起来。

    例如:[Manufacturer]
    %MFGNAME%=Cypress
    [Cypress]

    ......

    [Strings]

    MFGNAME="Cypress" // %MFGNAME%是个字符串标记,代表的字符串为"Cypress"。这个字符串和model段名关联了。

    下面是CyUSB.inf文件

    [Version] //版本段
    Signature="$CHICAGO$" //Signature必须一般为此值
    Class=USB //驱动程序的类别,说明此为USB设备
    ClassGUID={36FC9E60-C465-11CF-8056-444553540000} //对应USB设备的GUID值。不同设备的GUID值不同。
    provider=%PROVIDER% //INF文件的提供者,%PROVIDER%是一个字符串标记,在Strings段可以看到它所指的字符串为"Cypress"

    [SourceDisksNames]
    1=%CYUSB_INSTALL%,,, 表示安装在磁盘1

    [SourceDisksFiles] //待安装的源文件,即待安装的驱动程序
    CyUsbME.sys = 1 //1表示要安装到哪个目录,具体那个目录在[DestinationDirs]说明
    CyUsb.sys = 1
    CyUsb.spd = 1

    [Manufacturer] //指定设备供应商,同时也指定了那一段为Model段
    %MFGNAME%=Cypress //Cypress为Model段

    [Cypress] //此为Model段,并列出相应的安装段,可以列写多个设备PID,VID。用来表示响应不同的固件。
    ; Cypress FX2LP default ID

    %VID_04B4&PID_8613.DeviceDesc%=CyUsb, USBVID_04B4&PID_8613//CyUsb被设置为安装段

    ; Cypress FX1 default ID

    %VID_04B4&PID_6473.DeviceDesc%=CyUsb, USBVID_04B4&PID_6473

    ; Cypress FX2LP Example Device. DVK firmware examples use this VID/PID

    %VID_04B4&PID_1004.DeviceDesc%=CyUsb, USBVID_04B4&PID_1004

    [DestinationDirs]
    CyUsbME.Files.Ext = 10,System32Drivers //意思是把CyUsbME.Files.Ext ,CyUsb.Files.Ext里的东西指定了方向,即右边的路径。这里没有操作,只是,10,表示C盘下的windows目录
    CyUsb.Files.Ext = 10,System32Drivers //CyUsbME.Files.Ext ,CyUsb.Files.Ext是两个段,在后面定义了,可以看到这两个段代表了两个驱动文件CyUsbME.sys

    [CyUsb]//此段为安装段,开始向[DestinationDirs]所示路径安装文件
    CopyFiles=CyUsbME.Files.Ext //CopyFiles是个指令,即将=后面的文件CyUsbME.Files.Ext安装到DestinationDirs]所示路径安装文件,
    AddReg=CyUsbME.AddReg//在注册表中添加相应的新的子健,进行相应操作,操作在CyUsbME.AddReg段中放着

    [CyUsb.HW]
    AddReg=CyUsb.AddReg.Guid //在HW下的注册

    [CyUsb.NT] //在NT(大于win98的平台)平台下的安装及注册
    CopyFiles=CyUsb.Files.Ext
    AddReg=CyUsb.AddReg

    [CyUsb.NT.HW]
    AddReg=CyUsb.AddReg.Guid

    [CyUsb.NT.Services]//添加安装文件的服务信息

    Addservice = CyUsb, 0x00000002, CyUsb.AddService //Addservice 是个操作指令格式:Addservice =需要服务的安装的安装段名,0x00000002是固定值,安装服务信息段名
    [CyUsb.AddService]//安装服务信息段

    DisplayName = %CyUsb.SvcDesc%
    ServiceType = 1 ; SERVICE_KERNEL_DRIVER
    StartType = 3 ; SERVICE_DEMAND_START//2值表示为自动安装
    ErrorControl = 1 ; SERVICE_ERROR_NORMAL
    ServiceBinary = %System32DriversCyUsb.sys //这个表示驱动所在路径,最终可在设备管理器中看到
    LoadOrderGroup = Base //不知道干嘛的

    [CyUsbME.AddReg] //不同安装段的注册表操作
    HKR,,DevLoader,,*ntkern
    HKR,,NTMPDriver,,CyUsbME.sys

    [CyUsb.AddReg] //不同安装段的注册表操作
    HKR,,DevLoader,,*ntkern
    HKR,,NTMPDriver,,CyUsb.sys

    [CyUsbME.Files.Ext] //待安装的驱动程序文件
    CyUsbME.sys

    [CyUsb.Files.Ext] //待安装的驱动程序文件
    CyUsb.sys

    [CyUsb.AddReg.Guid] //不同安装段的注册表操作
    ;HKR,,DriverGUID,,%CyUsb.GUID%

    ;---------------------------------------------------------------;
    [Strings] //一些显示的字符串,在设备管理器中可以看到
    PROVIDER="Cypress"
    MFGNAME="Cypress"
    CYUSB_INSTALL="Cypress Generic USB Driver Installation Disk"
    VID_04B4&PID_8613.DeviceDesc="Cypress EZ-USB FX2LP - EEPROM missing"
    VID_04B4&PID_6473.DeviceDesc="Cypress EZ-USB FX1 - EEPROM missing"
    VID_04B4&PID_1004.DeviceDesc="Cypress EZ-USB Example Device"
    CyUsb.SvcDesc="Cypress Generic USB Driver"

    ;CyUsb.GUID="{AE18AA60-7F6A-11d4-97DD-00010229B959}"

  • 相关阅读:
    perl shell交换示例
    python语法测试
    python使用带汉字的正则表达式
    【zz】Perl数字与字符串间的自动转换
    python完成文件按行拆分按列重组。
    转载 python每次读入文件一行的问题(血的教训啊)
    工程总结
    perl 语言学习——从C/C++到perl
    perl双层哈希求长度
    visual studio 代码分析利器 FxCop
  • 原文地址:https://www.cnblogs.com/sunmaoduo/p/3915972.html
Copyright © 2011-2022 走看看