CN1749966A - 一种含指针参数的函数在不同运行平台间调用的方法 - Google Patents
一种含指针参数的函数在不同运行平台间调用的方法 Download PDFInfo
- Publication number
- CN1749966A CN1749966A CN 200510092963 CN200510092963A CN1749966A CN 1749966 A CN1749966 A CN 1749966A CN 200510092963 CN200510092963 CN 200510092963 CN 200510092963 A CN200510092963 A CN 200510092963A CN 1749966 A CN1749966 A CN 1749966A
- Authority
- CN
- China
- Prior art keywords
- parameter
- pointer parameter
- pointer
- memory headroom
- function
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000006870 function Effects 0.000 claims abstract description 199
- 230000005540 biological transmission Effects 0.000 claims description 22
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种含指针参数的函数在不同运行平台间调用的方法,所述指针参数在发送平台上指向一内存空间,包括如下步骤:(1)发送平台发送函数调用的指令,并至少依次发送函数的指针参数;(2)接收平台接收函数调用的指令,相应开辟内存空间和子内存空间;(3)接收平台接收所述指针参数,并修改该指针参数值,使其指向所述子内存空间;(4)接收平台执行被调用的函数。相对现有技术,本发明具有方法简单合理、可操作性强的特点。尤其是通过本发明的方法,可以实现多功能的跨平台函数调用,而不受参数特性的限制。
Description
技术领域
本发明涉及一种跨平台的函数调用的通讯方法,特别是一种含指针参数的函数在不同运行平台间调用的方法。
技术背景
公知的,一个运行平台上可以处理若干任务,其处理任务的过程是通过执行函数来完成的,其函数的调用则是通过该运行平台的控制系统来实现。如果想要实现不同的运行平台之间的函数调用,则由发送平台发送函数调用的指令到接收平台,其中,函数调用的指令包括函数名、函数调用时所需要的参数等等,接收平台接收到这些指令后,根据函数名查找平台内存储的函数,并将参数直接用于函数的执行。然而,现有的跨平台函数调用技术中,不能实现带指针参数的函数调用。这是因为,指针参数值所指向的是一内存空间,发送平台上的内存空间与接收平台上的内存空间的分布一般都是不一致的,单纯将指针参数发送到接收平台后,接收平台根据该指针参数所指向的地址,获得的参数往往不是函数执行所需要的参数。因此,现有技术中跨平台的函数调用仅仅限于参数中不含指针的函数的调用,跨平台可实现的功能单一,不利于技术的发展。
发明内容
本发明的目的是:针对现有技术的不足,提供一种可实现含指针参数的函数在不同运行平台间调用的方法。
为了解决上述技术问题,本发明所采取的技术方案是:一种含指针参数的函数在不同运行平台间调用的方法,所述指针参数在发送平台上指向一内存空间,包括如下步骤:
(1)发送平台发送函数调用的指令,并至少依次发送函数的指针参数;
(2)接收平台接收函数调用的指令,相应开辟内存空间和子内存空间;
(3)接收平台接收所述指针参数,并修改该指针参数值,使其指向所述子内存空间;
(4)接收平台执行被调用的函数。
所述函数调用的指令可以包括函数名称或对应于函数名称的消息号。
所述函数调用的指令还可以包括:指针参数存储位置、指针参数所在内存空间大小、指针参数所指向的内存空间大小;所述步骤(2)中,接收平台接收函数调用的指令后,根据指针参数所在内存空间大小,相应开辟内存空间,并根据指针参数存储位置,将所接收到的指针参数存储到该内存空间的对应位置;并且,接收平台还根据指针参数所指向的内存空间大小,相应开辟子内存空间。
所述函数调用的指令还可以包括发送指针参数所指向的参数,所述步骤(1)中,发送平台还发送指针参数所指向内存空间中的参数;所述步骤(2)中,接收平台将所接收到的指针参数所指向的参数存储到所述子内存空间中。
所述指针参数所指向的参数中还可以含有一级或多级指针参数,所述函数调用的指令中包含各个指针参数的指针参数存储位置、指针参数所指向的内存空间大小、发送指针参数所指向的内存空间中的参数;所述步骤(2)中,接收平台还根据各个指针参数之间的分级指向关系以及各级指针参数所指向的内存空间大小,相应开辟分级子内存空间;接收平台还根据各个指针参数的发送指针参数所指向的内存空间中的参数以及指针参数存储位置,接收来自发送平台的参数,并相应存储于所述各级子内存空间中;接收平台还根据各个指针参数的指针参数存储位置,在其对应的分级子内存空间中修改指针参数值,使其指向其应当指向的子内存空间。
当函数调用需要返回函数执行结果至发送平台时,所述函数调用的指令还可以包括返回函数执行结果并存储于指定位置。
所述指定位置可以由指针参数指定;所述步骤(3)中,接收平台先保存所述指针参数作为原指针参数,再修改指针参数为新指针参数,使其指向所述子内存空间。
还可以包括步骤(5),接收平台根据返回函数执行结果并存储于指定位置
的指令,将函数执行结果存储到所述指针参数指向的内存空间,并返回函数执行结果以及所述原指针参数至发送平台。还可以包括步骤(6),发送平台接收函数执行结果以及原指针参数,并根据原指针参数值,查找到对应的内存空间,从而将函数执行结果存储到该内存空间中。
在上述技术方案中,本发明由于在接收平台修改接收到的指针参数值,使其正确指向所开辟的子内存空间,实现了指针参数在接收平台上的空间转换,因此可以保证带指针参数的函数的跨平台调用。相对现有技术,本发明具有方法简单合理、可操作性强的特点。尤其是通过本发明的方法,可以实现多功能的跨平台函数调用,而不受参数特性的限制。
附图说明
附图1为本发明一种含指针参数的函数在不同运行平台间调用的方法的总体流程图;
附图2为本发明中发送平台的工作流程图;
附图3为本发明中接收平台的工作流程图;
附图4为实例2的内存空间存储示意图;
附图5为一种多级指针形式示意图。
具体实施方式
下面将结合说明书附图及具体实施例对本发明作进一步详细说明。
参考附图1,本实施例所提供的一种含指针参数的函数在不同运行平台间调用的方法,所述指针参数在发送平台上指向一内存空间,包括如下步骤:
(1)发送平台发送函数调用的指令,并至少依次发送函数的指针参数;
(2)接收平台接收函数调用的指令,相应开辟内存空间和子内存空间;
(3)接收平台接收所述指针参数,并修改该指针参数值,使其指向所述子内存空间;
(4)接收平台执行被调用的函数。
上述的接收平台内具有若干用于执行不同任务的函数,并且,一个任务可以具有多个函数。
上述的发送平台和接收平台可以为不同系统的不同平台,也可以扩展为同一个系统的不同平台,甚至可以扩展到同一个平台下的不同部分。
上述的发送平台和接收平台在实际运行时,可以互相转换功能,即发送平台成为接收平台,接收平台成为发送平台。
所述函数调用的指令包括函数名称或对应于函数名称的消息号。所述的消息号可以采用数字表示。当采用消息号时,在接收平台具有一消息号映射表,其中各个消息号与各个函数一一对应。这样接收平台就可根据消息号查找到相对应的函数。采用消息号的模式有利于函数的扩展。因此本实施例中采用消息号。
所述函数调用的指令的发送方式可以采用多个接口的方式,亦可采用统一接口的方式进行。由于前者对系统的通讯接口数量要求高,增加硬件设计难度和设计成本,因此本实施例中将采用统一接口方式实现。
本实施例中采用统一接口方式具体是指将函数调用的指令封装成统一接口函数sendcommand(消息号,函数调用的相关参数信息)。其中sendcommand为接口函数名。
由于在实际应用过程中,函数调用含有的“参数”不仅可包含指针参数,还可包含非指针参数(即实体参数)。很多情况下,函数调用往往同时具有指针参数和非指针参数,为了便于本发明的实施,本实施例将结合几种可能的情况,详细说明本发明的实施方案。
函数调用的相关参数信息包括:参数所占内存空间大小、指针参数存储位置、指针参数所在内存空间大小、指针参数所指向的内存空间大小、发送指针参数所指向的参数、接收函数执行结果并存储于指定位置等。
为了更清楚的描述本实施例的具体方法,下面将分成发送平台的工作流程和接收平台的工作流程来描述。
参考图2,发送平台的工作流程具体为:
步骤001,发送平台首先根据需调用的函数设置消息号。
具体实施时,可以采用msg表示消息号。
步骤002,判断函数调用是否具有相关参数。
判断结果如果是,则执行步骤003;否则跳转至步骤016。
步骤003,在发送平台上开辟一内存空间,用于存储函数调用的所有参数。
具体实施时,可以采用一指针参数*param来指向该内存空间。
对于本领域内的技术人员,很显然的知道具体实施时,也可以不将所有参数存储在一个内存空间内,而只需要发送平台能够获知各个参数的存储地址,并从该地址内顺利读取参数值即可。
步骤004,获取参数所占存储空间大小值以及参数性质。
获取参数所占存储空间大小值的目的是,通知接收平台开辟相应大小的内存空间,以存储参数实体或函数执行结果。
具体实施时,可以采用paramsize表示指针参数*param指向的内存空间的大小值。这样,接口函数可表示为:sendcommand(msg,*param,paramsize)。
本实施例中,以参数性质来表示发送平台是否需要发送函数执行的参数,以及发送平台是否需要接收函数执行的结果。如:
设置参数性质为IN类型,则表示发送平台不需要发送函数执行的参数,但需要接收函数执行的结果;
设置参数性质为OUT类型,则表示发送平台需要发送函数执行的参数,但不需要接收函数执行的结果;
设置参数性质为INOUT类型,则表示发送平台需要发送函数执行的参数,并且需要接收函数执行的结果。
具体实施时,以paramtype表示参数性质,则有paramtype=IN;paramtype=OUT;paramtype=INOUT。
步骤005,判断所述内存空间中的参数是否带有指针,即是否存在指针参数,如果是则执行步骤006,否则跳转至步骤007。
步骤006,获取指针参数的位置信息、指针参数所指向的内存空间大小,以及指针参数的参数性质。完成后跳转步骤008。
所述的指针参数的位置信息是指该指针参数在内存空间中存储的地址。当内存空间采用指针*param指向时,该位置信息即为指针参数存储地址距离其父指针*param的偏移量。本实施例中以ptrparamoffset表示所述指针参数的偏移量。
所述指针参数的参数性质用于表示发送平台是否需要发送该指针参数指向的内存空间中的参数,以及发送平台是否需要将接收到的函数执行结果存储于该指针参数指向的存储空间。
具体实施时,其设置的方法可以与前述的参数性质的设置方法相同。本实施例中还以ptrparamtype表示指针参数的参数性质,以prtparamsize表示所述指针参数所指向的内存空间大小。
另外,指针参数所指向的参数实体中还可以包含有指针,从而形成多级指针的形式。因此,各个参数以增加后缀“n”的形式分级的表示各个指针参数的相关信息。
图5所示即为一种多级指针形式,其中*A为存储在*param所指向的内存空间中的指针参数,其指向的内存空间中含有指针参数*B,而*B指向的内存空间中含有指针参数*C.
步骤007,将参数所占存储空间大小值以及参数性质作为函数调用的相关信息,与消息号一起封装到接口函数。完成后跳转到步骤009。
具体实施时,封装后的接口函数表示为:
sendcommand(msg,paramtype,paramsize,0)。
其中为与参数带指针时的接口函数表述形式一致,以0表示参数的偏移量。
步骤008,将参数所占存储空间大小值、参数性质、指针参数的位置信息、指针参数所指向的内存空间大小,以及指针参数的参数性质作为函数调用的相关信息,与消息号一起封装到所述接口函数。
本实施例中,封装后的接口函数表示为:
sendcommand(msg,paramtype,paramsize,0,
ptrparamtype_1,ptrparamsize_1,ptrparamoffset_1,……
ptrparamtype_n,ptrparamsize_n,ptrparamoffset_n)。
如以图5所示的多级指针为例,设*A、*B、*C所在内存空间均为12个字节,最后一级内存空间为4个字节,则封装后的接口函数为:
Sendcommand(msg,parmatype,12,0,ptrparamtype_1,12,8,ptrparamtype_2,12,8,ptrparamtype_3,4,8)。
步骤009,发送平台发送步骤007或步骤008封装好的接口函数至接收平台。
步骤010,判断函数调用的相关信息中,参数性质或指针参数的参数性质是否为IN类型,即是否发送平台不需要发送函数执行的参数,但需要接收函数执行的结果;或者是否发送平台不需要发送指针参数指向的参数实体,但需要将接收到的函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤013,否则执行步骤011。
步骤011,判断函数调用的相关信息中,参数性质和/或指针参数的参数性质是否为OUT类型,即是否发送平台需要发送函数执行的参数,但不需要接收函数执行的结果;和/或是否发送平台需要发送指针参数指向的参数实体,但不需要将接收到的函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤015,否则执行步骤012。
步骤012,函数调用的相关信息中,参数性质和/或指针参数的参数性质为INOUT类型,即发送平台需要发送函数执行的参数,且需要接收函数执行的结果;和/或发送平台需要发送指针参数指向的参数实体,且需要将接收到的函数执行结果存储于该指针参数指向的存储空间。因此发送内存空间中的参数,和/或指针参数对应的参数实体至接收平台。再跳转至步骤014。
步骤013,发送平台等待接收函数执行结果,并将该结果存储于指定存储空间。完成后跳转至步骤018。
如参数性质为IN类型,则将结果存储于发送平台上存储参数的内存空间中。如指针参数的参数性质为IN类型,则将该结果存储于发送平台上指针参数对应的存储空间内。
本实施例中,当参数中带有指针时,如果paramtype为IN类型,则设置ptrparamtype也为IN类型。
步骤014,发送平台等待接收函数执行结果,并将该结果存储于指定存储空间。完成后跳转至步骤018。
当参数性质为INOUT类型,且指针参数的参数性质为OUT类型时,所述指定的存储空间为参数所在的内存空间。
当参数性质为INOUT类型,且指针参数中存在一个或多个指针参数的参数性质为IN类型时,所述指定的存储空间为IN类型的指针参数所指向的存储空间。
步骤015,发送平台发送内存空间中的参数,和/或指针参数对应的参数实体至接收平台。完成后跳转至步骤018。
本实施例中,当参数性质中带有指针时,如果参数性质为OUT类型,则设置指针参数的参数性质也为OUT类型。
步骤016,将消息号封装到接口函数。
本实施例中,封装后的接口函数表示为:sendcommand msg。
步骤017,发送平台发送接口函数至接收平台。
步骤018,发送平台等待接收接口函数的执行结果。
上述步骤中,所述的接口函数的执行结果包括:接口函数执行成功、错误号。所述错误号是指接口函数执行失败后,其导致失败的错误原因,如未能查找到相应的函数等等。所述的函数的执行结果为函数执行后的函数值等。
本领域内的普通技术人员应当得知,上述发送平台的各个步骤的顺序可以作出相应调整,如可判断完参数性质或指针参数性质以后,再发送接口函数;或可先发送需要发送的参数实体,再发送接口函数;再如返回接口函数的执行结果的步骤可以根据需要取舍。因此,上述的流程仅为本发明的一个较佳实施方案。
参考附图3,接收平台的工作流程具体为:
步骤101,接收平台接收来自发送平台的接口函数。
步骤102,接收平台执行接口函数。
步骤103,自接口函数中获得消息号。
步骤104,查询接口函数中是否封装有函数调用的相关参数信息?有则跳转至步骤108,否则执行步骤105。
步骤105,根据消息号查找接收平台上对应的函数。
步骤106,是否查找到相应的函数?是则执行步骤106,否则跳转至步骤127。
步骤107,执行函数,跳转至步骤127。
步骤108,获得参数所占空间大小值paramsize,并根据该值开辟一内存空间。
步骤109,查询接口函数中是否封装有指针参数指向的参数实体所占存储空间大小值ptrparamsize,有则获得该值,并执行步骤110,否则跳转步骤111。
所述的ptrparamsize包括指针参数中还含有指针的情况。
步骤110,根据ptrparamsize值在接收平台上对应开辟子内存空间。
如果指针参数中还含有一级或多级指针参数,则接收平台根据接收到的接口函数,逐一分析各个指针参数的ptrparamsize_n,开辟分级指针参数存储子空间。
步骤111,判断接口函数中封装的参数性质paramtype,或指针参数的参数性质ptrparamtype是否为IN类型,即是否发送平台不需要发送函数执行的参数,但需要接收函数执行的结果;或者是否发送平台不需要发送指针参数指向的参数实体,但需要将接收到的函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤112,否则跳转至步骤117。
步骤112,根据消息号查找对应的函数。
步骤113,是否查找到相应的函数?是则执行步骤114,否则跳转至步骤****。
步骤114,执行函数。
步骤115,将函数执行结果存储于相应的内存空间或子内存空间内。
步骤116,发送函数执行结果至发送平台,以便发送平台可以将该结果存储于指定的内存空间或子内存空间内。完成后跳转至步骤127。
步骤117,判断接口函数中封装的参数性质paramtype,或指针参数的参数性质ptrparamtype是否为OUT类型,即是否发送平台需要发送函数执行的参数,但不需要接收函数执行的结果;或者是否发送平台需要发送指针参数指向的参数实体,但不需要将接收到的函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤118,否则跳转至步骤122。
步骤118,接收平台接收来自发送平台的参数,并存储于内存空间中;或接收来自发送平台的指针参数所指向的参数实体,并存储于相应的子内存空间中。
本实施例中,该步骤具体实施为:
当参数中不含指针参数时,接收平台接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。
当参数中还含有指针参数时:
首先接收平台接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中;
其次,根据指针参数的位置信息,本实施例中的ptrparamoffset的值,在内存空间中查找到相应的指针参数,并修改该指针参数的值,使其指向接收平台根据ptrparamsize对应开辟的子内存空间;
最后,接收来自发送平台的指针参数所指向的参数实体,并存储于相应的子内存空间中。
当指针参数所指向的参数实体中还带有指针时,重复前述操作中的后两步,直至所有的指针均正确的指向其对应的子内存空间,从而完成接收平台上地址空间的转换,并正确存储各个指针所指向的参数实体,从而建立与发送平台一致的指针参数存储和指向关系。
步骤119,根据消息号查找对应的函数。
步骤120,是否查找到相应的函数?是则执行步骤121,否则跳转至步骤127。
步骤121,将步骤118中获得的参数,和/或参数实体用于执行函数。完成后,跳转至步骤127。
步骤122,当paramtype和/或ptrparamtype为INOUT类型时,即发送平台需要发送函数执行的参数,且需要接收函数执行的结果;和/或发送平台需要发送指针参数指向的参数实体,且需要将接收到的函数执行结果存储于该指针参数指向的存储空间。因此接收来自发送平台的参数,并存储在内存空间中;或接收来自发送平台的指针指向的参数实体,并对应存储于子内存空间中。
步骤123,根据消息号查找对应的函数。
步骤124,是否查找到相应的函数?是则执行步骤125,否则跳转至步骤127。
步骤125,将步骤122中获得的参数,和/或参数实体用于执行函数。
步骤126,发送函数执行结果至发送平台。
步骤127,接口函数执行完毕,产生接口函数执行结果,并返回该结果至发送平台。
本实施例中,步骤122~126的具体实施过程可以为:
当参数中不含指针时,接收平台接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。当函数执行完成后,接收平台首先将函数执行结果存储到该内存空间,然后将此内存空间的数据返回给发送平台。
当参数中还含有指针参数时:
如果参数性质为INOUT类型,且指针参数的参数性质为OUT类型,接收平台首先接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。然后根据指针参数的位置信息,本实施例中的ptrparamoffset的值,在内存空间中查找到相应的指针参数,并修改该指针参数的值,使其指向接收平台根据ptrparamsize对应开辟的子内存空间;最后接收来自发送平台的指针参数所指向的参数实体,并存储于根据ptrparamsize开辟的子内存空间中。当指针参数所指向的参数实体中还带有指针时,重复前述操作,直至所有的指针均正确的指向其对应的子内存空间,从而完成接收平台上地址空间的转换,并正确存储各个指针所指向的参数实体。
当函数执行完成后,接收平台首先将函数执行结果存储于内存空间中非指针参数的存储位置,然后将此内存空间的数据返回给发送平台。
如果参数性质为INOUT类型,且指针参数中存在一个或多个指针参数的参数性质为IN类型时,接收平台同样首先接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。其次根据指针参数的位置信息,本实施例中的ptrparamoffset的值,在内存空间中查找到相应的指针参数,保存并修改该指针参数的值,使其指向接收平台根据ptrparamsize对应开辟的子内存空间;当指针参数所指向的参数实体中还带有指针时,重复前述操作,直至所有的指针均正确的指向其对应的子内存空间,从而完成接收平台上地址空间的转换。再次,接收平台查询是否所有的指针参数的参数类型都为IN类型,如果还存在OUT或INOUT类型的指针参数,则需要接收该指针参数对应的参数实体,并存储于对应的子内存空间中。最后,将内存空间中非IN类型指针参数存储位置的参数,以及OUT或INOUT类型的指针参数所指向的参数实体,用于函数的执行。
当函数执行完成后,接收平台首先将函数执行结果存储于IN类型指针参数所指向的子内存空间,然后以保存的原指针参数恢复修改后的指针参数值,并将原指针参数以及子内存空间中的函数执行结果返回给发送平台,以使发送平台可以根据指针参数,将函数执行结果准确的保存到其所指向的存储位置中。
本领域内的普通技术人员应当得知,上述接收平台的各个步骤的顺序可以调整出多种具体实施方案,该调整只需与发送平台的步骤相一致即可。因此,上述的步骤仅为本发明的一个较佳实施方案。
本领域内的普通技术人员还应当得知,尽管本实施例的附图2、3所给出的技术方案包括参数含指针参数、参数不含指针参数,指针参数所指向的参数还含指针参数等多种情况下的方法流程,但是参数含指针参数的方法流程完全可以从图2、3给出的流程中独立出来。因此本实施例所给出的技术方案非可用于限定本发明保护范围的技术方案。
下面将给出几个本发明的应用实例。
实例1
工作目标:发送平台启动接收平台上的摄像头进行摄像。
工作过程:发送平台发送接口函数:sendcommand 1。其中1为msg。接收平台接收该接口函数,并执行。查找到对应的函数OPENCAMERA()。该函数调用无需参数。直接执行,执行完成后,返回接口函数执行成功信息给发送平台。
实例2
工作目标:发送平台调用接收平台上的函数CAMERACAPTURE(Width,Height),命令接收平台的摄像头捕获一副大小为300字节的图像,并要求获得该图像数据。
工作过程:发送平台首先确定消息号msg=2。然后开辟一指针*param指向的内存空间用于存储该函数所需要的宽度值Width、高度值Height,并存储图像数据存储的地址指针*ptrparam。内存空间中的数据如图4所示。其中的每个参数分别占4个字节,*ptrparam的偏移量为8,*ptrparam所指向的存储空间A占300个字节。
因此发送平台首先发送接口函数:
sendcommand(2,INOUT,12,0,IN,300,8):
然后发送该内存空间中所有12个字节的数据。
接收平台首先接收该接口函数。然后开辟一大小为12个字节的内存空间,用于将接收的来自发送平台的12个字节的数据存储于该内存空间中,再开辟一个大小为300字节的子内存空间,并先保存内存空间中的最后4个字节的值,即指针*ptrparam的值,然后修改使其指向子内存空间。接着根据消息号2查找到对应的函数CAMERACAPTURE(Width,Height),将内存空间中的头4个字节的数据作为参数Width,中间4个字节的数据作为参数Height,执行函数。从而摄像头启动捕获一副指定高度和宽度的图像,并将该图像数据存储入子内存空间中。最后,接收平台需要以保存的*ptrparam的值替代内存空间中最后4个字节的值,并将内存空间中的参数实体以及*ptrparam所指向的图像数据一并发送到发送平台。使发送平台可以根据*ptrparam,将图像数据存储到其指向的存储区间A内。
应当说明的是,前面的描述意图仅是说明性的,而不是为了限制本发明。本领域的普通技术人员可以对在这里公开的实施例的形式和细节进行许多变化,而不脱离本发明的精神和实质。本发明的范围由权利要求书限定。
Claims (9)
1.一种含指针参数的函数在不同运行平台间调用的方法,所述指针参数在发送平台上指向一内存空间,包括如下步骤:
(1)发送平台发送函数调用的指令,并至少依次发送函数的指针参数;
(2)接收平台接收函数调用的指令,相应开辟内存空间和子内存空间;
(3)接收平台接收所述指针参数,并修改该指针参数值,使其指向所述子内存空间;
(4)接收平台执行被调用的函数。
2.如权利要求1所述方法,其特征在于:所述函数调用的指令包括函数名称或对应于函数名称的消息号。
3.如权利要求2所述方法,其特征在于:所述函数调用的指令还包括:指针参数存储位置、指针参数所在内存空间大小、指针参数所指向的内存空间大小;所述步骤(2)中,接收平台接收函数调用的指令后,根据指针参数所在内存空间大小,相应开辟内存空间,并根据指针参数存储位置,将所接收到的指针参数存储到该内存空间的对应位置;并且,接收平台还根据指针参数所指向的内存空间大小,相应开辟子内存空间。
4.如权利要求3所述,其特征在于:所述函数调用的指令还包括发送指针参数所指向的参数,所述步骤(1)中,发送平台还发送指针参数所指向内存空间中的参数;所述步骤(2)中,接收平台将所接收到的指针参数所指向的参数存储到所述子内存空间中。
5.如权利要求4所述方法,其特征在于:所述指针参数所指向的参数中还含有一级或多级指针参数,所述函数调用的指令中包含各个指针参数的指针参数存储位置、指针参数所指向的内存空间大小、发送指针参数所指向的内存空间中的参数;所述步骤(2)中,接收平台还根据各个指针参数之间的分级指向关系以及各级指针参数所指向的内存空间大小,相应开辟分级子内存空间;接收平台还根据各个指针参数的发送指针参数所指向的内存空间中的参数以及指针参数存储位置,接收来自发送平台的参数,并相应存储于所述各级子内存空间中;接收平台还根据各个指针参数的指针参数存储位置,在其对应的分级子内存空间中修改指针参数值,使其指向其应当指向的子内存空间。
6.如权利要求1至5中之一所述方法,其特征在于:当函数调用需要返回函数执行结果至发送平台时,所述函数调用的指令还包括返回函数执行结果并存储于指定位置。
7.如权利要求6所述方法,其特征在于:所述指定位置由指针参数指定;所述步骤(3)中,接收平台先保存所述指针参数作为原指针参数,再修改指针参数为新指针参数,使其指向所述子内存空间。
8.如权利要求7所述方法,其特征在于:还包括步骤(5),接收平台根据返回函数执行结果并存储于指定位置的指令,将函数执行结果存储到所述指针参数指向的内存空间,并返回函数执行结果以及所述原指针参数至发送平台。
9.如权利要求8所述方法,其特征在于:还包括步骤(6),发送平台接收函数执行结果以及原指针参数,并根据原指针参数值,查找到对应的内存空间,从而将函数执行结果存储到该内存空间中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200510092963XA CN100361082C (zh) | 2005-08-26 | 2005-08-26 | 一种含指针参数的函数在不同运行平台间调用的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200510092963XA CN100361082C (zh) | 2005-08-26 | 2005-08-26 | 一种含指针参数的函数在不同运行平台间调用的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1749966A true CN1749966A (zh) | 2006-03-22 |
CN100361082C CN100361082C (zh) | 2008-01-09 |
Family
ID=36605427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200510092963XA Expired - Fee Related CN100361082C (zh) | 2005-08-26 | 2005-08-26 | 一种含指针参数的函数在不同运行平台间调用的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100361082C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833476A (zh) * | 2010-05-28 | 2010-09-15 | 西安交通大学 | 基于cmp的推测多线程机制下的独立栈函数调用方法 |
CN102571569A (zh) * | 2011-12-28 | 2012-07-11 | 方正国际软件有限公司 | 一种报文预知方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5657447A (en) * | 1995-08-31 | 1997-08-12 | International Business Machines Corp. | Platform-transparent registration and build of stored procedures and user-defined functions |
US6205469B1 (en) * | 1997-05-27 | 2001-03-20 | Yahoo! Inc. | Method for client-server communications through a minimal interface |
US6314445B1 (en) * | 1998-08-03 | 2001-11-06 | International Business Machines Coproration | Native function calling |
WO2004003732A1 (en) * | 2002-06-27 | 2004-01-08 | Infineon Technologies Ag | Method for accessing local variables |
JP4125055B2 (ja) * | 2002-06-28 | 2008-07-23 | キヤノン株式会社 | ログ取得方法 |
CN1264090C (zh) * | 2002-12-31 | 2006-07-12 | 上海科泰世纪科技有限公司 | 调用构件对象功能的智能指针的封装方法 |
CN1277186C (zh) * | 2003-12-22 | 2006-09-27 | 联想(北京)有限公司 | 软件接口测试方法 |
-
2005
- 2005-08-26 CN CNB200510092963XA patent/CN100361082C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833476A (zh) * | 2010-05-28 | 2010-09-15 | 西安交通大学 | 基于cmp的推测多线程机制下的独立栈函数调用方法 |
CN101833476B (zh) * | 2010-05-28 | 2013-08-14 | 西安交通大学 | 基于cmp的推测多线程机制下的独立栈函数调用方法 |
CN102571569A (zh) * | 2011-12-28 | 2012-07-11 | 方正国际软件有限公司 | 一种报文预知方法及系统 |
CN102571569B (zh) * | 2011-12-28 | 2015-04-01 | 方正国际软件有限公司 | 一种报文预知方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100361082C (zh) | 2008-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1731361A (zh) | 一种跨平台函数调用系统 | |
CN101042649A (zh) | 一种配置信息处理方法及装置以及平台系统 | |
CN1866221A (zh) | 一种软件接口测试方法和装置 | |
CN1306414C (zh) | 闪速存储器和闪速存储器的映射控制设备和方法 | |
CN1638391A (zh) | 移动信息终端设备、信息处理方法、记录介质和程序 | |
CN1801756A (zh) | 迁移程序、信息处理装置、计算机系统和存储有迁移程序的计算机可读记录介质 | |
CN1901547A (zh) | 生成web服务策略协议的方法和设备 | |
CN1581142A (zh) | 在客户机-服务器分布式系统中使用的方法、服务器和客户机 | |
CN1605078A (zh) | 在数据存储装置的异构组中分配对象的方法和设备 | |
CN1445659A (zh) | 信息处理系统 | |
CN1567187A (zh) | 数据处理系统及方法 | |
CN1749966A (zh) | 一种含指针参数的函数在不同运行平台间调用的方法 | |
CN1949206A (zh) | 多处理器系统的消息通信方法及装置 | |
CN1808434A (zh) | 基于对象存储库的对象引用方法 | |
CN1889048A (zh) | 组件的实现方法以及系统 | |
CN1529858A (zh) | 计算系统 | |
CN1731360A (zh) | 一种不同运行平台间的函数调用的方法 | |
CN1172986A (zh) | 实时控制系统 | |
CN1862488A (zh) | 计算机系统中控件与多语言文本动态绑定显示的方法 | |
CN1536497A (zh) | 一种实现包过滤的防火墙及其实现包过滤的方法 | |
CN1581782A (zh) | 一种实现计费的方法及计费系统 | |
CN101030228A (zh) | 页面导航方法和装置及应用服务器 | |
CN101030152A (zh) | 基于伪同步方式的操作控制方法及装置 | |
CN1874301A (zh) | 快速响应ip分片报文的方法和系统 | |
CN1299200C (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080109 Termination date: 20120826 |