在我的第一篇博文Plx9030通讯卡驱动开发提到,PLX官网提供了丰富的9000系列(9030,9052,9054)芯片的驱动文件(sys)和SDK开发包。我们在发布自己的产品时,简单的话,可以直接用官方sys文件,用SDK做二次接口封装。然而,在利用官方sys文件时,需要注意几个事情,这是PLX公司建议的。

设置硬件ID

为了避免设备冲突,发布自己产品建议设置硬件ID. 硬件ID用来区别与其他系统内的设备,告知软件哪一个是与之匹配的。根据PCI2.0规范,PCI配置空间(256B)的前64个字节含义是标准的,包含verdor id、device id、subsys id、reversion id等。系统上电后,进入POST(power on self test)程序,系统要检测所有的硬件资源,这时由PCI总线驱动(bus driver)询问PCI设备其硬件ID,PnP管理在设备树种建立该PCI设备的设备节点,并且初始化物理设备对象PDO。

9030默认verdor ID=0x10B5,device id=0x9030.发布自己的产品时,需要恰当的设置device ID。可以在网址查询vender ID 及 device id的使用情况,如果不考虑商业纠纷,就设置一个别人没用过的吧,嘿嘿。

修改inf文件

需要修改inf文件,那打开inf文件,怎么修改呢?在我心中曾经这是一个神秘的文件,一直看不太明白。参看前一篇博文,我豁然开朗。inf文件主要干了三件事:(1)指示该inf文件为哪些设备可用;(2)复制设备驱动安装相关的文件到制定的目录下;(3)增加注册表响应项。先看看inf文件吧,解开她的神秘面纱。

[Version]节通常放在inf开始位置。

Signature指示哪些OS平台可以解析该文件,$Chicago$说明所有的windows系统,$windows NT$说明2000及其以后OS。

Provider说明inf的作者,一般写公司的名字。

Class、ClassGUID说明设备所属类型及GUID号,查看DevGUID.h看。

DriverVer说明驱动程序的版本号及其日期。

[String]节类似于C语言的Macro定义,定义了一些字符串,在inf的其他位置替换。

[SourceDisksNames]定义安装位置。

[SourceDisksFiles]说明所有在设备安装阶段拷贝到系统中的文件列表。

[DestinationsDirs]说明了文件拷贝到系统目录的位置。

[Manufacturer]是树形结构,描述了该inf为哪些设备可用。

执行顺序是这样的:查找[Manufacturer]节支持设备列表——>DDinstall节——>.service节——>.HW节。具体细节还是看前一篇博文。

