一种浏览器中进程间通信的方法和装置的制作方法

文档序号:6372622阅读:113来源:国知局
专利名称:一种浏览器中进程间通信的方法和装置的制作方法
技术领域
本发明 涉及通信技术领域,特别是涉及ー种浏览器中进程间通信的方法和装置。
背景技术
进程是ー个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是ー个动态的概念,ー个活动的实体。每ー个进程都有私有的地址空间,一般情况下,包括代码段、数据段、堆栈段。代码段存储处理器执行的代码;数据段存储变量和进程执行期间使用的动态分配的内存;堆栈段存储着活动过程调用的指令和本地变量。随着技术的发展,单进程程序在很多场合已不能满足人们的需求。如何编写多进程程序已成为现代程序设计技术的重点。在多进程程序中,数据的交互和共享是不可避免的。例如,某些浏览器支持多进程模式,页面A、页面B不在同一个进程运行,而需要经常在它们之间进行数据共享。Microsoft Win32 API提供了多种进程通信的方式,如共享内存方式、剪贴板方式等。參照图1,示出了现有技术ー种浏览器中以共享内存方式的进程通信方法的流程示意图,其中,进程A和进程B使用同一共享内存区,进程A发送数据I到共享内存区中去,并通知进程B去接收,此时进程B可能正忙于其他事务,而没有及时对共享内存区中的数据进行操作;此时若进程A发送数据2到共享内存中,进程B现在开始处理消息,并对共享内存区中的数据进行操作就会出现读写错乱的问题,影响进程的执行准确率。为了避免读写错乱的问题,现有ー种共享内存方式的进程通信方法采用一定的补救机制,也即,进程A发送数据到共享内存区中,进程B收到消息并操作,在执行完毕后通知进程A,此时进程A才能再次进行对共享内存区的读写。但如果采用上述补救机制,进程A就不能在需要写数据的时候随时写入,而是需要等待进程B执行完毕才可以进行下一次的操作,这就严重影响了进程A的执行效率和进程的通信效率,例如加载浏览器页面的效率等都会受到影响。总之,需要本领域技术人员迫切解决的ー个技术问题就是如何保证浏览器中多个进程间通信不出现读写错乱的情况下提高进程通信的执行效率。

