CN102750164B - 一种自动配置设备驱动程序的方法 - Google Patents
一种自动配置设备驱动程序的方法 Download PDFInfo
- Publication number
- CN102750164B CN102750164B CN201210171202.3A CN201210171202A CN102750164B CN 102750164 B CN102750164 B CN 102750164B CN 201210171202 A CN201210171202 A CN 201210171202A CN 102750164 B CN102750164 B CN 102750164B
- Authority
- CN
- China
- Prior art keywords
- equipment
- registration table
- driver
- registry
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种自动配置设备驱动程序的方法。本发明中,先请求操作系统在发生注册表访问操作时发出通知,并能够在有通知发生时筛选出属于设备驱动程序配置活动的通知。然后,从筛选出的通知中获取当前待进行驱动程序配置的设备在注册表中对应的设备实例路径,如果该设备实例路径下尚未存在配置信息、并且注册表中存在同类型设备的配置信息,则将注册表中同类型设备的配置信息套用至当前待进行驱动程序配置活动的设备上。应用本发明,可提高设备驱动程序的配置效率。
Description
技术领域
本发明涉及设备驱动程序配置技术,特别涉及一种自动配置设备驱动程序的方法。
背景技术
在学校机房或网吧等公共场所,往往部署着数量庞大的有盘或无盘工作站。并且,这些工作站通常都具有USB插口,用以连接为其配备的USB设备(例如键盘、鼠标等)。
当USB设备首次连接至工作站的USB插口时,工作站运行的Windows操作系统会识别该USB设备、并安装该USB设备的驱动程序。
但是,由于Windows操作系统自身设计的原因,当某台工作站的USB设备从该工作站的一个USB插口换插至该工作站的另一个USB插口时,该工作站的Windows操作系统会再次识别该USB设备、并再次安装该USB设备的驱动程序。
此外,由于有盘和无盘的工作站均有重启还原的特性,因此工作站的Windows操作系统在每次重启后均会重新识别该USB设备、并重新安装该USB设备的驱动程序。
如上可见,只要是更换过USB设备在工作站的USB插口,无论工作站是否经过重启,都会导致Windows操作系统重新对USB设备进行识别以及驱动程序安装。这种识别和安装过程通常需要花费数秒甚至数十秒的时间,并且USB设备在识别和安装完成之前无法使用。
为了避免该问题,现有技术往往是在有盘工作站进行母盘复刻、或在无盘工作站进行镜像上传之前,对使用的每一种USB设备均在工作站的所有USB插口上逐一进行识别和安装。这显然是件耗时耗力并且流程繁琐的工作。
可见,对于拥有大量工作站的机构或营业场所来说,上述问题都会明显增加系统部署的工作量。
发明内容
有鉴于此,本发明提供了一种配置过程快、对用户无干扰、配置结果即时生效的自动配置设备驱动程序的方法。该方法包括步骤:
请求操作系统在发生注册表访问操作时发出注册表访问操作通知,并在接收所述操作系统发出的注册表访问操作通知后执行如下步骤:
a、判断所述注册表访问操作通知所包含的操作是否属于设备驱动程序配置活动;
b、当所述注册表访问操作通知所包含的操作是属于设备驱动程序配置活动时,从所述注册表访问操作通知中获取当前待进行驱动程序配置的设备在注册表中对应的设备实例路径;
c、检查注册表在所述设备实例路径下是否已经存在配置信息;
d、当注册表在所述设备实例路径下尚未存在配置信息时,检查注册表中是否存在可套用的同类型设备的配置信息;
e、当注册表中存在可套用的同类型设备的配置信息时,将注册表中同类型设备的配置信息套用至所述待进行驱动程序配置的设备。
优选地,所述请求操作系统在发生注册表访问操作时发出注册表访问操作通知的步骤包括:通过调用操作系统的内核系统函数,向操作系统登记一注册表访问操作通知的回调例程。
优选地,所述注册表访问操作通知中携带有回调通知参数,并且该回调通知参数中包括注册表操作类型和注册表操作路径。
优选地,所述步骤a包括:
-判断所述回调通知参数中的注册表操作类型是否为预建立注册表键;
-判断所述回调通知参数中的注册表操作路径是否包含设备实例路径;
若所述回调通知参数中的注册表操作类型为预建立注册表键、且所述回调通知参数中的注册表操作路径包含设备实例路径,则确定所述注册表访问操作通知所包含的操作属于设备驱动程序配置活动;否则,确定所述注册表访问操作通知所包含的操作不属于设备驱动程序配置活动。
优选地,所述步骤b包括:通过所述注册表操作路径获得所述待进行驱动程序配置的设备在注册表中对应的设备实例路径。
优选地,所述步骤c和所述步骤d检查的配置信息至少包括以注册表键值项形式存储的Class、ClassGUID、ConfigFlags、Service和Driver。
优选地,所述步骤e包括:
e1、将同类型设备的注册表键值项Class、ClassGUID、ConfigFlags和Service,复制到所述待进行驱动程序配置的设备在注册表中对应的设备实例路径下;
e2、生成一个新的驱动类实例关键字作为注册表键值项Driver的内容、并设置到所述待进行驱动程序配置的设备在注册表中对应的设备实例路径下;
e3、将同类型设备的注册表键值项Driver所指向的在注册表中的驱动类实例配置信息,复制到上述新生成的驱动类实例关键字所指向的在注册表中的驱动类实例路径下。
由上述技术方案可见,本发明请求操作系统在发生注册表访问操作时发出通知,并能够在有通知发生时筛选出属于设备驱动程序配置活动的通知。然后,从筛选出的通知中获取当前待进行驱动程序配置的设备在注册表中对应的设备实例路径,如果该设备实例路径下尚未存在配置信息、并且注册表中存在同类型设备的配置信息,则将注册表中同类型设备的配置信息套用至当前待进行驱动程序配置活动的设备上。
通过本发明,可自动对系统中相同类型的设备进行驱动程序配置,并且配置过程快、对用户无干扰、配置结果即时生效。特别对于在学校机房或网吧等公共场所广泛使用的USB键盘和鼠标,应用本发明可避免部署时需要在工作站所有USB插口上逐一进行识别和安装的不便,每种USB设备只需在任意一个插口进行过识别和安装,即可全插口可用。
附图说明
图1为本发明实施例中自动配置设备驱动程序的方法的一示例性流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图1为本发明实施例中自动配置设备驱动程序的方法的一示例性流程图。如图1所示,本实施例中自动配置设备驱动程序的方法可以由一个底层内核模式驱动程序来执行,例如,该底层内核模式驱动程序可命名为AutoDeviceConfig.sys,且该方法包括:
步骤100,底层内核模式驱动程序请求操作系统在发生注册表访问操作时发出注册表访问操作通知。
本步骤中,底层内核模式驱动程序可以调用操作系统的内核系统函数,向操作系统登记一注册表访问操作通知的回调例程。例如,对于Windows操作系统来说,可供底层内核模式驱动程序调用的内核系统函数可以选为CmRegisterCallback或CmRegisterCallbackEx,底层内核模式驱动程序注册的回调例程可以命名为OnRegistryCallback。
此后,底层内核模式驱动程序在接收到操作系统发出的注册表访问操作通知之后,即可开始执行包含步骤101~105的流程。
其中,注册表访问操作通知中可以携带有回调通知参数,并且该回调通知参数中包括注册表操作类型和注册表操作路径。
步骤101,底层内核模式驱动程序判断上述注册表访问操作通知所包含的操作是否属于设备驱动程序配置活动,如果属于则执行步骤102,如果不属于则结束。
本步骤中,判断该注册表访问操作通知所包含的操作是否属于设备驱动程序配置活动至少可以使用如下筛选条件:
回调通知参数中的注册表操作类型是否为预建立注册表键,其中,预建立注册表键可以为RegNtPreCreateKey或RegNtPreCreateKeyEx;
以及,回调通知参数中的注册表操作路径是否包含设备实例路径,其中设备实例路径的形式可以为“<Enumerator>\<DeviceID>\<InstanceID>”。
其中,上述设备实例路径中的<Enumerator>、<DeviceID>和<UniqueID>依次为设备枚举器、设备ID和设备实例惟一ID,三者联合起来以标记特定的设备实例路径。
如果所述回调通知参数中的注册表操作类型为预建立注册表键、且所述回调通知参数中的注册表操作路径包含设备实例路径,则可判断该注册表访问操作通知所包含的操作属于设备驱动程序配置活动。
步骤102,底层内核模式驱动程序从注册表访问操作通知中获取当前待进行驱动程序配置的设备在注册表中对应的设备实例路径,然后执行步骤103。
本步骤中,可以由回调通知参数中的注册表操作路径获得当前待进行驱动程序配置的设备在注册表中对应的设备实例路径。
步骤103,底层内核模式驱动程序检查上述在注册表中对应的设备实例路径下是否已经存在配置信息,如果不存在则执行步骤104,如果存在则结束。
其中,本步骤所检查的设备实例路径下的配置信息以注册表键值项的形式存储,且需要检查的注册表键值项可以包括Class、ClassGUID、ConfigFlags、Service和Driver;若检查到上述注册表键值项Class、ClassGUID、ConfigFlags、Service和Driver全部存在,则确定当前待进行驱动程序配置的设备已经被配置,即已经存在配置信息。
上述注册表键值项Class为设备类名称;
上述注册表键值项ClassGUID为设备类的全局惟一标识符;
上述注册表键值项ConfigFlags为设备的配置状态标记;
上述注册表键值项Service为设备的内核模式驱动程序服务名称;
上述注册表键值项Driver为设备的驱动类实例关键字,记为<DriverClassInstanceKey>,对应指向的在注册表中的驱动类实例路径为“\Registry\Machine\System\CurrentControlSet\Control\Class\<DriverClassInstanceKey>”;更具体地,驱动类实例关键字<DriverClassInstanceKey>可进一步描述为“<ClassGUID>\<Index>”的形式,其中<ClassGUID>为设备类的全局惟一标识符,而<Index>为一个取值区间从0000到9999的4位定宽整数。
步骤104,底层内核模式驱动程序检查注册表中是否存在可套用的同类型设备的配置信息,如果存在则执行步骤105,如果不存在则结束。
其中,本步骤所述的可套用配置信息的同类型设备是指:
与当前待进行驱动程序配置的设备相比,具有相同的设备特性、且配置信息可被当前待进行驱动程序配置的设备套用;
以及,在注册表中对应的设备实例路径具有相同的<Enumerator>和<DeviceID>、但<InstanceID>不同。
本步骤所检查的同类型设备的配置信息以注册表键值项的形式存储,且需要检查的注册表键值项可以包括Class、ClassGUID、ConfigFlags、Service和Driver(与步骤103中提及的注册表键值项相同);若检查到上述注册表键值项Class、ClassGUID、ConfigFlags、Service和Driver全部存在,则确定当前待进行驱动程序配置的设备可以从该同类型设备中套用配置信息。
步骤105,底层内核模式驱动程序将注册表中同类型设备的配置信息套用至当前待进行驱动程序配置的设备,然后结束。
本步骤中的具体处理过程可以包括:
a、将同类型设备的注册表键值项Class、ClassGUID、ConfigFlags和Service,复制到当前待进行驱动程序配置的设备在注册表中对应的设备实例路径下;
b、生成一个新的驱动类实例关键字<DriverClassInstanceKey>作为注册表键值项Driver的内容、并设置到当前待进行驱动程序配置的设备在注册表中对应的设备实例路径下;
c、将同类型设备的注册表键值项Driver所指向的在注册表中的驱动类实例配置信息,复制到上述新生成的驱动类实例关键字<DriverClassInstanceKey>所指向的在注册表中的驱动类实例路径下。
另需要说明的是,图1所示的步骤100可以仅执行一次,而当每次接收到操作系统发出的注册表访问操作通知后,均直接执行步骤101至105。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种自动配置设备驱动程序的方法,其特征在于包括步骤:
向操作系统请求在发生注册表访问操作时发出注册表访问操作通知,并在接收所述操作系统发出的注册表访问操作通知后执行如下步骤:
a、判断所述注册表访问操作通知所包含的操作是否属于设备驱动程序配置活动;
b、当所述注册表访问操作通知所包含的操作是属于设备驱动程序配置活动时,从所述注册表访问操作通知中获取当前待进行驱动程序配置的设备在注册表中对应的设备实例路径;
c、检查注册表在所述设备实例路径下是否已经存在配置信息;
d、当注册表在所述设备实例路径下尚未存在配置信息时,检查注册表中是否存在可套用的同类型设备的配置信息;其中,所述同类型设备与当前待进行驱动程序配置的设备相比,具有相同的设备特性、且配置信息可被当前待进行驱动程序配置的设备套用;
e、当注册表中存在可套用的同类型设备的配置信息时,将注册表中同类型设备的配置信息套用至所述待进行驱动程序配置的设备;
其中,所述步骤c和所述步骤d检查的配置信息至少包括以注册表键值项形式存储的Class、ClassGUID、ConfigFlags、Service和Driver,注册表键值项Class为设备类名称、注册表键值项ClassGUID为设备类的全局唯一标识符、注册表键值项ConfigFlags为设备的配置状态标记、注册表键值项Service为设备的内核模式驱动程序服务名称、Driver为设备的驱动类实例关键字;
其中,所述步骤e将注册表中同类型设备的配置信息套用至所述待进行驱动程序配置的设备包括:
e1、将同类型设备的注册表键值项Class、ClassGUID、ConfigFlags和Service,复制到所述待进行驱动程序配置的设备在注册表中对应的设备实例路径下;
e2、生成一个新的驱动类实例关键字作为注册表键值项Driver的内容、并设置到所述待进行驱动程序配置的设备在注册表中对应的设备实例路径下;
e3、将同类型设备的注册表键值项Driver所指向的在注册表中的驱动类实例配置信息,复制到上述新生成的驱动类实例关键字所指向的在注册表中的驱动类实例路径下。
2.如权利要求1所述的方法,其特征在于,所述向操作系统请求在发生注册表访问操作时发出注册表访问操作通知的步骤包括:通过调用操作系统的内核系统函数,向操作系统登记一注册表访问操作通知的回调例程。
3.如权利要求2所述的方法,其特征在于,所述注册表访问操作通知中携带有回调通知参数,并且该回调通知参数中包括注册表操作类型和注册表操作路径。
4.如权利要求3所述的方法,其特征在于,所述步骤a包括步骤:
判断所述回调通知参数中的注册表操作类型是否为预建立注册表键;
判断所述回调通知参数中的注册表操作路径是否包含设备实例路径;
若所述回调通知参数中的注册表操作类型为预建立注册表键、且所述回调通知参数中的注册表操作路径包含设备实例路径,则确定所述注册表访问操作通知所包含的操作属于设备驱动程序配置活动;否则,确定所述注册表访问操作通知所包含的操作不属于设备驱动程序配置活动。
5.如权利要求3所述的方法,其特征在于,所述步骤b包括步骤:
通过所述注册表操作路径获得所述待进行驱动程序配置的设备在注册表中对应的设备实例路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210171202.3A CN102750164B (zh) | 2012-05-29 | 2012-05-29 | 一种自动配置设备驱动程序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210171202.3A CN102750164B (zh) | 2012-05-29 | 2012-05-29 | 一种自动配置设备驱动程序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102750164A CN102750164A (zh) | 2012-10-24 |
CN102750164B true CN102750164B (zh) | 2016-01-20 |
Family
ID=47030383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210171202.3A Active CN102750164B (zh) | 2012-05-29 | 2012-05-29 | 一种自动配置设备驱动程序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102750164B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016127410A1 (zh) * | 2015-02-13 | 2016-08-18 | 华为技术有限公司 | 一种应用属性参数的配置方法、装置及终端 |
CN104731615A (zh) * | 2015-03-23 | 2015-06-24 | 小米科技有限责任公司 | 智能设备配置方法及装置 |
CN105631318B (zh) * | 2015-12-23 | 2019-04-05 | 珠海豹趣科技有限公司 | 一种注册表键值的获取方法及装置 |
CN107665131B (zh) * | 2017-09-21 | 2021-02-12 | 成都领沃网络技术有限公司 | 一种无盘环境下客户端硬件驱动自动快速预装方法及客户端 |
CN110007973B (zh) * | 2019-03-26 | 2021-07-16 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN110347628A (zh) * | 2019-07-04 | 2019-10-18 | 江苏江波信息科技股份有限公司 | 一种在windows操作系统中使usb设备即插即用的方法 |
CN112068890A (zh) * | 2020-08-13 | 2020-12-11 | 中国电子科技集团公司第三十研究所 | 一种计算机外接设备控制方法、系统及存储介质 |
CN112684914B (zh) * | 2020-12-31 | 2021-11-19 | 深圳雷柏科技股份有限公司 | 基于内核驱动实现键鼠功能修改的方法及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834920A (zh) * | 2006-04-30 | 2006-09-20 | 北京飞天诚信科技有限公司 | 一种usb设备过滤驱动程序的自动安装方法 |
CN101593114A (zh) * | 2008-05-30 | 2009-12-02 | 深圳艾科创新微电子有限公司 | 一种uvc应用自动替换系统驱动的装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870567B2 (en) * | 2005-04-25 | 2011-01-11 | International Business Machines Corporation | Configuring a device using information from a device table |
-
2012
- 2012-05-29 CN CN201210171202.3A patent/CN102750164B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1834920A (zh) * | 2006-04-30 | 2006-09-20 | 北京飞天诚信科技有限公司 | 一种usb设备过滤驱动程序的自动安装方法 |
CN101593114A (zh) * | 2008-05-30 | 2009-12-02 | 深圳艾科创新微电子有限公司 | 一种uvc应用自动替换系统驱动的装置 |
Non-Patent Citations (1)
Title |
---|
QoS驱动的服务动态替换方法;宋仲凯 等;《计算机应用与软件》;20120131;第29卷(第1期);第27-30、99页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102750164A (zh) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102750164B (zh) | 一种自动配置设备驱动程序的方法 | |
US7765460B2 (en) | Out-of-band change detection | |
US9413597B2 (en) | Method and system for providing aggregated network alarms | |
US20080098109A1 (en) | Incident resolution | |
US7984334B2 (en) | Call-stack pattern matching for problem resolution within software | |
EP1962538B1 (en) | Method for managing terminal device | |
US20140089494A1 (en) | Managing compliance across information technology components | |
US20130179461A1 (en) | Proactive Monitoring of Database Servers | |
US20090327630A1 (en) | Software configuration item back-up facility | |
US11343368B2 (en) | Enhanced system and method for fully automated reverse logistics platform | |
CN103607297A (zh) | 一种计算机集群系统的故障处理方法 | |
CN104170323A (zh) | 基于网络功能虚拟化的故障处理方法及装置、系统 | |
US9634885B2 (en) | Control target flow specifying method and control target flow specifying device | |
CN104718533A (zh) | 企业设备的强健硬件故障管理系统、方法及架构 | |
US11544052B2 (en) | Tenant declarative deployments with release staggering | |
EP2161647A1 (en) | Power-on protection method, module and system | |
CN104199869A (zh) | 一种业务批处理方法、业务服务器以及系统 | |
CN106325901A (zh) | 软件版本管理方法及系统 | |
CN109922079B (zh) | 基于区块链的业务代理方法和装置 | |
WO2019034095A1 (zh) | 软件处理方法、装置、电子设备及计算机可读存储介质 | |
CN105516386A (zh) | 一种服务器管理系统mac地址冲突检测和处理方法及系统 | |
US8601010B1 (en) | Application management database with personnel assignment and automated configuration | |
CN103618634A (zh) | 集群中自动发现节点的方法 | |
CN100449495C (zh) | 一种辅助cpu对芯片进行驱动的系统及方法 | |
CN105025179A (zh) | 呼叫中心座席的监控方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |