技术标签: filter system interface windows class parameters
http://www.cnblogs.com/gussing/archive/2008/10/24/1319098.html
假设硬件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 |
REG_MULTI_SZ |
ConfigFlags |
0x00000000 |
REG_DWORD |
DeviceDesc |
MyDriverDesc |
REG_SZ |
Driver |
{GUID}/0042 |
REG_SZ |
HardwareID |
USB/Vid_aaaa&Pid_bbbb&Rev_0100 |
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了
泛型学习最近做项目用到了泛型,对泛型又重新了学习,此处记录一下, 以便以后查看,同时也希望能帮助到各位朋友。泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型..._泛型学习
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.我们这次的话题是要实现一个糖果机,这个糖果机中如下的一些状态以指导糖果机的转移: 我们根据这个状态机写了一个有if..else为主体的状态机程序,对每一个状态的转入转出做了实现: public class GumballMachine { final static ...
阅文时长| 2.32分钟字数统计| 3726.4字符 主要内容| 1、引言&背景2、解决方案3、声明与参考资料 『.Net FW上线报错:The OwinStartup attribute discovered in assembly 'AppName'.』 编写人 | SCscHero 编写时间 | 2022/2/18 PM8:20 文章类型| 系列完成度 | 已完成 座右铭每一个伟大的事业,都有一个微不足道的开始。 ..
今天给小伙伴讲讲ZooKeeper分布式锁的实现原理!有自己看法的也可以在评论区留言探讨,也可以转发关注下我以后会长期分享!什么是Zookeeper?Zookeeper 是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务、配置维护和命名服务等等。分布式锁 简介在我们进行单机应用开发,涉及并发同步的时候,我们往往采用synch..._为什么说zookeepr是天然的分布式锁
默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中。通常这个文件名类似libssl-dev。1、生成证书可以通过以下步骤生成一个简单的证书:首先,进入你想创建证书和私钥的目录,例如:cd /usr/local/nginx/_进入希望生成证书和私钥的目录,这里我们选择nginx.conf所
不论是日常的工作还是学习,现代年轻人在电脑屏幕时长数据能让人惊掉下巴,继而引发一系列身体不适的现象。小李也是久坐族中的一员,为了时刻提醒自己起来活动活动,我开发了一款基于PythonGU..._python 久坐提醒
【SequoiaDB|巨杉数据库】Undefined 和 NullUndefined 表示变量不含有值可以通过将变量的值设置为 null 来清空变量示例:cars=null;person=null;相关阅读(https://blog.csdn.net/lolitaAC/article/details/115331309)【SequoiaDB|巨杉数据库】SDB Shell 基本操作【SequoiaDB|巨杉数据库】Javascript语法【SequoiaDB|巨杉数据库】JavaS_sequoiadb null
符号种别编码说明sy__if0保留字 ifsy_then1保留字 thensy_else2保留字 elsesy_while3保留字 whilesy_begin4保留字 beginsy_do5保留字 dosy_end6保留字 enda7赋值语句semicolon8“:”e9布尔表达式jinghao10“#”S11语句L12复合语句tempsy15临时变量EA18B and(即布尔表达式中“B 且”)EO19。_实现一个小型编译程序
题目链接:点击打开链接题意不再赘述。下面来讲解一下第一个样例是怎么推导出答案的。2 31 1 1 1第一个数字和最后一个数字肯定是1,不需要关注它们。下面来看第二个数字(去掉首尾之后的第一个非零数字),也就是子集和为1的数目只有一个,很容易就知道答案中有一个1。然后再看第二个非零数字,也就是子集和为2的数目只有一个,我们已经知道了答案中有一个1,如果能够求出已知的答案能_hdu 多校 背包
Mybatis的一对多部门 -> 员工 : 一对多1、POJOpublic class Department { private Integer dId; private String dName; private List<Employee> employeeList; public class Employee { pri..._mybatis一对多自定义
在路由模式为history的情况下,需要在vue.config.js文件中配置公共路径(publicPath),通常附带着配置输出文件目录(outputDir)和静态资源文件目录名称(assetsDir),相关代码如下: module.exports ={ // '/dist/'表示打包后项目的名称 publicPath: process.env.NODE_ENV === 'production'? '/dist/': '/', // 公共路径(必须有的) outputDir: "_vuecli4 打包 baiping
1.模板引擎作用### 2.ThymeLeaf的使用:在SpringBoot框架中引入ThymeLeaf依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thy...