发明内容
本发明所要解决的技术问题是提供一种浏览器中进程间通信的方法和装置,以便在保证进程间通信不出现读写错乱的情况下提高进程通信的执行效率。为了解决上述问题,本发明公开了ー种浏览器中进程间通信的方法,包括浏览器的框架FRAME进程对将传输数据进行序列化操作;所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中;所述FRAME进程异步发送第一通知信息到浏览器辅助对象BHO进程,所述通知消息中携帯第一目标内存空间的地址信息以及所述FRAME进程的进程标识;
接收到所述BHO进程返回的第二通知信息,通知对所述传输数据在所述BHO进程中处理结束;释放分配的第一目标内存空间。优选的 ,所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中的步骤包括获取所述序列化后的数据的首地址和数据长度信息;依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配第一目标内存空间;根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第一目标内存空间中。优选的,所述FRAME进程对将传输数据进行序列化操作的步骤进一歩包括采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据对应不同的重载运算符。优选的,所述第二通知信息进ー步包括所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识;则所述释放所述分配的第一目标内存空间的步骤进一歩包括依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理,并获得所述FRAME进程的进程对象句柄;依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地址信息,释放所述FRAME进程分配的第一目标内存空间。5、如权利要求I所述的方法,进ー步包括接收浏览器的BHO进程发送来的第三通知信息,该第三通知信息携帯所述BHO进程中分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识;依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄;使用该进程对象句柄依据所述第二目标内存空间的地址信息获取数据进行处理;处理结束后发送第四通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME进程对所述第二目标内存空间中的数据处理完毕。优选的,所述第四通知信息进ー步包括所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。优选的,所述浏览器辅助对象进程BHO是登录用控件的BHO子进程。优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。为解决上述问题,本发明还公开了ー种浏览器中进程间通信的方法,包括浏览器的辅助对象进程BHO对将传输数据进行序列化操作;所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数据到第三目标内存空间中;所述BHO进程同步发送第五通知信息到浏览器的框架FRAME进程,所述通知信息中携帯第三目标内存空间的地址信息以及所述BHO进程的进程标识;接收到所述浏览器的FRAME进程返回的第六通知信息,通知对所述传输数据在所述FRAME进程中处理结束;释放分配的第三目标内存空间。
优选的,所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数据到第三目标内存空间中的步骤包括获取所述序列化后的数据的首地址和数据长度信息;依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空间;根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目标内存空间中。优选的,所述第六通知信息进ー步包括所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识;则所述释放所述分配的第三目标内存空间的步骤包括依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并获得所述BHO进程的进程对象句柄;依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地址信息,释放所述框BHO进程分配的第三目标内存空间。优选的,进ー步包括接收浏览器的FRAME进程发送来的第七通知信息,该第七通知信息携帯所述FRAME进程中分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识;依据所述FRAME进程的进程标识获取该FRAME进程的进程对象句柄;使用该进程对象句柄依据所述第四目标内存空间的地址信息获取数据进行处理;处理结束后发送第八通知信息到所述FRAME进程,通知所述FRAME进程所述BHO进程对所述第四目标内存空间中的数据处理完毕。优选的,所述第八通知信息进ー步包括所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。优选的,所述浏览器辅助对象进程是登录控件的BHO子进程。优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。为解决上述问题,本发明还公开了ー种浏览器中进程间通信的装置,包括第一数据序列化模块,其配置为浏览器的框架进程FRAME对将传输数据进行序列化操作;第一内存空间获取模块,其配置为所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中;第一通知信息发送模块,其配置为所述FRAME进程异步发送第一通知信息到浏览器辅助对象进程BH0,所述通知信息中携帯第一目标内存空间的地址信息以及所述FRAME进程的进程标识;第二通知信息接收模块,其配置为接收到所述浏览器辅助对象进程BHO返回的第二通知信息,通知对所述传输数据在所述BHO进程中处理结束;第一内存空间释放模块,其配置为释放分配的第一目标内存空间。
优选的,所述第一内存空间获取模块包括第一数据提取単元,其配置为获取所述序列化后的数据的首地址和数据长度信息;
第一内存空间分配単元,其配置为依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配第一目标内存空间;第一数据复制単元,其配置为根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第一目标内存空间中。优选的,所述第一数据序列化模块包括重载单元,其配置为采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据对应不同的重载运算符。优选的,所述第二通知信息进ー步包括所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识;则所述第一内存空间释放模块进一歩包括第二内存释放单元,其配置为依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理,并获得所述FRAME进程的进程对象句柄;依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地址信息,释放所述FRAME进程分配的第一目标内存空间。优选的,进ー步包括第三通知信息接收模块,其配置为接收浏览器的BHO进程发送来的第三通知信息,该第三通知信息携帯所述BHO进程中分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识;第一进程句柄获取模块,其配置为依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄;第二数据处理模块,其配置为使用该进程对象句柄依据所述第二目标内存空间的地址信息获取数据进行处理;第四通知信息发送模块,其配置为处理结束后发送第四通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME进程对所述第二目标内存空间中的数据处理完毕。优选的,所述第四通知信息进ー步包括所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。优选的,所述浏览器辅助对象进程BHO是登录用控件的BHO子进程。优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。为解决上述问题,本发明还公开了ー种浏览器中进程间通信的装置,包括第二数据序列化模块,其配置为浏览器的辅助对象进程BHO对将传输数据进行序列化操作;第三内存空间获取模块,其配置为所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数据到第三目标内存空间中;第五通知信息发送模块,其配置为所述BHO进程同步发送第五通知信息到浏览器的FRAME进程,所述通知信息中携帯第三目标内存空间的地址信息以及所述BHO进程的进程标识;第六通知信息接收模块,其配置为接收到所述浏览器的FRAME进程返回的第六通知信息,通知对所述传输数据在所述FRAME进程中处理结束;第三内存空间释放模块,其配置为释放分配的第三目标内存空间。优选的,所述第三内存空间获取模块包括第三数据提取単元,其配置为获取所述序列化后的数据的首地址和数据长度信息;第三内存空间分配単元,其配置为依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空间;
第三数据复制単元,其配置为根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目标内存空间中。优选的,所述第六通知信息进ー步包括所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识;则所第三内存空间释放模块进一歩包括第三内存释放単元,其配置为依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并获得所述BHO进程的进程对象句柄;依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地址信息,释放所述框BHO进程分配的第三目标内存空间。优选的,进ー步包括第七通知信息接收模块,其配置为接收浏览器的FRAME进程发送来的第七通知信息,该第七通知信息携帯所述FRAME进程中分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识;第二进程句柄获取模块,其配置为依据所述FRAME进程的进程标识获取该FRAME进程的进程对象句柄;第四数据处理模块,其配置为使用该进程对象句柄依据所述第四目标内存空间的地址信息获取数据进行处理;第八通知信息发送模块,其配置为处理结束后发送第八通知信息到所述FRAME进程,通知所述FRAME进程所述BHO进程对所述第四目标内存空间中的数据处理完毕。优选的,所述第八通知信息进ー步包括所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。优选的,所述浏览器辅助对象进程是登录控件的BHO子进程。优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。与现有技术相比,本发明具有以下优点现有浏览器中多个进程间进行通信是以共享内存方式对数据进行读写,但由于进程往往无法及时从共享内存中获取数据,因此容易造成数据读写错乱的问题。本发明的浏览器框架FRAME进程或浏览器辅助对象进程BHO在发送数据前首先对数据进行序列化操作,然后在其虚拟地址空间中分配第一目标内存空间,并复制序列化后的数据到第一目标内存空间,其次,发送携帯有第一目标内存空间地址信息和发送方进程标识的通知信息,接收方进程基于该通知信息即可完成对第一目标内存空间中数据的读写。因为不同的数据(例如数据I和数据2)分别存放在不同的相应的内存空间段中(例如内存空间段I和内存空间段2),这样,即使发送方进程在接收方进程读取数据I之前将数据2写入了内存空间段2,并发消息通知接收方进程去读取数据2,接收方进程也不会读取错数据,并且,发送方进程不必等待接收方进程执行完读取等处理操作,即可发送新的数据,总之,本发明能够在保证读写数据不错乱的同时提高浏览器中进程的执行效率和进程间的通信效率。另外,本发明将序列化操作完毕后的数据作为内存空间的存储对象,故本发明可以支持无限深度数据的存储,能够方便大量复杂数据结构的交互。