;===========================================================
;
; File : PlxSdk.inf
;
; Abstract: Windows INF for boards with PLX chips
;
;=========================================================== [Version]
Signature = $Windows NT$
Provider = %Ray-Vision%
Class = Unknown
ClassGuid = {4d36e97e-e325-11ce-bfc1-08002be10318}
DriverVer = //, 1.0
DriverPackageType = PlugAndPlay
DriverPackageDisplayName = %PackageName%
CatalogFile = PlxSdk.cat [Manufacturer]
%Ray-Vision% = RV.Mfg, NTamd64 ;-----------------------------------------------------------
; Device identification for -bit Windows
;-----------------------------------------------------------
[RV.Mfg]
"PCI-CAN card 1.0" = DDInstall_9030, PCI\VEN_10b5&DEV_9030&SUBSYS_903010B5 ;-----------------------------------------------------------
; Device identification for -bit Windows x64
;-----------------------------------------------------------
[RV.Mfg.NTamd64]
"PCI-CAN card 1.0" = DDInstall_9030, PCI\VEN_10b5&DEV_9030&SUBSYS_903010B5 ;-----------------------------------------------------------
; CopyFiles section
;
; Flags: 0x00000004 = COPYFLG_NOVERSIONCHECK
;----------------------------------------------------------- [CopyFiles_9030]
Ray-Vision9030.sys,,,0x00000004
Ray-Vision_PlxApi710.dll,,,0x00000004 ;-----------------------------------------------------------
; Driver installation section
;-----------------------------------------------------------
[DDInstall_9030.NT]
AddReg = AddRegistry_9030
CopyFiles = CopyFiles_9030 ;-----------------------------------------------------------
; Device-specific options & registry entries
;
; Security settings are added here to override any class security settings
; imposed on some systems. Refer to "SDDL strings" on MSDN for details.
;
; PLX is setting the default access as follows:
; GA -> SY GENERIC_ALL to OS itself
; GA -> BA GENERIC_ALL to Administrators
; GRGWGX -> BU READ/WRITE/EXEC to Built-in User Group
; GRGWGX -> BG READ/WRITE/EXEC to Built-in Guest Group
;----------------------------------------------------------- [DDInstall_9030.NT.HW]
AddReg = AddRegSecurity [AddRegSecurity]
HKR,,Security,,%PLX_ACCESS_SDDL% ;-----------------------------------------------------------
; AddService section
;-----------------------------------------------------------
[DDInstall_9030.NT.Services]
AddService = Plx9030, 0x00000002, Service_Inst_9030 ;-----------------------------------------------------------
; AddRegistry section
;----------------------------------------------------------- [AddRegistry_9030] ;-----------------------------------------------------------
; Service installation section
;-----------------------------------------------------------
[Service_Inst_9030]
ServiceType = ; SERVICE_KERNEL_DRIVER
StartType = ; SERVICE_DEMAND_START
ErrorControl = ; SERVICE_ERROR_IGNORE
ServiceBinary = %%\Ray-Vision9030.sys ;-----------------------------------------------------------
; Source file information
;----------------------------------------------------------- [SourceDisksNames]
= %InstallDisk% [SourceDisksFiles.x86]
Ray-Vision9030.sys = ,Driver\i386
Ray-Vision_PlxApi710.dll = ,dll [SourceDisksFiles.amd64]
Ray-Vision9030.sys = ,Driver\amd64
Ray-Vision_PlxApi710.dll = ,dll [DestinationDirs]
CopyFiles_ApiDll = ; %WinDir%\System32
DefaultDestDir = ; = Drivers Directory [CopyFiles_ApiDll]
Ray-Vision_PlxApi710.dll ;-----------------------------------------------------------
; String information
;----------------------------------------------------------- [Strings]
InstallDisk = "Ray-Vision Installation Disk"
Ray-Vision = "Ray-Vision Electronics Technology Co.,Ltd"
PLX_ACCESS_SDDL = "D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GRGWGX;;;BU)(A;;GA;;;BG)"
PackageName = "PCI-CAN card Driver Installation"

inf必须修改的地方是,(1)manufacturer节,修改设备ID,这样在设备安装阶段,设备安装管理器扫描inf时才知道该inf文件是为你的硬件设备服务;(2)在inf文件中,制定了设备驱动sys的文件名字,目录路径,所以如果修改了sys文件名字,需要修改相关的地方。除此之外,你还可以增加一些设备驱动安装时需要拷贝的文件,如dll。

3.为了避免安装设备驱动文件时,与其他的类似设备文件(sys,dll)名字冲突,建议修改名字。例子中,我将sys文件修改为Ray-Vision9030.sys,dll文件修改为Ray-Vision_PlxApi710.dll。

