首页 > 系统相关 >Windows驱动开发学习记录-使用Inf安装过滤驱动时自动添加注册表相关内容

Windows驱动开发学习记录-使用Inf安装过滤驱动时自动添加注册表相关内容

时间:2023-05-26 16:15:00浏览次数:48  
标签:Windows 给定 ADDREG 注册表 驱动 USBFilter FLG

 

做过滤驱动时一般需要在相关class驱动里添加过滤信息,即LowerFilters或者UpperFilters,比如disk类的注册表当前信息,如下图:

一个常规的inf文件如下所示:

;
; USBFilter.inf
;

[Version]
Signature="$WINDOWS NT$"
Class=TOASTER
ClassGuid={B85B7C50-6A01-11d2-B841-00C04FAD5171}
Provider=%ManufacturerName%
DriverVer = 05/26/2023,14.57.39.49
CatalogFile=USBFilter.cat
PnpLockdown=1

;This template is supported for OS version 17763 (Windows 10 version 1809) and after.
;For Windows OS prior to Windows 10 1809 set DefaultDestDir = 12
[DestinationDirs]
DefaultDestDir = 12
USBFilter.DriverFiles  = 12            ;%windir%\system32\drivers

[DefaultInstall]
OptionDesc          = %ServiceDescription%
CopyFiles           = USBFilter.DriverFiles
AddReg = USBFilter.AddReg

[DefaultInstall.Services]
AddService          = %ServiceName%,,USBFilter.Service

[USBFilter.DriverFiles]
%DriverName%.sys


[USBFilter.Service]
DisplayName      = %ServiceName%
Description      = %ServiceDescription%
ServiceBinary    = %12%\%DriverName%.sys        ;%windir%\system32\drivers\
ServiceType      = 1                      ;SERVICE_FILE_SYSTEM_DRIVER
StartType        = 1                            ;
ErrorControl     = 1                            ;SERVICE_ERROR_NORMAL

[USBFilter.AddReg]
HKLM,SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318},UpperFilters,0x00010008,USBFilter


[SourceDisksNames]
1 = %DiskName%,,,""

[SourceDisksFiles]
USBFilter.sys  = 1,,

;[Manufacturer]
;%ManufacturerName%=Standard,NT$ARCH$




[Strings]
ManufacturerName="USB过滤驱动" ;TODO: Replace with your manufacturer name
DiskName="USBFilter Source Disk"
ServiceDescription      = "USB过滤驱动"
ServiceName             = "USBFilter"
DriverName              = "USBFilter"

其中【DefaultInstall】区段添加了 AddReg = USBFilter.AddReg,然后在 【USBFilter.AddReg】 区段添加了注册表的内容:

[USBFilter.AddReg]
HKLM,SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318},UpperFilters,0x00010008,USBFilter

其中倒数第二个参数一般用0x00010000,这个参数代表用后边指定的内容进行覆盖,但这里需要的是附加内容,所以用的0x00010008,然后右键点击安装就可以了。

安装好后如图所示:

 其中倒数第二个参数的意义如下:

flag
此可选的十六进制值,表示为系统定义的低单词和高字标志值的 ORed 位掩码,定义值条目和/或控制加载项注册表操作的数据类型。

每个标志的位掩码值如下所示:

0x00000001 (FLG_ADDREG_BINVALUETYPE)
给定值为“原始”数据。 (此值与 FLG_ADDREG_TYPE_BINARY.) 相同

0x00000002 (FLG_ADDREG_NOCLOBBER)
阻止给定值替换现有值条目的值。

0x00000004 (FLG_ADDREG_DELVAL)
从注册表中删除给定的子项,或者从指定的注册表子项中删除指定的值项名称

0x00000008 (FLG_ADDREG_APPEND)
将给定  追加到现有命名值项的值。 仅当同时设置FLG_ADDREG_TYPE_MULTI_SZ时,此标志才有效。 如果指定的字符串值已存在,则不会追加指定的字符串值。

0x00000010 (FLG_ADDREG_KEYONLY)
创建给定 的子项,但忽略任何提供的值条目名称和/或值。

0x00000020 (FLG_ADDREG_OVERWRITEONLY)
仅当给定子项中已存在指定的 value-entry-name 时,才重置为所提供的

0x00001000 (FLG_ADDREG_64BITKEY)
(Windows XP 和更高版本的 Windows.) 在 64 位注册表中进行更改。 如果未指定,则对本机注册表进行更改。

0x00002000 (FLG_ADDREG_KEYONLY_COMMON)
(Windows XP 和更高版本的 Windows.) 这与FLG_ADDREG_KEYONLY相同,但也适用于 INF DelReg 指令的 del-registry-section

0x00004000 (FLG_ADDREG_32BITKEY)
(Windows XP 和更高版本的 Windows.) 在 32 位注册表中进行更改。 如果未指定,则对本机注册表进行更改。

0x00000000 (FLG_ADDREG_TYPE_SZ)
给定的值项和/或值的类型 为 REG_SZ

 备注

