假设硬件ID为 USB/VID_aaaa&PID_bbbb/PRODUCTNAME

系统会在注册表HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Enum 下为每个字段生成一个目录,比如ID中的第一个字段为USB,那么Enum下会生成USB子目录,第二个字段为VID_aaaa&PID_bbbb,则在USB目录下生成VID_aaaa&PID_bbbb子目录,最后一个字段为PRODUCTNAME,则在VID_aaaa&PID_bbbb目录下生成PRODUCTNAME子目录。PRODUCTNAME子目录中包含的信息为该硬件的属性和所需驱动等。

成功安装好驱动之后该目录有以下几个字段

表1

Capabilities

0x00000014

REG_DWORD

Class

MEDIA

REG_SZ

ClassGUID

(INF文件中定义)

REG_SZ

CompatibleIDs

USB/Class_ff&SubClass_00&Port_00
USB/Class_ff&SubClass_00
USB/Class_ff

REG_MULTI_SZ

ConfigFlags

0x00000000

REG_DWORD

DeviceDesc

MyDriverDesc

REG_SZ

Driver

{GUID}/0042

REG_SZ

HardwareID

USB/Vid_aaaa&Pid_bbbb&Rev_0100
USB/Vid_aaaa&Pid_bbbb

REG_MULTI_SZ

LocationInformation

PIXELA-SHANGHAI

REG_SZ

Mfg

MyCompany

REG_SZ

Services

DigitalTV

REG_SZ

UINumber

0x00000000

REG_DWORD

HardwareID 字段,CompatibleIDs字段,DeviceDesc字段,LocationInformation字段,Capabilities字段和UINumber字段是插入硬件后从硬件中获取,一般是在firmware中配置。要想硬件被正确认出,你需要手动添加Class,ClassGUID,ConfigFlags,Driver,Mfg和Services字段,其中重要的两个字段为Driver字段和Services字段。Driver字段包含了一个字符串,指向注册表中的另一个目录

HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Class / {GUID} / 0042

而Services字段则指向目录

HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / DigitalTV

HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Class / {GUID} / 0042目录中包含了驱动文件的各种信息,正确安装驱动后在该目录下有以下字段

表2

DevLoader

*ntkern

REG_SZ

DriverData

1-4-2008

REG_SZ

DriverDataData

0000b4bf644ec801

REG_BINARY

DriverDesc

MyDriverDesc

REG_SZ

DriverVersion

6.0.0.0

REG_SZ

InfPath

Myinf.inf

REG_SZ

InfSection

DigitalTV.Dev

REG_SZ

InfSectionExt

.NT

REG_SZ

MachingDeviceId

usb/vid_aaaa&pid_bbbb

REG_SZ

NTMPDriver

Mydriver.sys

REG_SZ

ProviderName

MyCompany

REG_SZ

此表中大部分字段都是inf中定义的,MachingDeviceID指定与该驱动配套的设备id,NTMPDriver指定驱动文件名。

HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / DigitalTV目录指定了该驱动对应的windows 系统服务,正确安装驱动后有以下字段:

表3

DisplayName

MyDriverName

REG_SZ

ErrorControl

1

REG_DWORD

Group

Base

REG_SZ

ImagePath

System32/Drivers/mydriver.sys

REG_EXPAND_SZ

Start

3

REG_DWORD

Tag

0x15

REG_DWORD

Type

1

REG_DWORD

此表中大部分也是在inf中定义

我们的硬件有两个ID

USB/VID_aaaa&PID_bbbb/PRODUCTNAME和

USB/VID_aaaa&PID_bbbb/PRODUCTNAME2

有时候没有烧EEPROOM的板子还可能是这样的ID

USB/VID_aaaa&PID_cccc/ 5&111db94e&0&4

以三个ID为例,则HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Enum / USB目录下有VID_aaaa&PID_bbbb和VID_aaaa&PID_cccc两个目录,VID_aaaa&PID_bbbb目录下有

PRODUCTNAME 和PRODUCTNAME2两个目录,每个目录有类似表1的一系列字段,VID_aaaa&PID_cccc下有5&111db94e&0&4目录,5&111db94e&0&4目录下也有表1中的字段。每张表都指定了一个Driver目录和一个Services目录。Services目录一般不会变,但Driver目录中的MatchingDeviceId字段和硬件id相关联,所以我们至少需要两项Driver目录项,比如

HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Class / {GUID} / 0042

HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Class / {GUID} / 0044

0042中的MatchingDeviceId为

USB/VID_aaaa&PID_bbbb,

而0044中的MatchingDeviceId为

USB/VID_aaaa&PID_cccc。

有时候还要配置Interface(我们的驱动中必须配置,否则DirectShow不能使用SourceFilter),则需要对HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / DeviceClasses下的一些目录进行操作。

HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / DeviceClasses目录中列出了许多Category的GUID,

该图中的主要Category在目录中均有相应的GUID

如{FD0A5AF4-B41D-11d2-9C95-00C04F7971E0}代表了BDA Source Filters目录,下面列举了一系列类似硬件ID的信息,当插入硬件得到硬件ID后,匹配到注册表中的相应项,则激活该项目下的Filter。如上图中的{51D771C7-C589-4b61-AD46-8C8047987A18}代表的是一个BdaCaptureFilter,Device Parameters中列举了一些参数,都是在inf中定义的。激活之后就可以在程序中使用BdaCaptureFilter了。