如何使用PLX提供的官方驱动和SDK发布自己的产品?的更多相关文章

  1. nw335 debian sid x86-64 -- 4 realtek 提供的官方驱动

    realtek 提供的官方驱动   1 查看无线网卡的驱动芯片: $ sudo lsusb Bus 001 Device 003: ID 0bda:8176 Realtek Semiconductor ...

  2. [转载]在C#中使用官方驱动操作MongoDB

    在C#中使用官方驱动操作MongoDB 8.1)下载安装 想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动有很多种,如官方提供的,samus. 实现思路大都类 ...

  3. MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 一

    本人系新接触MongoDB不久,属于MongoDB的菜鸟范畴.在使用MongoDB的过程中,总结了一些认识,在此总结跟大家分享.欢迎拍砖. 关于MongoDB的内容,在此就不做介绍了,网上有浩如烟海的 ...

  4. .net Core使用Orcle官方驱动连接数据库

    最近在研究.net Core,因为公司的项目用到的都是Oracle数据库,所以简单试一下.net Core怎样连接Oracle. Oracle官方现在已经提供.net Core的官方驱动(预览版),也 ...

  5. MongoDB Python官方驱动 PyMongo 的简单封装

    最近,需要使用 Python 对 MongodB 做一些简单的操作,不想使用各种繁重的框架.出于可重用性的考虑,想对 MongoDB Python 官方驱动 PyMongo 做下简单封装,百度一如既往 ...

  6. .net Core使用Orcle官方驱动连接数据库 C#参考教程 http://www.csref.cn

    .net Core使用Orcle官方驱动连接数据库   最近在研究.net Core,因为公司的项目用到的都是Oracle数据库,所以简单试一下.net Core怎样连接Oracle. Oracle官 ...

  7. .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net

    1.背景 由于历史原因,笔者所在的公司原有的ES查询驱动采用的是 PlainElastic.Net, 经过询问原来是之前PlainElastic.Net在园子里文档较多,上手比较容易,所以最初作者选用 ...

  8. C#基于Mongo的官方驱动手撸一个Super简易版MongoDB-ORM框架

    C#基于Mongo的官方驱动手撸一个简易版MongoDB-ORM框架 如题,在GitHub上找了一圈想找一个MongoDB的的ORM框架,未偿所愿,就去翻了翻官网(https://docs.mongo ...

  9. MongoDB基础入门003--使用官方驱动操作mongo,C#

    本篇先简单介绍一下,使用官方驱动来操作MongoDB.至于MongoDB原生的增删改查语句,且等以后再慢慢学习. 一.操作MongoDB的驱动主要有两个 1.官方驱动:https://github.c ...

随机推荐

  1. Winform 5种皮肤小结(内含丰富的下载实例)

    软件界面就是指软件中面向操作者而专门设计的用于操作使用及反馈信息的指令部分. 优秀的软件界面有简便易用,突出重点,容错高等特点. 1.东日IrisSkin  使用IrisSkin只能是对单一的控件重绘 ...

  2. PHP扩展之 Imagick安装

    最近的PHP项目中,需要用到切图和缩图的效果,在本地windows开发环境,安装过程遇到好多问题,在此与大家分享. php官网里,一大群老外也看不懂这玩意怎么装,主要原因在于,php版本庞杂,还有x8 ...

  3. Express bodyParser中间件使用方式

    bodyParser中间件用来解析http请求体,是express默认使用的中间件之一. 1.这个模块提供以下解析器 (1) JSON body parser (2) Raw body parser ...

  4. 美国cst时间和夏令时

    美国6 PM CST相当于北京时间几点? 换算北京时间是:8:00,上午8点,日期是第二天.(换算公式:18点+14小时=第二天8点) 6 PM CST:6:00 PM Central Standar ...

  5. 微信小程序子传父

    子组件 父组件

  6. vue-element-admin 多层路由问题

    在二级页面上添加<router-view> 关于页面打包后三级路由无法访问问题 需要将 存放router-view 的页面单独存放一个文件夹 router.js 写法

  7. ASE第二次结对编程——Code Search

    复现极限模型 codenn 原理 其原理大致是将代码特征映射到一个向量,再将描述文字也映射到一个向量,将其cos距离作为loss训练. 对于代码特征,原论文提取了函数名.调用API序列和token集: ...

  8. 构建虚拟工控环境系列 - 西门子虚拟PLC

    一. 概述 跟随着工控安全一路走来,工控安全市场今年明显有相当大的改善,无论从政策还是客户需求,都在逐步扩大中.但是,搞工控安全研究的人员却寥寥无几.一方面工控安全是个跨学课的技术,需要了解多方面的知 ...

  9. C语言的宏macro的使用

    C's Macro Introduction 1.The Connect Macros: ## 这是一个预处理连接符,这个操作符主要用来将两个符号连接成为一个完整的宏符号.通过下面的代码,可以看到其具 ...

  10. 2.java多线程_synchronized(Lock)同步

    1.synchronized同步关键词 线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同 操作共享数据.因此为 ...