图I示出了现有技术ー种浏览器中以共享内存方式进程通信方法的流程示意图; 图2示出了本发明所述ー种浏览器中进程间通信的方法的实施例I的流程示意图;图3示出了本发明所述ー种浏览器中进程间通信的方法的实施例2的流程示意图;图4示出了本发明所述ー种浏览器中进程间通信的方法的实施例3的流程示意图;图5示出了本发明所述ー种浏览器中进程间通信的方法一应用实施例的流程示意图;图6示出了本发明所述ー种浏览器中进程间通信装置一实施例的结构示意图;图7示出了本发明所述ー种浏览器中进程间通信装置的另ー实施例的结构示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面以浏览器框架进程(FRAME)为发送方进程,BHO (Browser Helper Ob ject,浏览器辅助对象)进程为接收方进程为例,结合附图和具体实施方式
对本发明作进ー步详细的说明。參照图2,图2示出了本发明所述ー种浏览器中进程间通信方法的实施例一流程示意图,所述方法包括步骤201,FRAME进程对将传输数据进行序列化操作。首先,对将传数据进行序列化操作,创建序列化对象,并在该序列化对象中记录序列化内存的首地址、当前地址和内存总大小等信息;其次,存储将传数据到所述序列化内存中。具体而言,可根据序列化对象中所记录的内存总大小,依次向对应的序列化内存中存放序列化操作完毕后的数据。例如,对应的序列化内存的内存总大小为4GB,首地址为0x00000000,假设发送给接收方进程的数据有5条,序列化操作后的大小分别为0. 1G、0. 2G、0. 5G、0. 6G、0. 8G,假设依次往该序列化内存中存放这5条数据,则当前地址随着毎次存放而不断变化。不同的数据类型如字符串、整数等,其结构体是分块的,在内存空间中是不连续的几段空间,本发明实施例通过对数据进行序列化操作后可以把数据原本不连续的几段内存空间变成一段连续的内存地址,因此,本发明实施例可以为结构体中任意深度的数据结构分配内存空间,保证了数据的深层拷贝。在本发明的另ー优选实施例中,所述FRAME进程对将传输数据进行序列化操作的步骤进一歩包括采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据对应不同的重载运算符。本优选实施例 使用重载运算符〈く对将传数据进行序列化。假设序列化对象的名称为 CSerializeObject & obj,则可以米用 obj〈〈m_nId; obj〈〈m_strGenName 等重载运算符。“〈ぐ’运算符经过多次重载,可以针对不同的数据类型执行了不同的内存分配。例如针对int类型的数据,分配方式可以为memcpy(pBuff, &nValue, sizeof (int));而针对string类型的数据,分配方式可以为_tcscpy(pStr, strValue. c_str())。对于其他类型的数据所采用的重载运算符请相互參照即可,在此不进行一一列举。步骤202,FRAME进程在其虚拟地址空间中分配目标内存空间,并复制获取序列化后的数据到目标内存空间中。在本发明另一优选实施例中,步骤202进ー步包括获取所述序列化后的数据的首地址和数据长度信息;依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配目标内存空间;根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的目标内存空间中。具体而言首先,调用obj. GetBuffer (&lpData, &dwLength)来取得对数据序列化后的内存首地址及长度;其次,调用VirtualAllocEx (GetCurrentProcess (),NULL, sizeof (TWHMessage)
,MEM_C0MMIT, PAGE_READWRI TE)在进程的地址空间上获得ー块内存。其中,第一个參数GetCurrentProcess ()可以获得进程句柄,第二个參数为NULL表示由函数自己决定分配到明5儿,第三个參数是内存的大小,第四个參数表示分配ー块内存空间,第五个參数表示允许读写操作;最后,调用memcpy将之前序列化的内存拷贝到分配的目标内存空间中。步骤203,所述FRAME进程异步发送通知信息到BHO进程,所述通知信息中携帯目标内存空间的地址信息以及所述FRAME进程的进程标识。其中,发送给BHO进程的通知信息中携帯的目标内存空间地址信息和FRAME进程标识分别为所述目标内存空间的指针和FRAME进程的进程ID。浏览器辅助对象BHO是作为浏览器对第三方程序员开放交互接ロ的业界标准,通过简单的代码就可以进入浏览器领域的“交互接ロ”(INTERACTIVED Interface)。通过这个接ロ,程序员可以编写代码获取浏览器的行为,比如“后退”、“前迸”、“当前页面”等,利用BHO的交互特性,程序员还可以用代码控制浏览器行为,比如修改替换浏览器工具栏,添加自己的程序按钮等。BHO对象依托于浏览器主窗ロ。实际上,这意味着一旦一个浏览器窗ロ产生,一个新的BHO对象实例就要生成。任何BHO对象与浏览器实例的生命周期是一致的优选的,本发明实施例所述BHO进程是登录用控件的BHO子进程,该登录控件以按钮的形式添加在浏览器中,用于对浏览器窗口中网页标签中的登录表单进行处理;当浏览器窗口中同时打开了多个标签页面时,其对应的BHO进程亦为多个,其中每ー个标签页面就是ー个BHO子进程。步骤204,FRAME进程接收到所述BHO进程返回的通知信息,通知对所述传输数据在所述BHO进程中处理结束。步骤205,释放分配的第一目标内存空间。BHO进程对目标内存空间中的数据处理完毕后,FRAME进程释放该目标内存空间以节省系统资源。在本发明的另ー优选实施例中,所述步骤204中BHO进程返回的通知信息中还包 括所述分配的目标内存空间的地址信息以及所述FRAME进程标识;所述步骤204释放分配的第一目标内存空间进一歩包括首先,依据BHO返回通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理,并获得所述FRAME进程的进程对象句柄。具体的,调用OpenProcess函数(重要參数为发送方进程ID,即FRAME返回通知信息中的FRAME进程标识),获得发送方的进程对象句柄。其次,依据所述FRAME进程的进程对象句柄和BHO返回通知信息中的目标内存空间的地址信息,释放所述FRAME进程分配的目标内存空间。具体的,调用VirtualFreeEx函数释放(重要參数为上一歩取得的进程句柄,以及之前分配内存的数据指针),并调用CloseHandle函数关闭线程句柄。在本发明的另ー优选实施例中,所述方法还包括FRAME进程接收BHO进程发送来的通知信息,该通知信息携帯所述BHO进程中分配的目标内存空间的地址信息以及所述BHO进程的进程标识;依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄;使用BHO进程对象句柄依据所述BHO进程分配的目标内存空间的地址信息获取数据进行处理;处理结束后发送通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME进程对其目标内存空间中的数据处理完毕。通过以上优选实施例的描述可知,所述FRAME进程和BHO进程可互为发送方进程和接收方进程进行浏览器中进程间的通信。以上是本发明实施例一所述方案的内容,本领域技术人员应当理解,上述实施例中出现的函数、參数只是为了更好地理解本发明的内容,当本发明被应用于不同的操作系统或应用环境时,完全可根据实际需要选择或命名所需要的函数和參数,本发明对此不作限制。參见图3,图3示出了本发明所述ー种浏览器中进程间通信方法的实施例ニ的流程示意图。在本实施例中,BHO同步发送数据到Frame,Frame读取数据,最后BHO释放内存,所述方法具体包括步骤301,BHO进程对将传输数据进行序列化操作。步骤302,BHO进程在其虚拟地址空间中分配目标内存空间,并复制序列化后的数据到所述目标内存空间中。具体包括获取所述序列化后的数据的首地址和数据长度信息;依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空间;根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目标内存空间中。例如LPV0IDpString=StructVirtualAlloc ();步骤303,BHO进程同步发送通知信息到浏览器的FRAME进程,所述通知信息中携带所述目标内存空间的地址信息以及所述BHO进程的进程标识。步骤304,BHO进程接收到所述浏览器的FRAME进程返回的通知信息,通知对所述传输数据在所述FRAME进程中处理结束。步骤305,BHO进程释放分配的目标内存空间。
例如,调用函数StructVirtualFree (pString)释放目标内存空间。优选的,所述FRAME进程返回的通知信息进ー步包括所述分配的目标内存空间的地址信息以及所述BHO进程的进程标识;所述BHO进程释放分配的目标内存空间进一歩包括依据FRAME进程返回通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并获得所述BHO进程的进程对象句柄;依据所述BHO进程的的进程对象句柄和所述通知信息中的目标内存空间的地址信息,释放所述框BHO进程分配的目标内存空间。參见图4,图4示出了本发明所述ー种浏览器中进程间通信方法的实施例三的流程示意图。在本实施例中,BHO进程同步发送通知信息到Frame进程,Frame进程将数据填充进BHO的目标内存空间,最后BHO进程完成对目标内存空间的处理后释放内存,所述方法具体包括步骤401,BHO进程在其虚拟地址空间中分配目标内存空间。步骤402,BHO进程同步发送通知信息到FRAME进程,所述通知信息中携帯所述目标内存空间的地址信息以及所述BHO进程的进程标识。步骤403,FRAME进程对将传数据进行序列化操作。存储将传数据到序列化内存中。步骤404,当FRAME进程接收BHO进程发送的通知信息,复制将传数据到BHO进程的目标内存空间中。根据BHO进程通知消息中的BHO进程标识获得所述BHO进程的进程对象句柄;依据所述BHO进程的的进程对象句柄和所述通知信息中的目标内存空间的地址信息,将所述序列化内存中的数据复制到所述目标内存空间中。步骤405,BHO进程接收到FRAME进程返回的通知信息,通知对所述传输数据在所述FRAME进程中处理结束。优选的,所述FRAME进程返回的通知信息中还包括BHO进程的目标内存地址信息和BHO进程标识。步骤406,BHO进程读取目标内存空间中的数据。步骤407,BHO进程释放目标内存空间。为了更好理解本发明实施例的内容,下面參见图5,结合一个实例对本发明所述的ー种浏览器间通信方法做进ー步描述。在本实施例中,主进程FRAME与标签页面A、B、C对应的BHO子进程进行通信,具体包括
參照表1,示出了本示例中用到的ー些函数的功能和參数释义。
权利要求
1.一种浏览器中进程间通信的方法,其特征在于,包括 浏览器的框架FRAME进程对将传输数据进行序列化操作; 所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中; 所述FRAME进程异步发送第一通知信息到浏览器辅助对象BHO进程,所述通知消息中携帯第一目标内存空间的地址信息以及所述FRAME进程的进程标识; 接收到所述BHO进程返回的第二通知信息,通知对所述传输数据在所述BHO进程中处理结束; 释放分配的第一目标内存空间。
2.如权利要求I所述的方法,其特征在于,所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中的步骤包括 获取所述序列化后的数据的首地址和数据长度信息; 依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配第一目标内存空间; 根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第一目标内存空间中。
3.如权利要求I所述的方法,其特征在于,所述FRAME进程对将传输数据进行序列化操作的步骤进一歩包括 采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据对应不同的重载运算符。
4.如权利要求I所述的方法,其特征在于,所述第二通知信息进ー步包括 所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识; 则所述释放所述分配的第一目标内存空间的步骤进一歩包括 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理,并获得所述FRAME进程的进程对象句柄; 依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地址信息,释放所述FRAME进程分配的第一目标内存空间。
5.如权利要求I所述的方法,其特征在干,进ー步包括 接收浏览器的BHO进程发送来的第三通知信息,该第三通知信息携帯所述BHO进程中分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识; 依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄; 使用该进程对象句柄依据所述第二目标内存空间的地址信息获取数据进行处理;处理结束后发送第四通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME进程对所述第二目标内存空间中的数据处理完毕。
6.如权利要求5所述的方法,其特征在于,所述第四通知信息进ー步包括 所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。
7.如权利要求I所述的方法,其特征在于,所述浏览器辅助对象进程BHO是登录用控件的BHO子进程。
8.如权利要求I所述的方法,其特征在于,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
9.一种浏览器中进程间通信的方法,其特征在于,包括 浏览器的辅助对象进程BHO对将传输数据进行序列化操作; 所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数据到第三目标内存空间中; 所述BHO进程同步发送第五通知信息到浏览器的框架FRAME进程,所述通知信息中携带第三目标内存空间的地址信息以及所述BHO进程的进程标识; 接收到所述浏览器的FRAME进程返回的第六通知信息,通知对所述传输数据在所述FRAME进程中处理结束; 释放分配的第三目标内存空间。
10.如权利要求9所述的方法,其特征在于,所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数据到第三目标内存空间中的步骤包括 获取所述序列化后的数据的首地址和数据长度信息; 依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空间;根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目标内存空间中。
11.如权利要求9所述的方法,其特征在于,所述第六通知信息进ー步包括 所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识; 则所述释放所述分配的第三目标内存空间的步骤包括 依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并获得所述BHO进程的进程对象句柄; 依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地址信息,释放所述框BHO进程分配的第三目标内存空间。
12.如权利要求9所述的方法,其特征在干,进ー步包括 接收浏览器的FRAME进程发送来的第七通知信息,该第七通知信息携帯所述FRAME进程中分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识; 依据所述FRAME进程的进程标识获取该FRAME进程的进程对象句柄; 使用该进程对象句柄依据所述第四目标内存空间的地址信息获取数据进行处理;处理结束后发送第八通知信息到所述FRAME进程,通知所述FRAME进程所述BHO进程对所述第四目标内存空间中的数据处理完毕。
13.如权利要求12所述的方法,其特征在于,所述第八通知信息进ー步包括 所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。
14.如权利要求9所述的方法,其特征在干,所述浏览器辅助对象进程是登录控件的BHO子进程。
15.如权利要求9所述的方法,其特征在于,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
16.一种浏览器中进程间通信的装置,其特征在于,包括 第一数据序列化模块,其配置为浏览器的框架进程FRAME对将传输数据进行序列化操作;第一内存空间获取模块,其配置为所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中; 第一通知信息发送模块,其配置为所述FRAME进程异步发送第一通知信息到浏览器辅助对象进程BHO,所述通知信息中携帯第一目标内存空间的地址信息以及所述FRAME进程的进程标识; 第二通知信息接收模块,其配置为接收到所述浏览器辅助对象进程BHO返回的第二通知信息,通知对所述传输数据在所述BHO进程中处理结束; 第一内存空间释放模块,其配置为释放分配的第一目标内存空间。
17.如权利要求16所述的装置,其特征在于,所述第一内存空间获取模块包括 第一数据提取単元,其配置为获取所述序列化后的数据的首地址和数据长度信息; 第一内存空间分配単元,其配置为依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配第一目标内存空间; 第一数据复制単元,其配置为根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第一目标内存空间中。
18.如权利要求16所述的装置,其特征在于,所述第一数据序列化模块包括 重载单元,其配置为采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据对应不同的重载运算符。
19.如权利要求16所述的装置,其特征在于,所述第二通知信息进ー步包括 所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识; 则所述第一内存空间释放模块进一歩包括 第二内存释放単元,其配置为 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理,并获得所述FRAME进程的进程对象句柄; 依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地址信息,释放所述FRAME进程分配的第一目标内存空间。
20.如权利要求16所述的装置,其特征在干,进ー步包括 第三通知信息接收模块,其配置为接收浏览器的BHO进程发送来的第三通知信息,该第三通知信息携帯所述BHO进程中分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识; 第一进程句柄获取模块,其配置为依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄; 第二数据处理模块,其配置为使用该进程对象句柄依据所述第二目标内存空间的地址信息获取数据进行处理; 第四通知信息发送模块,其配置为处理结束后发送第四通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME进程对所述第二目标内存空间中的数据处理完毕。
21.如权利要求20所述的装置,其特征在于,所述第四通知信息进ー步包括 所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。
22.如权利要求16所述的装置,其特征在于,所述浏览器辅助对象进程BHO是登录用控件的BHO子进程。
23.如权利要求16所述的装置,其特征在于,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
24.一种浏览器中进程间通信的装置,其特征在于,包括 第二数据序列化模块,其配置为浏览器的辅助对象进程BHO对将传输数据进行序列化操作; 第三内存空间获取模块,其配置为所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数据到第三目标内存空间中; 第五通知信息发送模块,其配置为所述BHO进程同步发送第五通知信息到浏览器的FRAME进程,所述通知信息中携帯第三目标内存空间的地址信息以及所述BHO进程的进程标识; 第六通知信息接收模块,其配置为接收到所述浏览器的FRAME进程返回的第六通知信息,通知对所述传输数据在所述FRAME进程中处理结束; 第三内存空间释放模块,其配置为释放分配的第三目标内存空间。
25.如权利要求24所述的装置,其特征在于,所述第三内存空间获取模块包括 第三数据提取単元,其配置为获取所述序列化后的数据的首地址和数据长度信息; 第三内存空间分配単元,其配置为依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空间; 第三数据复制単元,其配置为根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目标内存空间中。
26.如权利要求24所述的装置,其特征在于,所述第六通知信息进ー步包括 所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识; 则所第三内存空间释放模块进一歩包括 第三内存释放単元,其配置为 依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并获得所述BHO进程的进程对象句柄; 依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地址信息,释放所述框BHO进程分配的第三目标内存空间。
27.如权利要求24所述的装置,其特征在干,进ー步包括 第七通知信息接收模块,其配置为接收浏览器的FRAME进程发送来的第七通知信息,该第七通知信息携帯所述FRAME进程中分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识; 第二进程句柄获取模块,其配置为依据所述FRAME进程的进程标识获取该FRAME进程的进程对象句柄; 第四数据处理模块,其配置为使用该进程对象句柄依据所述第四目标内存空间的地址信息获取数据进行处理; 第八通知信息发送模块,其配置为处理结束后发送第八通知信息到所述FRAME进程,通知所述FRAME进程所述BHO进程对所述第四目标内存空间中的数据处理完毕。
28.如权利要求24所述的装置,其特征在于,所述第八通知信息进ー步包括 所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。
29.如权利要求24所述的装置,其特征在干,所述浏览器辅助对象进程是登录控件的BHO子进程。
30.如权利要求24所述的装置,其特征在于,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
全文摘要
本发明提供了一种浏览器中进程间通信的方法和装置,所述方法包括浏览器的框架FRAME进程对将传输数据进行序列化操作;所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中;所述FRAME进程异步发送第一通知信息到浏览器辅助对象BHO进程,所述通知消息中携带第一目标内存空间的地址信息以及所述FRAME进程的进程标识;接收到所述BHO进程返回的第二通知信息,通知对所述传输数据在所述BHO进程中处理结束;释放分配的第一目标内存空间。因为不同的数据分别存放在不同的相应的内存空间段中,因此BHO进程不会读错数据,提高了浏览器中进程间通信的效率。
文档编号G06F9/54GK102779076SQ20121022697
公开日2012年11月14日 申请日期2012年6月29日 优先权日2012年6月29日
发明者任寰, 杭程, 段培堃, 谢志宏 申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1