通信请求的处理方法、装置、USB设备和存储介质
文献发布时间:2023-06-19 19:28:50
技术领域
本申请涉及数据通信技术领域,具体涉及一种通信请求的处理方法、装置、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设备通过接收主机发送的标准请求,并根据所述标准请求中的字段信息,提取所述标准请求中的目标信息;并根据所述目标信息确定目标地址;然后调用所述目标地址对应的目标处理函数,通过所述目标处理函数响应所述标准请求进行数据处理。本方案通过提取请求中的目标信息,并根据目标信息确定目标处理函数对应的目标地址,然后根据目标地址直接调用对应的目标处理函数,摒弃根据所述标准请求与处理函数进行历遍查找对应匹配的技术方案,降低处理函数的查找计算量,提升处理函数的查找效率,同时减轻了处理函数查找的程序重量,节省内存,进而提升处理函数的查找性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的通信请求的处理方法的场景示意图;
图2是本申请实施例中提供的通信请求的处理方法的一个实施例流程示意图;
图3为本申请实施方案提供的通信请求的处理方法中目标信息提取的其中一种实施方案流程示意图;
图4为本申请实施方案提供的通信请求的处理方法中目标地址确定的其中一种实施方案流程示意图;
图5为本申请实施方案提供的通信请求的处理方法中目标处理函数调用的其中一种实施方案流程示意图;
图6为本申请实施方案提供的通信请求的处理方法中目标处理函数调用的另一种实施方案流程示意图;
图7为本申请实施方案提供的通信请求的处理方法的另一种实施方案流程示意图;
图8是本申请实施例中提供的通信请求的处理装置的一个实施例结构示意图;
图9是本申请实施例中提供的USB设备的一个实施例结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
可以理解的是,USB设备包括USB接口,USB接口作为一种高速串行总线接口,以其极高的传输速度可以满足高速数据传输的应用要求而知名,同时该总线接口还兼有供电简单、扩展端口简易、支持热插拔、连接灵活、传输多样化等优点。而USB设备对应的USB协议栈作为独立于硬件的软件协议,不仅负责USB设备的接入检测、地址分配、请求响应,还负责USB设备的类型抽象、数据传输等,即是所有USB设备赖以生存的基础。在整个协议栈的主体中,其核心思想是对USB主机的请求的解析和响应。
在目前的主流协议栈中,都是采用分层剥离的方式来对USB主机(host)请求命令进行解析,具体的,代码中会通过大量的switch...case...语句进行遍历,或者用if...else if...等语句循环遍历这些请求中各关键字对应可能的值,然后一层层找到对应的处理函数;比如一般协议栈中需要循环遍历RequestType=0,1,2,Request=0,1,2,3,4,5,6,7,8,9,10等组合情况,然后找到对应的处理函数,这样的组合可能就有三十多种情况,用历遍查找处理函数的方式比较耗时。
因此,本申请中提出一种通信请求的处理方法、装置、USB设备和存储介质,其中,一种通信请求的处理方法用于应用于通信请求的处理装置,通信请求的处理装置设于USB设备内,USB设备中设置有一个或多个处理器、存储器,以及一个或多个应用程序,其中一个或多个应用程序被存储于存储器中,并配置为由处理器执行以实现通信请求的处理;USB设备可以是终端,例如,USB设备、手机或平板电脑,移动硬盘、闪存盘、移动光学驱动器、读卡器、数码相机、数码音乐播放器等等。
如图1所示,图1为本申请实施例通信请求的处理方法的场景示意图,本发明实施例中通信请求的处理场景中包括USB设备100(USB设备100中集成有通信请求的处理装置),USB设备100中运行通信请求的处理方法对应的计算机可读存储介质,以执行通信请求的处理方法的步骤。
可以理解的是,图1所示通信请求的处理方法的场景中的USB设备,或者USB设备中包含的装置并不构成对本发明实施例的限制,即,通信请求的处理方法的场景中包含的USB设备数量、USB设备种类,或者各个USB设备中包含的装置数量、装置种类不影响本发明实施例中技术方案整体实现,均可以算作本发明实施例要求保护技术方案的等效替换或衍生。
其中,USB设备用于接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息;根据目标信息确定目标地址;调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。通过提取请求中的目标信息,并根据目标信息确定目标处理函数对应的目标地址,然后根据目标地址直接调用对应的目标处理函数,摒弃根据标准请求与处理函数进行历遍查找对应匹配的技术方案,降低处理函数的查找计算量,提升处理函数的查找效率,同时减轻了处理函数查找的程序重量,节省内存,进而提升处理函数的查找性能。
此外,本申请通信请求的处理方法的场景中USB设备100可以设置显示装置。USB设备100可以访问后台数据库300(后台数据库可以是USB设备的本地存储器中,后台数据库还可以设置在云端),后台数据库300中保存有通信请求的处理相关的信息。
此外,本申请通信请求的处理方法的场景中还包括与中USB设备通信的USB主机400,USB主机用于向USB设备发送标准请求,实现对USB设备配置操作,以便后续对USB设备进行任务分发。
基于上述通信请求的处理方法的场景,提出了通信请求的处理方法的实施例。
如图2所示,为本申请实施例中通信请求的处理方法的一个实施例流程示意图,该通信请求的处理方法包括步骤S201-S203:
S201、接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息。
其中,主机,即与USB设备对应的USB主机。
其中,标准请求,即,USB主机发送的用于对USB设备的配置操作的请求;示例性的,标准请求可以为:用于USB主机读取USB设备、接口或端点的状态的读取状态请求GetStatus;用于USB主机清除或者禁止USB设备、接口、端点的某些特性的清除特性请求ClearFeature;用于设置或使能USB设备、接口或端点的特性值的设置特性请求SetFeatureSetFeature;用于在USB设备上电时为其分配一个唯一的设备地址的设置地址请求SetAddress;用于USB主机读取设备的指定的描述符,在数据阶段USB设备向USB主机返回指定的描述符的读取描述符请求GetDescription等不同类型的标准请求。
进一步的,标准请求中包括用于RequestType字段、Request字段、value字段以及Index字段等字段,以及RequestType字段对应的值、Request字段对应的值、value字段对应的值以及Index字段对应的值等,其中,RequestType字段对应的值用于确定标准请求对象(设备、接口或者端点),Request字段对应的值用于确定标准请求的类型。
其中,字段信息,即,RequestType字段(请求对象字段)、Request字段(请求类型字段)、value字段(请求参数信息字段)以及Index字段等字段。
其中,目标信息,即,RequestType字段对应的值、Request字段对应的值、value字段对应的值以及Index字段对应的值等其中的一个或多个值,可以理解的是,该值可以是二进制值、十进制值、十六进制值等;具体本申请不做具体的限定。
具体的,USB设备在接收到主机发送的标准请求后,根据标准请求中的字段信息,提取标准请求中的目标信息的实现方式本申请不做具体的限定,比如:
在本申请的其中一种实施方案中,USB设备在接收到主机发送的标准请求后,根据预设的目标字段,提取目标字段对应的值,即得到目标信息,比如,目标字段可以包括RequestType字段、Request字段、value字段,即,目标信息包括:RequestType字段对应的值、Request字段对应的值、value字段对应的值,可以理解的是,目标字段也可以包括RequestType字段、Request字段,即,目标信息包括:RequestType字段对应的值、Request字段对应的值。
在本申请的另一种实施方案中,USB设备在接收到主机发送的标准请求后,根据预设的目标字段以及目标字段对应的值的位置限定条件,提取目标字段满足位置限定条件对应的值;其中,位置限定条件比如:限低四位比特值、高四位比特值或者低五位比特值等,避免某一目标字段对应的值比特数量太多,即,数据太长,造成数据计算负担,进一步提升数据计算效率,其中,位置限定条件具体本申请不做限定。
S202、根据目标信息确定目标地址。
其中,目标地址,即,存储对应标准请求的目标处理函数的地址,示例性的,目标地址可以是存储器地址、映射表项对应的存储地址等,具体可以根据目标处理函数的存储方式进行限定。
具体的,USB设备在接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息后,根据目标信息确定目标地址的具体实现方式本申请不做具体的限定,比如:
在本申请的其中一种实施方案中,USB设备可以根据值和地址对应的预设映射表,查找目标信息对应的目标地址。
在本申请的另一种实施方案中,USB设备可以根据预设的计算公式计算多个目标信息对应的目标参数,或者根据预设的数据拼接方法对多个目标信息进行数据拼接得到目标参数,根据目标参数映射查找对应的目标地址。
S203、调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。
其中,目标处理函数,即,响应标准请求进行数据处理的处理函数,可以理解的是,目标处理函数为多个梳理函数中的一个,即,对应不同的标准请求,具有不同的对应处理函数,示例性的,包括:用于对应请求类型为get_status的get_status_for_dev函数;get_status_for_if函数;get_status_for_ep函数。用于对应请求类型为clear_feature的clear_feature_for_dev函数;clear_feature_for_if函数;clear_feature_for_ep函数等。其中,if对应接口对象,dev对应设备对象,ep对应端点对象,可以理解的是,该处只是列举了部分处理函数。
具体的,USB设备在根据目标信息确定目标地址后,直接根据调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理,实现目标处理函数的准确快速电位,减少数据处理量。
进一步的,在上述实施方案的基础上,参见图3,图3为本申请实施方案提供的通信请求的处理方法中目标信息提取的其中一种实施方案流程示意图,包括步骤S301-S302:
S301、识别标准请求中的请求类型字段、请求对象字段以及请求参数信息字段。
其中,请求对象字段,即RequestType字段;请求类型字段,即,Request字段;请求参数信息字段,即,value字段。
具体的,在本申请实施方案中,USB设备在接收主机发送的标准请求后,识别标准请求中的RequestType字段、Request字段、value字段。
S302、提取请求类型字段对应的类型信息,提取请求对象字段对应的对象信息,以及提取请求参数信息字段中的请求参数信息。
其中,提取请求类型字段对应的类型信息,即,提取RequestType字段对应的值,提取请求对象字段对应的对象信息,即,提取Request字段对应的值,以及提取请求参数信息字段中的请求参数信息,即,提取value字段对应的值。即,目标信息包括:类型信息、对象信息以及请求参数信息。
具体的,在本申请实施方案中,提取请求类型字段对应的类型信息,具体包括:
(1)识别请求对象字段对应的比特值;
(2)提取比特值中的预设位置的比特值,得到请求对象字段对应的对象信息。
可以理解的是,预设位置可以是低四位,低五位等,请求对象字段对应的比特值一般比较多,为了避免数据量太大,通过限定提取请求对象字段对应的预设位置的比特值,来实现提取请求对象字段对应的对象信息。
具体的,在本申请实施方案中,USB设备在接收主机发送的标准请求后,识别标准请求中的RequestType字段、Request字段、value字段,然后提取RequestType字段对应的低四位比特值,提取Request字段对应的值以及提取value字段对应的值,得到目标信息。
示例性的,提取RequestType字段对应的低四位比特值,比如,RequestType字段对应的值为00110100,即提取后四位比特值0100作为RequestType字段对应的低四位比特值。
进一步的,在上述实施方案的基础上,参见图4,图4为本申请实施方案提供的通信请求的处理方法中目标地址确定的其中一种实施方案流程示意图,包括步骤S401-S402:
S401、将目标信息中的二进制请求参数信息转换为目标进制请求参数信息,得到转化进制后的目标信息。
其中,目标进制请求参数信息,即,目标进制对应的请求参数信息,目标进制为可以为十进制、十六进制等,即,目标进制请求参数信息,即,十进制请求参数信息、十六进制请求参数信息等。
可以理解的是,标准请求中的值一般为二进制值,二进制值数据量较大,因此,在本申请实施方案中,USB设备在提取到目标信息后,将所有的目标信息转换为十进制值。
在本申请的其他一些实施该方案中,也可以判断各目标信息的比特数量是否大于预设数量阈值,若某一目标信息的比特数量大于预设数量阈值,则将量大于预设数量阈值的目标信息转换为十进制数,若某一目标信息的比特数量不大于预设数量阈值量,则不转换大于预设数量阈值的目标信息为十进制请求参数信息,
通过减少数据量,提升计算效率,提升数据计算性能。
S402、对转化进制后的目标信息进行哈希计算,得到目标信息对应的目标地址。
具体的,USB设备在接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息后,将目标信息中的二进制请求参数信息转换为目标进制请求参数信息,根据预设的哈希计算公式对转化进制后的目标信息进行哈希计算,得到目标信息对应的目标地址。
具体的,在本申请实施方案中,对转化进制后的目标信息进行哈希计算,得到目标信息对应的目标地址,具体包括步骤:
(1)若请求参数信息为大于零,则根据预设的数据修正参数对请求参数信息进行修正,得到修正后的目标请求参数信息;
(2)计算转化进制后的类型信息、对象信息和目标请求参数信息之间的和,得到目标信息对应的目标地址。
其中,数据修正参数可以为修正系数,修正值等,具体的,在本申请实施方案中,数据修正参数为修正值,当请求参数信息为大于零,将请求参数信息减去预设的数据修正参数,得到修正后的目标请求参数信息。
具体的,在本申请实施方案中,预设的哈希计算公式为:
M=Request*a+RequestType[b:0]+g(value)
其中,M为目标地址,Request*a为类型信息,RequestType[b:0]为转换为十进制后的对象信息,g(value)为修正后的目标请求参数信息。
即,USB设备计算转化进制后的类型信息、对象信息和目标请求参数信息之间的和,得到目标信息对应的目标地址。
进一步的,在上述实施方案的基础上,参见图5,图5为本申请实施方案提供的通信请求的处理方法中目标处理函数调用的其中一种实施方案流程示意图,包括步骤S501-S502:
S501、查找预设的目标项表。
其中,所述目标项表存储有具有对应关系的地址和函数,目标项表中存储有处理函数,每一个处理函数对应一个唯一的存储地址(简称地址)。
S502、若目标项表中目标地址对应的目标内存单元不为空,则调用目标内存单元内的目标处理函数。
具体的,USB设备在获取到目标处理函数的目标地址后,查找函数和地址对应的预设的目标项表,判断所述目标项表中所述目标地址对应的目标内存单元是否为空;并基于判断结果,执行与所述判断结果对应的操作,比如在本申请的其中一种实施方案中,基于判断结果,执行与所述判断结果对应的操作比如:若目标项表中目标地址对应的目标内存单元不为空,则目标内存单元内存储的处理函数为目标处理函数,则调用目标内存单元内的目标处理函数。
可以理解的是,在本申请的其他一些实施方案中,基于判断结果,执行与所述判断结果对应的操作,比如:USB设备在查找到目标项表中目标地址对应的目标内存单元为空,则反馈请求无响应或者请求错误等信息。
进一步的,在上述实施方案的基础上,参见图6,图6为本申请实施方案提供的通信请求的处理方法中目标处理函数调用的另一种实施方案流程示意图,包括步骤S601-S605:
S601、查找预设的目标项表。
S602、若目标项表中目标地址对应的目标内存单元为空,则获取USB设备对应的处理函数。
具体的,若目标项表中目标地址对应的目标内存单元为空,则可能是目标项表中的和处理函数没有及时更新或者目标地址计算错误,此时重新获取USB设备对应的所有的处理函数,即,USB设备中包括的可调用执行的所有的处理函数。
S603、根据各处理函数中的函数字段信息,确定各处理函数对应的目标地址。
其中,处理函数中的函数字段信息,即,处理函数中自变量对应的字段信息,比如,处理函数为:get_status_for_dev,则自变量对应的函数字段信息包括:get_status、dev。
具体的,USB设备在获取USB设备对应的处理函数后,提取每个处理函数中的自变量对应的函数字段信息,然后查找预设映射表,确定函数字段信息对应的函数目标信息,根据函数目标信息确定对应的目标地址,即,计算得到每一个处理函数对应的目标地址;其中,根据函数目标信息确定对应的目标地址的实现方式参见上述实施方案,可以理解的是,函数目标信息和根据标准请求提取得到的目标信息对应,可以为相同,也可以为具有映射关系的值,目标地址即上述目标地址。
具体的,在本申请的其中一种实施方案中,根据各处理函数中的函数字段信息确定各处理函数对应的地址,包括步骤:
(1)提取各处理函数中自变量对应的函数字段信息,并根据函数字段信息与处理函数对应的标准请求中的字段信息之间的对应关系,确定函数字段信息对应的函数目标信息。
可以理解的是,一个标准请求对应一个处理函数,即,当USB设备接收到USB主机发送的标准请求时,会对接收到的标准请求进行解析,确定响应该标准请求的处理函数,进而调用该处理函数响应标准请求进行处理,即,USB设备通过解析标准请求在的字段信息确定请求类型,请求参数对象以及请求参数,进而确定要调用的处理函数,可以理解的是,所述处理函数中的自变量对应的函数字段信息也表明处理函数的处理类型和处理对象换热请求参数等信息,即,进一步可以理解的是,函数字段信息与处理函数对应的标准请求中的字段信息之间是存在对应关系的,具体的,该对应关系,可以是包括函数字段信息和对应的字段信息之间的映射关系的映射表,或者是包括具有多个关系组的关系表,每一个关系组中包括函数字段信息、函数字段信息对应的字段信息以及函数字段信息对应的函数目标信息,其中,在本申请实施方案中,目标信息和函数目标信息为相同的值,即,具有对应关系的函数字段信息和字段信息对应同样的函数目标信息,函数目标信息也作为字段信息对应的目标信息使用,即,所述函数目标信息也包括类型信息、对象信息和请求参数信息。
(2)对各处理函数对应的函数目标信息进行哈希计算,得到各处理函数对应的目标地址。
具体的,USB设备根据所述函数目标值进行哈希计算的实施方案,参见上述根据目标信息进行哈希计算目标地址的实现方式。
S604、确定与目标地址相同的地址对应的处理函数为目标处理函数,并调用目标处理函数。
具体的,USB设备在计算得到各处理函数对应的地址后,将目标地址与各处理函数对应的地址进行比对,若找到与目标地址相同的地址,则确定该地址对应处理函数为目标地址函数。
可以理解的是,若未找到与目标地址相同的地址,则USB设备反馈请求失败的信息到USB主机。
S605、根据各地址和处理函数之间的对应关系,对目标项表进行更新。
进一步的,USB设备在重新计算处理函数对应的地址后(目标地址),删除目标项表中的存储数据,重新将目标地址和处理函数对应存储在目标项标中,实现对目标项表的更新。
进一步的,在本申请的其他一些实施方案中,USB设备也可以在计算得到各处理函数对应的地址后,先根据地址和处理函数之间的对应关系对目标项表进行更新,然后USB设备查找更新后的目标项表,若目标项表中目标地址对应的目标内存单元不为空,则调用目标内存单元内的目标处理函数,若目标项表中目标地址对应的目标内存单元为空,则反馈请求无响应或者请求错误等信息到主机和/或USB设备的显示端。
可以理解的是,在本申请的其他一些实施方案中,USB设备也可以在第一次查找目标项表,没有找到目标处理函数是,采用原始的函数查找方式进行目标处理函数查找,若查找到目标处理函数,则根据目标处理函数计算对应的目标地址,并将目标处理函数对应目标地址添加到目标项表中,实现对目标项表的更新。
进一步的,在上述实施方案的基础上,参见图7,图7为本申请实施方案提供的通信请求的处理方法的另一种实施方案流程示意图,包括步骤S701-S707:
S701、获取USB设备对应的处理函数,并创建包括至少两个内存单元的目标项表。
其中,内存单元的数量大于或等于处理函数的数量。
其中,内存单元,即,目标项表中的每一个存储单元,比如,目标项表中的其中一栏。
具体的,获取USB设备对应的处理函数,并创建包括至少两个内存单元的目标项表,比如,处理函数的个数为num,即创建包括l个内存单元来存储表存储它们n个处理函数(l>=n)。
S702、根据各处理函数中的函数字段信息,确定各处理函数对应的函数目标信息。
具体的,USB设备获取USB设备对应的处理函数,并创建包括至少两个内存单元的目标项表后,提取每个处理函数中的自变量对应的函数字段信息,比如,处理函数为:get_status_for_dev,则自变量对应的函数字段信息包括:get_status、dev。然后查找预设映射表,确定字段信息对应的目标信息,可以理解的是,目标信息和根据标准请求提取得到的目标信息对应,可以为相同,也可以为具有映射关系的值,在本申请实施方案中,函数目标信息即根据标准请求提取得到的目标信息。
S703、根据各处理函数对应的函数目标信息,确定各处理函数对应的目标地址。
具体的,USB设备根据各处理函数中的函数字段信息,确定各处理函数对应的函数目标信息后,根据函数目标信息确定对应的目标地址的实现方式参见上述根据目标信息确定目标地址的实施方案,目标地址即上述目标地址,根据目标信息确定对应的目标地址,即,计算得到每一个处理函数对应的目标地址。
S704、将目标地址对应目标处理函数对应存储到目标项表中。
进一步的,USB设备根据各处理函数对应的目标信息,确定各处理函数对应的目标地址,将目标地址对应目标处理函数存储到目标项表中,比如,目标地址可以存储为对应的处理函数的下标。
S705、接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息。
S706、根据目标信息确定目标地址。
S707、调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。
具体的,步骤S705-S707的具体实现方式参见上述任一项实施方案。
通过创建目标项表,减少数据存储量,提升数据查找性能。
进一步的,在上述实施方案的基础上,本申请还提供一种通信请求的处理方法的另一种实施方案,USB设备在调用目标地址对应的目标处理函数通过目标处理函数响应标准请求进行数据处理之后,还包括步骤:
(1)当检测到USB设备对应的处理函数的第一函数数量和目标项表中的处理函数的第二函数数量不同时,则获取USB设备对应的各处理函数的函数字段信息。
其中,第一函数数量,即,USB设备可以调用的所有处理函数的数量,第二函数数量,即,目标项表中所有的处理函数的数量。
其中,USB设备在调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理后,可以定期对USB设备可调用的所有的处理函数的数量进行检测,得到第一函数数量,并将素数第一函数数量与第二函数数量进行比对,若第一函数数量大于第二含糊数量,则说明目标项表中的处理函数没有涵盖USB设备可以调用的所有的处理函数,需要对目标项表进行更新,即,在目标项表中添加新的设备恶意调用的处理函数,若是第一函数数量小于第二函数数量,说明目标项表中存在USB设备不能调用的函数,需要在目标项表中删除USB设备不能调用的处理函数。
(2)根据各处理函数中的函数字段信息,确定各处理函数对应的地址;
(3)根据各地址和各处理函数之间的对应关系,对目标项表进行更新。
可以理解是,步骤(2)-(3)的实现方案参见啥上述实施方案所示。通过对目标项表进行更新,使得目标项表中的处理函数的有效性和完整性,提升标准请求的解析性能和响应的准确性。
本申请实施例中提供通信请求的处理方法,USB设备通过接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息;并根据目标信息确定目标地址;然后调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。本方案通过提取请求中的目标信息,并根据目标信息确定目标处理函数对应的目标地址,然后根据目标地址直接调用对应的目标处理函数,摒弃根据标准请求与处理函数进行历遍查找对应匹配的技术方案,降低处理函数的查找计算量,提升处理函数的查找效率,同时减轻了处理函数查找的程序重量,节省内存,进而提升处理函数的查找性能。
为了更好实施本申请实施例中通信请求的处理方法,在通信请求的处理方法基础之上,本申请实施例中还提供一种通信请求的处理装置,如图8所示,通信请求的处理装置包括模块801-803:
接收提取模块801:用于接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息;
确定模块802:用于根据目标信息确定目标地址;
调用模块803:用于调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。
在本申请一种可能的实施方案中,目标信息包括:类型信息、对象信息以及请求参数信息;所述类型信息、所述对象信息和所述请求参数信息用于计算目标地址。
在本申请一种可能的实施方案中,接收提取模块801:用于根据标准请求中的字段信息,提取标准请求中的目标信息,具体包括用于:
识别标准请求中的请求类型字段、请求对象字段以及请求参数信息字段;
提取请求类型字段对应的类型信息,提取请求对象字段对应的对象信息,以及提取请求参数信息字段中的请求参数信息。
在本申请一种可能的实施方案中,接收提取模块801:用于提取请求对象字段对应的对象信息,具体包括用于:
识别请求对象字段对应的比特值;
提取比特值中的低四位比特值,得到请求对象字段对应的对象信息。
在本申请一种可能的实施方案中,确定模块802:用于根据目标信息确定目标地址,具体包括用于:
将目标信息中的二进制请求参数信息转换为目标进制请求参数信息,得到转化进制后的目标信息;
对转化进制后的目标信息进行哈希计算,得到目标信息对应的目标地址。
在本申请一种可能的实施方案中,目标信息包括:类型信息、对象信息以及请求参数信息;
确定模块802:用于转化进制后的目标信息进行哈希计算,得到目标信息对应的目标地址,具体包括用于:
若请求参数信息为大于零,则根据预设的数据修正参数对请求参数信息进行修正,得到修正后的目标请求参数信息;
计算转化进制后的类型信息、对象信息和目标请求参数信息之间的和,得到目标信息对应的目标地址。
在本申请一种可能的实施方案中,调用模块803:用于调用目标地址对应的目标处理函数,具体包括用于:
查找预设的目标项表,所述目标项表存储有具有对应关系的地址和函数;
判断所述目标项表中所述目标地址对应的目标内存单元是否为空;
基于判断结果,执行与所述判断结果对应的操作。
在本申请一种可能的实施方案中,调用模块803:用于基于判断结果,执行与所述判断结果对应的操作,具体包括用于:
若所述目标项表中所述目标地址对应的目标内存单元不为空,则调用所述目标内存单元内的目标处理函数;或
若所述目标项表中所述目标地址对应的目标内存单元为空,则获取所述USB设备对应的处理函数;
根据各所述处理函数中的函数字段信息,确定各所述处理函数对应的地址;
确定与所述目标地址相同的地址对应的处理函数为目标处理函数,并调用所述目标处理函数;
根据各所述地址和所述处理函数之间的对应关系,对所述目标项表进行更新。
在本申请一种可能的实施方案中,调用模块803:用于根据各所述处理函数中的函数字段信息,确定各所述处理函数对应的地址,具体包括用于:
提取各所述处理函数中自变量对应的函数字段信息,并根据所述函数字段信息与所述处理函数对应的标准请求中的字段信息之间的对应关系,确定所述函数字段信息对应的函数目标信息;
对各所述处理函数对应的所述函数目标信息进行哈希计算,得到各所述处理函数对应的目标地址。
在本申请一种可能的实施方案中,装置还包括表项更新模块,调用模块:用于调用所述目标地址对应的目标处理函数之后,表项更新模块还包括用于:
当检测到所述USB设备对应的处理函数的第一函数数量和所述目标项表中的处理函数的第二函数数量不同时,则获取所述USB设备对应的各所述处理函数的函数字段信息;
根据各所述处理函数中的函数字段信息,确定各所述处理函数对应的地址;
根据各所述地址和各所述处理函数之间的对应关系,对所述目标项表进行更新。
在本申请一种可能的实施方案中,装置还包括表项创建模块,接收提取模块801:用于接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息之前,表项创建模块还包括用于:
获取USB设备对应的处理函数,并创建包括至少两个内存单元的目标项表,其中,内存单元的数量大于或等于处理函数的数量;
根据各处理函数中的函数字段信息,确定各处理函数对应的函数目标信息;
根据各处理函数对应的函数目标信息,确定各处理函数对应的目标地址;
将目标地址对应目标处理函数对应存储到目标项表中。
本申请实施例中提供通信请求的处理装置,设置于与USB设备,通过接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息;并根据目标信息确定目标地址;然后调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。本方案通过提取请求中的目标信息,并根据目标信息确定目标处理函数对应的目标地址,然后根据目标地址直接调用对应的目标处理函数,摒弃根据标准请求与处理函数进行历遍查找对应匹配的技术方案,降低处理函数的查找计算量,提升处理函数的查找效率,同时减轻了处理函数查找的程序重量,节省内存,进而提升处理函数的查找性能。
本发明实施例还提供一种USB设备,如图9所示,图9是本申请实施例中提供的USB设备的一个实施例结构示意图。
USB设备集成了本发明实施例所提供的任一种通信请求的处理装置,USB设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中一个或多个应用程序被存储于存储器中,并配置为由处理器执行上述通信请求的处理方法实施例中任一实施例中的通信请求的处理方法中的步骤。
具体来讲:USB设备可以包括一个或者一个以上处理核心的处理器901、一个或一个以上计算机可读存储介质的存储器902、电源903和输入单元904等部件。本领域技术人员可以理解,图9中示出的USB设备结构并不构成对USB设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器901是该USB设备的控制中心,利用各种接口和线路连接整个USB设备的各个部分,通过运行或执行存储在存储器902内的软件程序和/或模块,以及调用存储在存储器902内的数据,执行USB设备的各种功能和处理数据,从而对USB设备进行整体监控。可选的,处理器901可包括一个或多个处理核心;优选的,处理器901可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。
存储器902可用于存储软件程序以及模块,处理器901通过运行存储在存储器902的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器902可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据USB设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器902还可以包括存储器控制器,以提供处理器901对存储器902的访问。
在本申请一些实施例中,通信请求的处理装置可以实现为一种计算机程序的形式,计算机程序可在如图9所示的USB设备上运行。USB设备的存储器中可存储组成该通信请求的处理装置的各个程序模块,比如,图8所示的接收提取模块801、确定模块802以及提示调用模块803。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的通信请求的处理方法中的步骤。
例如,图9所示的USB设备可以通过如图8所示的通信请求的处理装置中的接收提取模块801执行步骤S201。USB设备可通过确定模块802执行步骤S202。USB设备可通过提示调用模块803执行步骤S203。该USB设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该USB设备的处理器用于提供计算和控制能力。该USB设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该USB设备的网络接口用于与外部的USB设备通过网络连接通信。该计算机程序被处理器执行时以实现一种通信请求的处理方法。
USB设备还包括给各个部件供电的电源903,优选的,电源903可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源903还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该USB设备还可包括输入单元904,该输入单元904可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,USB设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,USB设备中的处理器901会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器902中,并由处理器901来运行存储在存储器902中的应用程序,从而实现各种功能,如下:
接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息;
根据目标信息确定目标地址;
调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质可以包括:只读存储器(ROM,ReadOnlyMemory)、随机存取记忆体(RAM,RandomAccessMemory)、磁盘或光盘等。其上存储有计算机程序,计算机程序被处理器进行加载,以执行本发明实施例所提供的任一种通信请求的处理方法中的步骤。例如,计算机程序被处理器进行加载可以执行如下步骤:
接收主机发送的标准请求,并根据标准请求中的字段信息,提取标准请求中的目标信息;
根据目标信息确定目标地址;
调用目标地址对应的目标处理函数,通过目标处理函数响应标准请求进行数据处理。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。
具体实施时,以上各个单元或结构可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元或结构的具体实施可参见前面的方法实施例,在此不再赘述。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种通信请求的处理方法、装置、USB设备和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
- 数据访问请求的处理方法、装置和设备及存储介质
- 基于消息队列的请求处理方法、装置、设备及存储介质
- 不同协议的服务请求处理方法、装置、设备及存储介质
- 一种访问请求处理方法、装置、设备及可读存储介质
- 产品购买请求处理方法、装置、计算机设备和存储介质
- 通信请求处理方法、装置、系统、电子设备及存储介质
- 资源请求信息处理方法及装置、通信设备及存储介质