此值是指定值项的默认类型,因此可以从外接程序注册表节中任何 reg-root= 行中省略标志值,该行对此类型的值项进行操作。

0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
给定的值项和/或值是注册表类型 REG_MULTI_SZ。 后面的值字段可以是用逗号分隔的字符串列表。 此规范不需要给定字符串值的任何 NULL 终止符。

0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
给定 的值条目名称和 /或  是注册表类型 REG_EXPAND_SZ

0x00010001 (FLG_ADDREG_TYPE_DWORD)
给定 的值条目名称和 /或  是注册表类型 REG_DWORD

0x00020001 (FLG_ADDREG_TYPE_NONE)
给定 的值条目名称和 /或  是注册表类型 REG_NONE

​​

 详细参见《INF AddReg 指令》

 

标签:Windows,给定,ADDREG,注册表,驱动,USBFilter,FLG
From: https://www.cnblogs.com/ImprisonedSoul/p/17434978.html

相关文章

  • 超低功耗段码LCD液晶显示屏驱动IC-VKL144A/B QFN48 超小体积封装,可完全替代PCF8551适
    VKL144A/B概述:VKL144A/B是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。QT921功能特点......
  • windows安装RabbitMQ及出现问题处理方法
    一、安装准备工具1.下载Eralng,下面链接已提供otp_win64_20.2.exe链接:https://pan.baidu.com/s/1lmvCMPVAV1Ba9UogCdQpZg提取码:x9m7注意:有32位版本 otp_win32_21.3.exe 根据win系统而定2.下载rabbitmq,下面链接已提供rabbitmq-server-3.7.4.exe链接:https://pan.baidu.com/s/1......
  • windows环境下 java 使用sqlite-jdbc 加载mod_spatialite用于地理空间处理
    由于项目需要,将sqlite中的数据使用空间函数(st_astext(),st_geomfromtext()等)处理空间坐标数据,这就需要加载mod_spatialite组件,从网上找了很多方法,也问了gpt,也从官网上(http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/java.html)找到了加载mod_spatialite组件的示......
  • windows WSL安装hedgedoc
    GitWSL似乎默认装好了git,用下面命令查一下可以查到root@DESKTOP-FTUL9EC:~#git--versiongitversion2.25.1Docker17.03.1orhigher看了官方文档,安装dockerengine需要如下ubuntu版本:UbuntuLunar23.04UbuntuKinetic22.10UbuntuJammy22.04(LTS)UbuntuF......
  • 关于开启windows自带虚拟机
    开启Windows自带虚拟机这次在工作中写了一个打印的工具,开始时并未考虑周全,用的.netfromwork4.8的框架,结果安装到win7的机器上,直接打不开了,而目前公司里已经找不到win7系统的电脑了,很多硬件已经不再支持win7,所以,需要安装一下虚拟机,进行测试。由于我的电脑是家庭版的所以......
  • nginx windows下重载配置失败
    正常操作命令是:cdC:\ProgramFiles\nginx&&nginx-sreload。但是把nginx安装为windows服务运行后,再执行重载就不好使了。会报错:nginx:[error]OpenEvent("Global\ngx_reload_4460")failed(5:Accessisdenied),即便是用管理员运行cmd权限也不够。 【解决办法】1.下载......
  • 如何让python程序在windows下开机启动
    说明简述:通过将启动脚本写入注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run来实现开机自启问题:这种开机启动比较奇怪,运行路径是cmd.exe的路径,所以执行需要自启的程序时,读取其他相对路径的文件会有错误解决:执行启动前,切一下目录启动脚本importos......
  • Windows——on-screen menus are locked怎么解除
    出现OSDLOCKED是菜单被锁的,具体的清除方法如下:1、如果OSD已锁定,请持续按住Menu按钮(最左边第一个)10秒钟就可以解除锁定OSD。2、如果OSD未锁定,请持续按住Menu按钮10秒钟就可以锁定OSD。 简介:OSD是OnScreenDisplay的缩写,即屏幕菜单式调节显示。是在显示器......
  • windows server2016 操作系统修改默认远程端口
    一、需求   远程端口,windows默认的3389.linux的22,这种都是知名端口,如果IP地址暴露,很可能会被攻击,这时候就需要更改端口号。二、操作步骤2.1打开注册表   快捷键WIN+R,命令行窗口输入regedit2.2进入以下路径  这里是默认端口,修改为自己除1024以后,以及未被......
  • CS9027兼容DRV8812,CS9029兼容DRV8841,双通道H桥电机驱动芯片
    CS9027C为打印机和其它电机一体化应用提供一种双通道集成电机驱动方案。CS9027C有两路H桥驱动,每个H桥可提供最大输出电流2A(在24V和Ta=25C适当散热条件下),可驱动两个刷式直流电机,或者一个双极步进电机,或者螺线管或者其它感性负载。双极步进电机可以以整步、2细分、4细分运行,或者......