usb 驱动安装过程中对注册表的改动相关推荐

  1. Microsoft Visio Premium 2010安装过程中遇到错误1402所需修改的注册表项

    2019独角兽企业重金招聘Python工程师标准>>> 昨天为了画一个数据库的模型图,装了下Visio,结果安装的时候一直报1402的错误,而且每次安装时候遇到这个错误,都需要回滚重 ...

  2. ubuntu20.04.5 安装过程中黑屏以及nvidia显卡驱动安装后,开机黑屏/无法启动,亮度过高无法调节等问题,以及没有rtl 8852be网卡驱动问题解决。Redmi G 2022

    文章目录 写在前面 Nvidia显卡驱动安装 选择 `no` 会怎么样 网卡驱动安装 对于 `rtl8852be` 写在前面 首先,经过一天的痛苦研究,终于解决nvidia显卡驱动(rtx 3050 ...

  3. 红帽linux7如何加载驱动,在RHEL7安装过程中加载驱动程序

    在系统在安装过程中,有时候会出现系统不支持或当硬件比系统版本更新时就需要在系统安装之前就需要先加载驱动(通常是RAID卡驱动,因为不加载RAID驱动无法识别硬盘,从而导致无法安装系统,其它大多驱动可在 ...

  4. 关闭惠普计算机通电启动注册表,惠普10代cpu电脑装win7卡logo(安装程序正在更新注册表设置)解决方法...

    最近有很多网友问我惠普电脑10代cpu台式机安装win7卡在在更新注册表设置怎么办?出现这种情况一般情况是由于没有提前注入显卡驱动,现在很多新电脑都采用的集成显卡,10代以cpu采用的集显的话,在ue ...

  5. CY7C68013A在WIN7下64位的USB驱动程序安装过程

    文章来源说明:CY7C68013A在WIN7下64位的USB驱动程序安装过程遇到好几个问题,在网络上查阅了不少资料,本人只是对网络上的资料进行了整理,不能算是原创,对引用部分均说明了来源,为避免大家重 ...

  6. 安装SQL SERVER2000提示注册表文件被挂起的解决方案

    在安装SQL SERVER 2000时出现如下的提示: "以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机." 按照提示重启计算机,再安装, ...

  7. 安装计算机过程中的注意事项,西门子step7安装过程中的注意事项

    有关西门子step7安装过程中的注意有哪些,注意西门子自动化软件的安装顺序,先安装STEP7,再安装上位机组态软件WinCC和人机界面的组态软件WinCC flexible等. 西门子step7软件安 ...

  8. 博途v15安装过程中提示出错_博途V15.1安装及无限重启和.net3.5SP1错误处理解决方法...

    软件安装包 3.安装过程及安装过程中出现问题处理 1)打开软件安装包,打开STEP7WINCCproV15.1文件夹,如下图 双击TIA_Portal_STEP_7_Pro_WINCC_Pro_V15 ...

  9. C#中对注册表的操作指南

    C#中对注册表的操作指南 Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKE ...

最新文章

  1. springMVC入门截图
  2. 漂亮的页面向导和Tab插件(Jquery)
  3. 服务器维护 文档,ERP系统维护服务器维护管理文档.docx
  4. GridView控件与DataList控件DataKeyNames、DataKeysField、DataKeys用法
  5. 结对编程-四则运算生成
  6. SEAYAR - 思雅,快乐生活
  7. GPS 经纬度转换 百度、高德经纬度
  8. 【金猿案例展】某大型股份制银行——指标的统一管理和分析平台
  9. Windows10家庭版转为专业版
  10. html5 Doctor——教你规范使用html5标签
  11. uniapp自定义导航栏,高度,自定义组件
  12. Win11怎么分区硬盘?Win11硬盘分区详细教程
  13. 异端的制作:数字人物Gawain
  14. 常用APP的OpenUrl
  15. 谷歌浏览器打开显示2345浏览器界面
  16. 联通eMule的HighID设置方法
  17. 超级计算机紫金,紫金山天文台将用“天河一号”模拟宇宙成长
  18. 激活函数ReLU、Leaky ReLU、PReLU和RReLU
  19. python之list与tuple
  20. 模糊聚类分析和模式识别

热门文章

  1. 『NLP经典项目集』05:新年到,飞桨带你对对联
  2. Windows本地快速搭建SFTP文件服务器,并端口映射实现公网远程访问
  3. 今天是情人节呐,我利用Python制作了好多表白的东西,快来吧~
  4. 电商数据监测可以发现哪些渠道问题
  5. linux hexdump显示格式c数组,linux hexdump使用
  6. 同事半个月都没搞懂selenium,我半个小时就给他整明白!顺手秀了一波爬淘宝的操作
  7. form表单输入正则校验
  8. FDTD Solutions仿真区出现绿条纹的原因、解决方案,及后遗症
  9. dsp6455 + FPGA的EMIF数据接口
  10. 用户admin的密码忘记