CN107329916A - 一种usb设备控制方法、装置及计算设备 - Google Patents

一种usb设备控制方法、装置及计算设备 Download PDF

Info

Publication number
CN107329916A
CN107329916A CN201710442809.3A CN201710442809A CN107329916A CN 107329916 A CN107329916 A CN 107329916A CN 201710442809 A CN201710442809 A CN 201710442809A CN 107329916 A CN107329916 A CN 107329916A
Authority
CN
China
Prior art keywords
usb device
usb
operating system
list
equipment
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.)
Granted
Application number
CN201710442809.3A
Other languages
English (en)
Other versions
CN107329916B (zh
Inventor
刘昌辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING TECHNOLOGY Co Ltd
Original Assignee
BEIJING TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIJING TECHNOLOGY Co Ltd filed Critical BEIJING TECHNOLOGY Co Ltd
Priority to CN201710442809.3A priority Critical patent/CN107329916B/zh
Publication of CN107329916A publication Critical patent/CN107329916A/zh
Application granted granted Critical
Publication of CN107329916B publication Critical patent/CN107329916B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4014Identity check for transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明公开了一种USB设备控制方法、装置及计算设备,计算设备运行有第一操作系统,并驻留有使用USB设备控制方法的转换模块,使得针对第二操作系统设计的USB应用能在第一操作系统中运行,该方法包括:轮询USB设备管理器的设备事件;当接收到设备插入事件时,创建与该事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表;遍历该列表,向与第二操作系统兼容的注册表中注册USB设备;依次创建USB设备对象的物理设备对象和功能设备对象,并将功能设备对象附加到物理设备对象之上;创建符号链接以指向USB设备在第二操作系统兼容内核中的设备名称;发送与第二操作系统兼容的广播消息通知已插入USB设备。

Description

一种USB设备控制方法、装置及计算设备
技术领域
本发明涉及计算机技术领域,特别涉及一种USB设备控制方法、装置及计算设备。
背景技术
随着网络经济的飞速发展,电子支付环境的改善以及新兴购物渠道的建立,网上银行交易量越来越大,银行客户对网上银行的依赖也越来越强。在这样的趋势和潮流下,各大银行相继开发出相应的网银客户端及网页版网银的网银控件,以便客户能够更好地通过网上银行进行交易。
然而,由于Windows系统的绝对垄断地位,各大银行所开发的网银客户端及网银控件是完全基于Windows系统实现的,无法兼容于其他操作系统。比如,对于Linux系统而言,虽然通过Wine兼容层,Linux系统可以运行某些银行的适于Windows系统的网银客户端,但是Wine兼容层不能识别如U盾之类的USBKey设备,也就不能利用USBKey设备来安全登录和安全使用网银,从而大幅度降低了网银交易的安全性,容易出现安全漏洞而遭受网络攻击。因此,需要一种新的USB设备控制方法来优化上述处理过程。
发明内容
为此,本发明提供一种USB设备控制的技术方案,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种USB设备控制方法,适于在运行第一操作系统的计算设备中执行,该计算设备中驻留有转换模块,转换模块使得针对第二操作系统设计的USB应用能够在第一操作系统中运行,USB设备控制方法由转换模块使用以便USB应用能够控制耦接到计算设备的USB设备,该方法包括如下步骤:首先,轮询USB设备管理器的设备事件;当接收到的设备事件为设备插入事件时,创建与设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表;遍历全局USB设备对象列表,向与第二操作系统兼容的注册表中注册USB设备;依次创建USB设备对象的物理设备对象和功能设备对象,并将功能设备对象附加到物理设备对象之上;创建符号链接以指向USB设备在第二操作系统兼容内核中的设备名称;发送与第二操作系统兼容的广播消息通知已插入USB设备。
可选地,在根据本发明的USB设备控制方法中,创建与设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表的步骤包括:枚举所有已插入的USB设备得到第一USB设备列表;遍历第一USB设备列表,动态创建与设备插入事件对应的USB设备关联的USB设备对象;复制USB设备的设备描述符信息,将USB设备对象追加至全局USB设备列表的末尾,以更新全局USB设备列表。
可选地,在根据本发明的USB设备控制方法中,还包括:响应USB应用发出的I/O请求;将I/O请求转换为对应的IRP请求,IRP请求兼容于第二操作系统;将IRP请求发送给USB设备的功能设备对象来读取数据,以控制USB设备。
可选地,在根据本发明的USB设备控制方法中,还包括:当接收到的设备事件为设备移除事件时,获取与设备移除事件对应的USB设备关联的USB设备对象;对该USB设备对象执行清理操作,并发送与第二操作系统兼容的广播消息通知已移除USB设备。
可选地,在根据本发明的USB设备控制方法中,取与设备移除事件对应的USB设备关联的USB设备对象的步骤包括:枚举所有已插入的USB设备以更新第一USB设备列表;遍历全局USB设备列表以查找更新后的第一USB设备列表中不存在的USB设备对象,将该USB设备对象作为与设备移除事件对应的USB关联的USB设备对象。
可选地,在根据本发明的USB设备控制方法中,对该USB设备对象执行清理操作的步骤包括:卸载该USB设备对象在第二操作系统兼容的注册表中注册的信息;删除该USB设备对象对应的符号链接;终止IRP请求;依次删除该USB设备对象的功能设备对象和物理设备对象;从全局USB设备列表移除该USB设备对象并将其删除。
根据本发明的又一个方面,提供一种USB设备控制装置,该装置适于驻留在运行第一操作系统的计算设备中,该计算设备中驻留有转换模块,转换模块使得针对第二操作系统设计的USB应用能够在第一操作系统中运行,USB设备控制装置由转换模块使用以便USB应用能够控制耦接到计算设备的USB设备,该装置包括轮询单元、更新单元、注册单元、第一创建单元、第二创建单元和通知单元。其中,轮询单元适于轮询USB设备管理器的设备事件;更新单元适于当接收到的设备事件为设备插入事件时,创建与设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表;注册单元适于遍历全局USB设备对象列表,向与第二操作系统兼容的注册表中注册USB设备;第一创建单元适于依次创建USB设备对象的物理设备对象和功能设备对象,并将功能设备对象附加到物理设备对象之上;第二创建单元适于创建符号链接以指向USB设备在第二操作系统兼容内核中的设备名称;通知单元适于发送与第二操作系统兼容的广播消息通知已插入USB设备。
可选地,在根据本发明的USB设备控制装置中,更新单元进一步适于:枚举所有已插入的USB设备得到第一USB设备列表;遍历第一USB设备列表,动态创建与设备插入事件对应的USB设备关联的USB设备对象;复制USB设备的设备描述符信息,将USB设备对象追加至全局USB设备列表的末尾,以更新全局USB设备列表。
可选地,在根据本发明的USB设备控制装置中,还包括控制单元,适于:响应USB应用发出的I/O请求;将I/O请求转换为对应的IRP请求,IRP请求兼容于第二操作系统;将IRP请求发送给USB设备的功能设备对象来读取数据,以控制USB设备。
可选地,在根据本发明的USB设备控制装置中,还包括清理单元,适于:当接收到的设备事件为设备移除事件时,获取与设备移除事件对应的USB设备关联的USB设备对象;对该USB设备对象执行清理操作。
可选地,在根据本发明的USB设备控制装置中,通知单元还适于:发送与第二操作系统兼容的广播消息通知已移除USB设备。
可选地,在根据本发明的USB设备控制装置中,清理单元进一步适于:枚举所有已插入的USB设备以更新第一USB设备列表;遍历全局USB设备列表以查找更新后的第一USB设备列表中不存在的USB设备对象,将该USB设备对象作为与设备移除事件对应的USB关联的USB设备对象。
可选地,在根据本发明的USB设备控制装置中,清理单元进一步适于:卸载该USB设备对象在第二操作系统兼容的注册表中注册的信息;删除该USB设备对象对应的符号链接;终止IRP请求;依次删除该USB设备对象的功能设备对象和物理设备对象;从全局USB设备列表移除该USB设备对象并将其删除。
根据本发明的又一个方面,提供一种计算设备,包括根据本发明的USB设备控制装置。
根据本发明的又一个方面,提供一种计算设备,包括一个或多个处理器,存储器以及一个或多个程序,其中一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据本发明的USB设备控制方法中的指令。
根据本发明的又一个方面,还提供一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,指令当由计算设备执行时,使得计算设备执行根据本发明的USB设备控制方法。
根据本发明的USB设备控制的技术方案,当接收到设备插入事件时,创建与该事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表,遍历该列表并对该USB设备对象进行初始化处理,发送广播消息通知已插入USB设备,而在USB设备插入后,可响应USB应用发出的I/O请求,将I/O请求转换为IRP请求发送给USB设备对象以控制USB设备。此外,当接收到设备移除事件时,获取与该事件对应的USB设备关联的USB设备对象,对该USB设备对象执行清理操作,并发送广播消息通知已移除USB设备。在以上技术方案中,USB设备控制的处理过程是在运行第一操作系统的计算设备中执行的,该计算设备中驻留有转换模块,该转换模块使得针对第二操作系统设计的USB应用能够在第一操作系统中运行,从而在初始化USB设备对象时,先向与第二操作系统兼容的注册表中注册该USB设备,依次创建USB设备对象的物理设备对象和功能设备对象,并将功能设备对象附加到物理设备对象之上,再创建符号链接以指向USB设备在第二操作系统兼容内核中的设备名称。同时,为了保证针对第二操作系统设计的USB应用更好地控制USB设备,发送的广播消息及转换得到的IRP请求均兼容于第二操作系统,最终使得适用于第二操作系统的USB应用可以在第一操作系统中控制对应的USB设备,提高了USB应用及USB设备的兼容性。特别是将这一技术方案应用到网银安全领域时,比如就针对Windows操作系统开发的网银客户端及与其对应的USBKey设备而言,基于上述USB设备控制方案,可以在Linux系统中识别该USBKey设备,并利用USBKey设备安全登录网银客户端和安全使用网银,一方面提升了网银客户端及USBKey设备的系统兼容性,另一方面保证了网银交易的安全性,大幅度降低因出现安全漏洞而遭受网络攻击的可能性。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明的一个实施例的计算设备100的结构框图;
图2示出了根据本发明的一个实施例的USB设备控制方法200的流程图
图3示出了本发明一个实施例的USB设备控制装置300的示意图;
图4示出了本发明又一个实施例的USB设备控制装置400的示意图;以及
图5示出了本发明又一个实施例的USB设备控制装置500的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是示例计算设备100的框图。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备被配置为执行根据本发明的USB设备控制方法200,并将计算设备100中运行的操作系统120作为第一操作系统。应用122包括根据本发明的USB设备控制装置300。应用122还包括根据本发明的USB应用180和转换模块190,转换模块190使得针对第二操作系统设计的USB应用180能够在第一操作系统中运行,USB设备控制方法200由转换模块190使用以便USB应用180能够控制耦接到计算设备100的USB设备,该USB设备可通过I/O端口158与计算设备100耦接。
图2示出了根据本发明一个实施例的USB设备控制方法200的流程图。USB设备控制方法200适于在计算设备100(例如图1所示的计算设备100)中执行。在该实施方式中,第一操作系统为Linux系统,转换模块190为Wine层,第二操作系统为Windows系统,USB应用180为一个网银客户端程序,USB设备为与该USB应用180对应的USBKey设备。在执行USB设备控制方法200前,需要进行libudev库和libusb库的初始化,libudev库是Linux系统的设备枚举和动态监听设备热插拔的用户态开发库,而libusb库是Linux系统上用户态的USB设备读写控制开发库,而预先对这2个开发库进行初始化以便在方法200中实现USB设备的插入、控制和移除。
如图2所示,方法200始于步骤S210。在步骤S210中,轮询USB设备管理器的设备事件。根据本发明的一个实施例,在轮询USB设备管理器的设备事件时,若有USB设备插入计算设备,则会接收到设备插入事件,而若有USB设备从计算设备移除,则会接收到设备移除事件。
当接收到的设备时间为设备插入事件时,执行步骤S220,创建与设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表。根据本发明的一个实施例,可以通过以下方式来更新全局USB设备对象列表。在该实施方式中,首先枚举所有已插入的USB设备得到第一USB设备列表,再遍历第一USB设备列表,动态创建与设备插入事件对应的USB设备关联的USB设备对象。当第一操作系统为Linux系统时,可通过libusb库来枚举所有已插入的USB设备得到第一USB设备列表,此时得到的第一USB设备列表即为libusb设备列表。对于USB设备而言,可以通过定义相应的UsbDevice结构体来对其进行描述,UsbDevice结构体具体如下所示:
struct UsbDevice
{
char type;
struct list entry;
unsigned short vid;
unsigned short pid;
unsigned short max_packet_size;
unsigned char interface_count;
unsigned char interface_number;
unsigned char endpoint_in;
unsigned char endpoint_out;
libusb_device*dev;
libusb_device_handle*handle;
struct libusb_transfer*transfer;
DEVICE_OBJECT*pdo;
DEVICE_OBJECT*fdo;
WCHAR link_name[256];
};
在遍历libusb设备列表时还需注意,只有在设备插入事件对应的USB设备为USBHID设备时,才动态创建与该USB设备关联的USB设备对象。在该实施方式中,插入的USB设备为USB HID设备,则创建对应的USB设备对象,并复制该USB设备的设备描述符信息,将设备描述符信息相应地填充到USB设备对象的具体实例中。其中,设备描述符信息一般包括USB协议版本号、设备类型、端点0的最大包大小、供应商识别码和产品识别码、设备版本号、供应商字符串索引、产品字符串索引、设备序列号索引以及可能的配置数等。比如,上述UsbDevice结构体中的type参数,就是对应于USB设备的设备类型,若USB设备为未知设备,则type设置为0,若USB设备为USB HID设备,则type设置为1,若USB设备为USB大容量存储设备,则type设置为2。最后,将创建好的USB设备对象追加至全局USB设备列表的末尾,以更新全局USB设备列表。这里的全局USB设备列表可利用代码static struct list g_device_list=LIST_INIT(g_device_list)预先定义好,每当有新的USB设备插入时,就会枚举所有的USB设备,对于没有缓存到全局USB设备列表g_device_list的新设备,将其添加到该列表的末尾。以上更新全局USB设备对象列表的关键性代码如下所示:
static int get_usb_type(libusb_device*dev)
{
int i,j,ret=TYPE_UNKNOWN;
int nb_ifaces=0;
struct libusb_config_descriptor*conf_desc=NULL;
ibusb_get_config_descriptor(dev,0,&conf_desc);
if(NULL==conf_desc){
TRACE("failed to get usb config descriptor\n");
return 0;}
nb_ifaces=conf_desc->bNumInterfaces>0?1:0;
for(i=0;i<nb_ifaces;i++){
for(j=0;j<conf_desc->interface[i].num_altsetting;j++){
if(LIBUSB_CLASS_HID==conf_desc->interface[i].altsetting[j].bInterfaceCl
ass&&0==conf_desc->interface[i].altsetting[j].bInterfaceSubClass&&0==
conf_desc->interface[i].altsetting[j].bInterfaceProtocol){
ret=TYPE_HID;
goto done;}}}
done:
libusb_free_config_descriptor(conf_desc);
return ret;
}
完成全局USB列表的更新后,进入步骤S230,遍历全局USB设备对象列表,向与第二操作系统兼容的注册表中注册该USB设备。根据本发明的一个实施例,由于第二操作系统是Windows系统,因此在注册USB设备时,需要按照Windows系统内核名字空间规范来实施。对上述USB设备而言,其在Windows系统内核的设备名称格式是\Device\USB#xxxxxxxx&yyyyyyyy,其中,xxxxxxxx是USB设备对应的驱动对象的16进制表示,yyyyyyyy是USB设备的物理设备对象的16进制表示。在向与Windows系统兼容的注册表中注册插入的USB设备时,先要在注册表的目录“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB”下,新建一个子目录“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_xxxx&Pid_yyyy”,这里的xxxx是USB设备的供应商识别码的16进制表示,yyyy是USB设备的产品识别码的16进制表示。接着,在目录“HKEY_LOCAL_MACHINE\SYSTEM\Current ControlSet\Enum\USB\Vid_xxxx&Pid_yyyy”下,再创建一个子目录“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_xxxx&Pid_yyyy\c&pppppppp&m&n”,其中,c是相同的供应商识别码/产品识别码的USB设备插入的次数,pppppppp是Windows系统内核对应的USB设备对象的地址的16进制表示,m和n均是USB设备的某个版本号,考虑到c&pppppppp已经可以区分相同供应商识别码和产品识别码的设备了,所以在具体实现里将m固定为0,n固定为1。至此,目录的创建已经完成,在目录“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_xxxx&Pid_yyyy\c&pppppppp&m&n”下写入USB设备的下列注册信息:
"DeviceDesc"="USB人体学输入设备"
"LocationInformation"="Token"
"Capabilities"=dword:00000084
"UINumber"=dword:00000000
"HardwareID"="USB\Vid_1483&Pid_c007&Rev_0100
USB\Vid_1483&Pid_c007"
"ClassGUID"="{a5dcbf10-6530-11d2-901f-00c04fb951ed}"
"Class"="HIDClass"
"Driver"="{a5dcbf10-6530-11d2-901f-00c04fb951ed}\\0000"
"Mfg"="(标准系统设备)"
"Service"="HidUsb"
"ConfigFlags"=dword:00000000
"ParentIdPrefix"="6&18448d91&0"
USB设备注册成功后,执行步骤S240,依次创建USB设备对象的物理设备对象和功能设备对象,并将功能设备对象附加到物理设备对象之上。根据本发明的一个实施例,首先调用IoCreateDevice()函数利用USB总线驱动创建USB设备对象的物理设备对象,再调用IoCreateDevice()函数利用USB HID功能驱动创建功能设备对象,并将其附加到物理设备对象上面。
接下来,在步骤S260中,创建符号链接以指向USB设备在第二操作系统兼容内核中的设备名称。根据本发明的一个实施例,第一操作系统是Linux系统,第二操作系统是Windows系统,而由步骤S230可知,对该USB设备按照Windows系统内核名字空间规范所生成的设备名称是\Device\USB#xxxxxxxx&yyyyyyyy,因此需要为该USB设备创建相应的符号链接,以指向其在在Windows系统兼容内核中的设备名称“\Device\USB#xxxxxxxx&yyyyyyyy”。符号链接的格式为:\??\USB#Vid_xxxx&Pid_yyyy#c&pppppppp&m&n#{a5dcbf10-6530-11d2-901f-00c04fb951ed},其中,??表示这一链接对应的目录的前半部分,比如可以是步骤S230中注册USB设备信息的目录的前半部分“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum”,而{a5dcbf10-6530-11d2-901f-00c04fb951ed}是USB设备的全局唯一标识符,是Windows系统内核的头文件定义的GUID_DEVINTERFACE_USB_DEVICE,对应于步骤S230中USB设备的注册信息中的参数ClassGUID。
最后,在步骤S260中,发送与第二操作系统兼容的广播消息通知已插入USB设备。根据本发明的一个实施例,第二操作系统为Windows系统时,发送的用以通知已插入USB设备并与Windows系统兼容的广播消息为WM_DEVICECHNAGE消息,该WM_DEVICECHNAGE消息包括wParam参数,且wParam参数的值为DBT_DEVICEARRIVAL,表示该USB设备插入并可用。
至此,USB设备已经成功插入计算设备并被识别,此时,安装在计算设备中的USB应用180接收到WM_DEVICE CHNAGE消息后,提取WM_DEVICECHANGE消息中的wParam参数,由于wParam参数的值为DBT_DEVICEARRIVAL,表明插入了新的USB设备,则再提取lParam参数,lParam参数的值为一个DEV_BROADCAST_DEVICEINTERFACE对象指针,根据该指针读取DEV_BROADCAST_DEVICEINTERFACE对象的dbcc_name成员即可获取新插入的USB设备的符号链接。根据本发明的一个实施例,得到符号链接为\??\USB#Vid_xxxx&Pid_yyyy#c&pppppppp&m&n#{a5dcbf10-6530-11d2-901f-00c04fb951ed},此时提取符号连接里的xxxx和yyyy转成具体的数字,即可分别得到该USB设备的供应商识别码和产品识别码。然后,再将插入的USB设备的供应商识别码、产品识别码分别与USB应用180所支持的USB设备的供应商识别码、产品识别码进行比较,如果均一致,则表明USB应用180支持该插入的USB设备。比如,USB应用180为招商银行的网银客户端,其支持的USB设备为招商银行的优KEY,优KEY是招商银行针对其网银客户端开发的一种USBKey设备,而优KEY的供应商识别码和产品识别码分别为0x1483和0xc007。此时,获取新插入的USB设备的符号链接为\??\USB#Vid_1483&Pid_c007#5&18f54cb7&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed},可得该USB设备的供应商识别码为0x1483,产品识别码为0xc007,分别与USB应用180所支持的USB设备的供应商识别码、产品识别码一致,表明当前插入的USB设备被USB应用180所支持,实际上该USB设备即为优KEY。
USB应用180在判断出插入的USB设备可支持后,调用CreateFile API,将符号链接作为CreateFile API的第一个参数打开该USB设备,如果成功打开就得到一个USB设备的句柄,从而识别出该USB设备。此后,将该句柄作为DeviceIoControl API的第一个参数,再调用DeviceIoControl API来向USB设备发送命令,读取里面的数据以控制该USB设备。一般来说,USB应用180向USB设备发出的命令为I/O请求,但由于在Linux系统下,无法直接根据I/O请求对USB设备进行数据的读取,因此,为了响应该I/O请求实现控制USB设备,根据本发明的又一个实施例,当USB应用180发出I/O请求后,响应该I/O请求,将该I/O请求转换为对应的IRP请求,其中,IRP请求兼容于第二操作系统,即兼容于Windows系统。通常情形下,USB应用180所发出的I/O请求包括以下7类,分别是IOCTL_HID_GET_DEVICE_ATTRIBUTES、IOCTL_HID_GET_DEVICE_DESCRIPTOR、IOCTL_HID_GET_REPORT_DESCRIPTOR、IOCTL_HID_GET_FEATURE、IOCTL_HID_READ_REPORT、IOCTL_HID_SET_FEATURE和IOCTL_HID_WRITE_REPORT,依次用于请求USB设备的设备属性信息、HID描述信息、HID报表、功能报表、输入报表信息、向USB设备发送一个功能报表和发送一个HID报表。在得到与I/O请求对应的IRP请求后,将IRP请求发送给USB设备的功能设备对象来读取数据,以控制该USB设备。以上关于响应USB应用发出的I/O请求以控制USB设备的关键性代码如下所示:
static NTSTATUS NTAPI HidInternalDeviceControl(DEVICE_OBJECT*
DeviceObject,IRP*Irp)
{
NTSTATUS Status=STATUS_UNSUCCESSFUL;
IO_STACK_LOCATION*IoStack=IoGetCurrentIrpStackLocation(Irp);
……
switch(IoStack->Parameters.DeviceIoControl.IoControlCode){
case IOCTL_HID_GET_DEVICE_ATTRIBUTES:{
PHID_DEVICE_ATTRIBUTES Attributes;
Attributes=Irp->UserBuffer;
Attributes->Size=sizeof(HID_DEVICE_ATTRIBUTES);
Attributes->VendorID=HidDeviceExtension->DeviceDescriptor.idVendor;
Attributes->ProductID=HidDeviceExtension->DeviceDescriptor.idProduct;
Attributes->VersionNumber=HidDeviceExtension->DeviceDescriptor.
bcdDevice;
Irp->IoStatus.Information=sizeof(HID_DESCRIPTOR);
Status=STATUS_SUCCESS;
break;}
case IOCTL_HID_GET_DEVICE_DESCRIPTOR:{
PHID_DESCRIPTOR dest=Irp->UserBuffer;
PHID_DESCRIPTOR src=&HidDeviceExtension->HidDescriptor;
……
Irp->IoStatus.Information=src->bLength;
Status=STATUS_SUCCESS;
break;}
……
case IOCTL_HID_SET_FEATURE:
{
……
}
default:{
TRACE("Unsupported ioctl%x\n",IoStack->Parameters.DeviceIoControl
.IoControlCode);
Status=STATUS_NOT_IMPLEMENTED;
break;}}
end:
Irp->IoStatus.u.Status=Status;
IoCompleteRequest(Irp,IO_NO_INCREMENT);
return Status;
}
进一步地,若不再使用USB应用,可将与该UBS应用对应的USB设备移除,在该USB设备移除后,还需要执行相关的清理操作。根据本发明的又一个实施例,当接收到的设备事件为设备移除事件时,获取与设备移除事件对应的USB设备关联的USB设备对象,对该USB设备对象执行清理操作,并发送与第二操作系统兼容的广播消息通知已移除USB设备。在该实施方式中,在获取与设备移除时间对应的USB设备关联的USB设备对象时,首先枚举所有已插入的USB设备以更新第一USB设备列表,即得到了新的libusb设备列表,很明显,此时移除的USB设备的USB设备对象并不在更新后的libusb设备列表中。随后,遍历全局USB设备列表以查找更新后的第一USB设备列表中不存在的USB设备对象,将该USB设备对象作为与设备移除事件对应的USB关联的USB设备对象。在查找到移除的USB设备的USB设备对象后,对该USB设备对象依次执行以下清理操作,即卸载该USB设备对象在第二操作系统兼容的注册表中注册的信息,删除该USB设备对象对应的符号链接,终止IRP请求,依次删除该USB设备对象的功能设备对象和物理设备对象,从全局USB设备列表移除该USB设备对象并将其删除。根据该实施方式,从全局USB设备列表g_device_list中找到移除的USB设备后,先卸载该USB设备在Linux系统下的、与Windows系统兼容的注册表中注册的信息,再将其符号链接“\??\USB#Vid_1483&Pid_c007#5&18f54cb7&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}”删除,并终止IRP请求,依次删除该USB设备对象的功能设备对象和物理设备对象,最后从全局USB设备列表g_device_list移除该USB设备对象并将其删除。当USB设备对象的清理操作执行完毕后,发送与Windows系统兼容的广播消息通知已移除该USB设备,该广播消息为WM_DEVICECHNAGE消息,此时,WM_DEVICECHNAGE消息中的wParam参数的值为DBT_DEVICEREMOVECOMPLETE,表明该USB设备已移除。
值得注意的是,上述清理操作除了对已移除的USB设备的USB设备对象执行外,还需要在退出USB设备对应的驱动程序时,对全局USB设备列表中的每个USB设备对象进行如上的清理工作。实际上,在每次轮询USB设备管理器的设备事件时,都要检查是否要退出驱动程序,如果是,则遍历全局USB设备列表,对每个USB设备对象执行清理操作并释放libusb库和libudev库的资源。
图3示出了本发明一个实施例的USB设备控制装置300的示意图。如图3所示,USB设备控制装置300包括轮询单元310、更新单元320、注册单元330、第一创建单元340、第二创建单元350和通知单元360。
轮询单元310适于轮询USB设备管理器的设备事件。
更新单元320与轮询单元310相连,适于当接收到的设备事件为设备插入事件时,创建与设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表。更新单元320进一步适于枚举所有已插入的USB设备得到第一USB设备列表;遍历第一USB设备列表,动态创建与设备插入事件对应的USB设备关联的USB设备对象;复制USB设备的设备描述符信息,将USB设备对象追加至全局USB设备列表的末尾,以更新全局USB设备列表。
注册单元330与更新单元320相连,适于遍历全局USB设备对象列表,向与第二操作系统兼容的注册表中注册USB设备;
第一创建单元340与注册单元330相连,适于依次创建USB设备对象的物理设备对象和功能设备对象,并将功能设备对象附加到物理设备对象之上;
第二创建单元350分别与注册单元330和第一创建单元340相连,适于创建符号链接以指向USB设备在第二操作系统兼容内核中的设备名称;
通知单元360与第二创建单元350相连,适于发送与第二操作系统兼容的广播消息通知已插入USB设备。
图4示出了本发明又一个实施例的USB设备控制装置400的示意图。如图4所示,USB设备控制装置400的轮询单元410、更新单元420、注册单元430、第一创建单元440、第二创建单元450和通知单元460,分别与图3中USB设备控制装置300的轮询单元310、更新单元320、注册单元330、第一创建单元340、第二创建单元350和通知单元360一一对应,是一致的,并新增了与通知单元460相连的控制单元470。控制单元470适于响应USB应用发出的I/O请求;将I/O请求转换为对应的IRP请求,IRP请求兼容于第二操作系统;将IRP请求发送给USB设备的功能设备对象来读取数据,以控制USB设备。
图5示出了本发明又一个实施例的USB设备控制装置500的示意图。如图5所示,USB设备控制装置500的轮询单元510、更新单元520、注册单元530、第一创建单元540和第二创建单元550,分别与图3中USB设备控制装置300的轮询单元310、更新单元320、注册单元330、第一创建单元340和第二创建单元350一一对应,是一致的,而通知单元560与通知单元360略有不同,通知单元560还适于发送与第二操作系统兼容的广播消息通知已移除USB设备。同时,还新增了分别与轮询单元610和通知单元560相连的清理模块580。
清理模块580适于当接收到的设备事件为设备移除事件时,获取与设备移除事件对应的USB设备关联的USB设备对象;对该USB设备对象执行清理操作。清理模块580进一步适于枚举所有已插入的USB设备以更新第一USB设备列表;遍历全局USB设备列表以查找更新后的第一USB设备列表中不存在的USB设备对象,将该USB设备对象作为与设备移除事件对应的USB关联的USB设备对象。清理模块580进一步适于卸载该USB设备对象在第二操作系统兼容的注册表中注册的信息;删除该USB设备对象对应的符号链接;终止IRP请求;依次删除该USB设备对象的功能设备对象和物理设备对象;从全局USB设备列表移除该USB设备对象并将其删除。
关于USB设备控制的具体步骤以及实施例,在基于图2的描述中已经详细公开,此处不再赘述。
现有的USB设备控制方法通常只适用于与USB设备及USB应用兼容的操作系统中,若需要在其他操作系统中通过非本操作系统的USB设备来登录并使用USB应用,实现USB设备的控制,则是不可行的。根据本发明实施例的USB设备控制的技术方案,当接收到设备插入事件时,创建与该事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表,遍历该列表并对该USB设备对象进行初始化处理,发送广播消息通知已插入USB设备,而在USB设备插入后,可响应USB应用发出的I/O请求,将I/O请求转换为IRP请求发送给USB设备对象以控制USB设备。此外,当接收到设备移除事件时,获取与该事件对应的USB设备关联的USB设备对象,对该USB设备对象执行清理操作,并发送广播消息通知已移除USB设备。在以上技术方案中,USB设备控制的处理过程是在运行第一操作系统的计算设备中执行的,该计算设备中驻留有转换模块,该转换模块使得针对第二操作系统设计的USB应用能够在第一操作系统中运行,从而在初始化USB设备对象时,先向与第二操作系统兼容的注册表中注册该USB设备,依次创建USB设备对象的物理设备对象和功能设备对象,并将功能设备对象附加到物理设备对象之上,再创建符号链接以指向USB设备在第二操作系统兼容内核中的设备名称。同时,为了保证针对第二操作系统设计的USB应用更好地控制USB设备,发送的广播消息及转换得到的IRP请求均兼容于第二操作系统,最终使得适用于第二操作系统的USB应用可以在第一操作系统中控制对应的USB设备,提高了USB应用及USB设备的兼容性。特别是将这一技术方案应用到网银安全领域时,比如就针对Windows操作系统开发的网银客户端及与其对应的USBKey设备而言,基于上述USB设备控制方案,可以在Linux系统中识别该USBKey设备,并利用USBKey设备安全登录网银客户端和安全使用网银,一方面提升了网银客户端及USBKey设备的系统兼容性,另一方面保证了网银交易的安全性,大幅度降低因出现安全漏洞而遭受网络攻击的可能性。
B8.如B7所述的装置,所述更新单元进一步适于:
枚举所有已插入的USB设备得到第一USB设备列表;
遍历所述第一USB设备列表,动态创建与所述设备插入事件对应的USB设备关联的USB设备对象;
复制所述USB设备的设备描述符信息,将所述USB设备对象追加至全局USB设备列表的末尾,以更新全局USB设备列表。
B9.如B7或8所述的装置,还包括控制单元,适于:
响应所述USB应用发出的I/O请求;
将所述I/O请求转换为对应的IRP请求,所述IRP请求兼容于第二操作系统;
将所述IRP请求发送给所述USB设备的功能设备对象来读取数据,以控制所述USB设备。
B10.如B7-9中任一项所述的装置,还包括清理单元,适于:
当接收到的设备事件为设备移除事件时,获取与所述设备移除事件对应的USB设备关联的USB设备对象;
对该USB设备对象执行清理操作。
B11.如B10所述的装置,所述通知单元还适于:
发送与第二操作系统兼容的广播消息通知已移除所述USB设备。
B12.如B10或11所述的装置,所述清理单元进一步适于:
枚举所有已插入的USB设备以更新第一USB设备列表;
遍历全局USB设备列表以查找更新后的第一USB设备列表中不存在的USB设备对象,将该USB设备对象作为与所述设备移除事件对应的USB关联的USB设备对象。
B13.如B10-12中任一项所述的装置,所述清理单元进一步适于:
卸载该USB设备对象在第二操作系统兼容的注册表中注册的信息;
删除该USB设备对象对应的符号链接;
终止IRP请求;
依次删除该USB设备对象的功能设备对象和物理设备对象;
从全局USB设备列表移除该USB设备对象并将其删除。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组间可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组间组合成一个模块或单元或组间,以及此外可以把它们分成多个子模块或子单元或子组间。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的USB设备控制方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种USB设备控制方法,适于在运行第一操作系统的计算设备中执行,该计算设备中驻留有转换模块,所述转换模块使得针对第二操作系统设计的USB应用能够在第一操作系统中运行,所述USB设备控制方法由所述转换模块使用以便所述USB应用能够控制耦接到计算设备的USB设备,所述方法包括:
轮询USB设备管理器的设备事件;
当接收到的设备事件为设备插入事件时,创建与所述设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表;
遍历所述全局USB设备对象列表,向与第二操作系统兼容的注册表中注册所述USB设备;
依次创建所述USB设备对象的物理设备对象和功能设备对象,并将所述功能设备对象附加到所述物理设备对象之上;
创建符号链接以所述USB设备在第二操作系统兼容内核中的设备名称;
发送与第二操作系统兼容的广播消息通知已插入所述USB设备。
2.如权利要求1所述的方法,所述创建与所述设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表的步骤包括:
枚举所有已插入的USB设备得到第一USB设备列表;
遍历所述第一USB设备列表,动态创建与所述设备插入事件对应的USB设备关联的USB设备对象;
复制所述USB设备的设备描述符信息,将所述USB设备对象追加至全局USB设备列表的末尾,以更新全局USB设备列表。
3.如权利要求1或2所述的方法,还包括:
响应所述USB应用发出的I/O请求;
将所述I/O请求转换为对应的IRP请求,所述IRP请求兼容于第二操作系统;
将所述IRP请求发送给所述USB设备的功能设备对象来读取数据,以控制所述USB设备。
4.如权利要求1-3中任一项所述的方法,还包括:
当接收到的设备事件为设备移除事件时,获取与所述设备移除事件对应的USB设备关联的USB设备对象;
对该USB设备对象执行清理操作,并发送与第二操作系统兼容的广播消息通知已移除所述USB设备。
5.如权利要求4所述的方法,所述获取与所述设备移除事件对应的USB设备关联的USB设备对象的步骤包括:
枚举所有已插入的USB设备以更新第一USB设备列表;
遍历全局USB设备列表以查找更新后的第一USB设备列表中不存在的USB设备对象,将该USB设备对象作为与所述设备移除事件对应的USB关联的USB设备对象。
6.如权利要求4或5所述的方法,所述对该USB设备对象执行清理操作的步骤包括:
卸载该USB设备对象在第二操作系统兼容的注册表中注册的信息;
删除该USB设备对象对应的符号链接;
终止IRP请求;
依次删除该USB设备对象的功能设备对象和物理设备对象;
从全局USB设备列表移除该USB设备对象并将其删除。
7.一种USB设备控制装置,适于驻留在运行第一操作系统的计算设备中,该计算设备中驻留有转换模块,所述转换模块使得针对第二操作系统设计的USB应用能够在第一操作系统中运行,所述USB设备控制装置由所述转换模块使用以便所述USB应用能够控制耦接到计算设备的USB设备,所述装置包括:
轮询单元,适于轮询USB设备管理器的设备事件;
更新单元,适于当接收到的设备事件为设备插入事件时,创建与所述设备插入事件对应的USB设备关联的USB设备对象,以更新全局USB设备对象列表;
注册单元,适于遍历所述全局USB设备对象列表,向与第二操作系统兼容的注册表中注册所述USB设备;
第一创建单元,适于依次创建所述USB设备对象的物理设备对象和功能设备对象,并将所述功能设备对象附加到所述物理设备对象之上;
第二创建单元,适于创建符号链接以所述USB设备在第二操作系统兼容内核中的设备名称;
通知单元,适于发送与第二操作系统兼容的广播消息通知已插入所述USB设备。
8.一种计算设备,包括如权利要求7所述的USB设备控制装置。
9.一种计算设备,包括:
一个或多个处理器;
存储器;以及
一个或多个程序,其中所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1-6所述的方法中的任一方法的指令。
10.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1-6所述的方法中的任一方法。
CN201710442809.3A 2017-06-13 2017-06-13 一种usb设备控制方法、装置及计算设备 Active CN107329916B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710442809.3A CN107329916B (zh) 2017-06-13 2017-06-13 一种usb设备控制方法、装置及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710442809.3A CN107329916B (zh) 2017-06-13 2017-06-13 一种usb设备控制方法、装置及计算设备

Publications (2)

Publication Number Publication Date
CN107329916A true CN107329916A (zh) 2017-11-07
CN107329916B CN107329916B (zh) 2019-06-04

Family

ID=60195538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710442809.3A Active CN107329916B (zh) 2017-06-13 2017-06-13 一种usb设备控制方法、装置及计算设备

Country Status (1)

Country Link
CN (1) CN107329916B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111045524A (zh) * 2019-11-22 2020-04-21 联想(北京)有限公司 一种控制方法及装置
CN111274620A (zh) * 2020-01-16 2020-06-12 四川效率源科技有限责任公司 一种基于Windows操作系统的USB设备的管控方法
CN112181328A (zh) * 2020-11-30 2021-01-05 统信软件技术有限公司 一种打印控制系统、方法及计算设备
CN112698795A (zh) * 2020-12-25 2021-04-23 德佟电子科技(江苏)有限公司 一种usb打印设备中使用hid设备实现打印免驱动的方法
CN115203135A (zh) * 2022-09-09 2022-10-18 统信软件技术有限公司 存储设备列表管控方法、计算设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754725B1 (en) * 2001-05-07 2004-06-22 Cypress Semiconductor Corp. USB peripheral containing its own device driver
CN106708762A (zh) * 2015-11-18 2017-05-24 厦门雅迅网络股份有限公司 一种linux下串口设备统一管理系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754725B1 (en) * 2001-05-07 2004-06-22 Cypress Semiconductor Corp. USB peripheral containing its own device driver
CN106708762A (zh) * 2015-11-18 2017-05-24 厦门雅迅网络股份有限公司 一种linux下串口设备统一管理系统及方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111045524A (zh) * 2019-11-22 2020-04-21 联想(北京)有限公司 一种控制方法及装置
CN111045524B (zh) * 2019-11-22 2022-01-18 联想(北京)有限公司 一种控制方法及装置
CN111274620A (zh) * 2020-01-16 2020-06-12 四川效率源科技有限责任公司 一种基于Windows操作系统的USB设备的管控方法
CN112181328A (zh) * 2020-11-30 2021-01-05 统信软件技术有限公司 一种打印控制系统、方法及计算设备
CN112698795A (zh) * 2020-12-25 2021-04-23 德佟电子科技(江苏)有限公司 一种usb打印设备中使用hid设备实现打印免驱动的方法
CN115203135A (zh) * 2022-09-09 2022-10-18 统信软件技术有限公司 存储设备列表管控方法、计算设备及存储介质

Also Published As

Publication number Publication date
CN107329916B (zh) 2019-06-04

Similar Documents

Publication Publication Date Title
CN107329916B (zh) 一种usb设备控制方法、装置及计算设备
CN102939579A (zh) 绑定用户接口元素和粒度反映处理的方法和装置
WO2021023149A1 (zh) 一种动态返回报文的方法和装置
KR101198437B1 (ko) 컨텍스트 트리거형 배포 방법, 장치 및 컴퓨터 판독 가능한 저장매체
CN108197324B (zh) 用于存储数据的方法和装置
CN110704833A (zh) 数据权限配置方法、设备、电子设备及存储介质
CN107807935B (zh) 应用推荐方法及装置
CN107506494B (zh) 文件处理方法、移动终端及计算机可读存储介质
CN116360809B (zh) 一种嵌入式智能终端固件远程升级方法、系统及介质
CN108255675A (zh) 一种端口特征提取方法、装置及计算设备
CN110865894A (zh) 跨终端控制应用程序的方法及装置
CN111124883A (zh) 一种基于树形表格的测试用例库引入方法、系统及设备
CN113873450B (zh) 短信配置方法、装置、计算机设备和存储介质
CN115270161A (zh) 基于加密插件的加密方法、装置及相关产品
US11573808B2 (en) Methods of providing an integrated interface that includes a virtual mobile device
CN111090530B (zh) 一种分布式跨进程间通信总线系统
CN113674083A (zh) 互联网金融平台信用风险监测方法、装置及计算机系统
CN107613493A (zh) 智能终端及其防盗的方法、具有存储功能的装置
CN113066139A (zh) 图片处理方法和装置、存储介质及电子设备
CN111967001A (zh) 一种基于双容器的解码与编码安全隔离方法
CN113448960A (zh) 一种导入表格文件的方法和装置
WO2024040992A1 (zh) 一种处理消息的方法、装置和电子设备
CN108734149A (zh) 一种文本数据扫描方法和装置
CN109656571A (zh) 加载方法、装置、终端及计算机可读存储介质
CN115017103B (zh) 金融业务影像信息获取方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant