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

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

【发明内容】

[0007] 本发明所要解决的技术问题是提供一种浏览器中进程间通信的方法和装置,以便 在保证进程间通信不出现读写错乱的情况下提高进程通信的执行效率。
[0008] 为了解决上述问题,本发明公开了一种浏览器中进程间通信的方法,包括:
[0009] 浏览器的框架FRAME进程对将传输数据进行序列化操作;
[0010] 所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化 后的数据到第一目标内存空间中;
[0011] 所述FRAME进程异步发送第一通知信息到浏览器辅助对象BHO进程,所述通知消息 中携带第一目标内存空间的地址信息以及所述FRAME进程的进程标识;
[0012]接收到所述BHO进程返回的第二通知信息,通知对所述传输数据在所述BHO进程中 处理结束;
[0013]释放分配的第一目标内存空间。
[0014] 优选的,所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取 序列化后的数据到第一目标内存空间中的步骤包括:
[0015] 获取所述序列化后的数据的首地址和数据长度信息;
[0016] 依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配第一目标内存 空间;
[0017] 根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第一目 标内存空间中。
[0018] 优选的,所述FRAME进程对将传输数据进行序列化操作的步骤进一步包括:
[0019] 采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据 对应不同的重载运算符。
[0020] 优选的,所述第二通知信息进一步包括:
[0021 ]所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识;
[0022]则所述释放所述分配的第一目标内存空间的步骤进一步包括:
[0023] 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理, 并获得所述FRAME进程的进程对象句柄;
[0024]依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地 址信息,释放所述FRAME进程分配的第一目标内存空间。5、如权利要求1所述的方法,进一步 包括:
[0025]接收浏览器的BHO进程发送来的第三通知信息,该第三通知信息携带所述BHO进程 中分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识;
[0026] 依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄;
[0027]使用该进程对象句柄依据所述第二目标内存空间的地址信息获取数据进行处理; [0028] 处理结束后发送第四通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME 进程对所述第二目标内存空间中的数据处理完毕。
[0029] 优选的,所述第四通知信息进一步包括:
[0030] 所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。
[0031]优选的,所述浏览器辅助对象进程BHO是登录用控件的BHO子进程。
[0032]优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
[0033] 为解决上述问题,本发明还公开了一种浏览器中进程间通信的方法,包括:
[0034] 浏览器的辅助对象进程BHO对将传输数据进行序列化操作;
[0035]所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数 据到第三目标内存空间中;
[0036] 所述BHO进程同步发送第五通知信息到浏览器的框架FRAME进程,所述通知信息中 携带第三目标内存空间的地址信息以及所述BHO进程的进程标识;
[0037]接收到所述浏览器的FRAME进程返回的第六通知信息,通知对所述传输数据在所 述FRAME进程中处理结束;
[0038]释放分配的第三目标内存空间。
[0039]优选的,所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化 后的数据到第三目标内存空间中的步骤包括:
[0040] 获取所述序列化后的数据的首地址和数据长度信息;
[0041] 依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空 间;
[0042]根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目 标内存空间中。
[0043]优选的,所述第六通知信息进一步包括:
[0044]所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识;
[0045]则所述释放所述分配的第三目标内存空间的步骤包括:
[0046] 依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并 获得所述BHO进程的进程对象句柄;
[0047]依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地 址信息,释放所述框BHO进程分配的第三目标内存空间。
[0048]优选的,进一步包括:
[0049] 接收浏览器的FRAME进程发送来的第七通知信息,该第七通知信息携带所述FRAME 进程中分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识;
[0050] 依据所述FRAME进程的进程标识获取该FRAME进程的进程对象句柄;
[0051]使用该进程对象句柄依据所述第四目标内存空间的地址信息获取数据进行处理; [0052] 处理结束后发送第八通知信息到所述FRAME进程,通知所述FRAME进程所述BHO进 程对所述第四目标内存空间中的数据处理完毕。
[0053] 优选的,所述第八通知信息进一步包括:
[0054] 所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。
[0055]优选的,所述浏览器辅助对象进程是登录控件的BHO子进程。
[0056] 优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
[0057] 为解决上述问题,本发明还公开了一种浏览器中进程间通信的装置,包括:
[0058] 第一数据序列化模块,其配置为浏览器的框架进程FRAME对将传输数据进行序列 化操作;
[0059] 第一内存空间获取模块,其配置为所述FRAME进程在其虚拟地址空间中分配第一 目标内存空间,并复制获取序列化后的数据到第一目标内存空间中;
[0060] 第一通知信息发送模块,其配置为所述FRAME进程异步发送第一通知信息到浏览 器辅助对象进程BHO,所述通知信息中携带第一目标内存空间的地址信息以及所述FRAME进 程的进程标识;
[0061] 第二通知信息接收模块,其配置为接收到所述浏览器辅助对象进程BHO返回的第 二通知信息,通知对所述传输数据在所述BHO进程中处理结束;
[0062] 第一内存空间释放模块,其配置为释放分配的第一目标内存空间。
[0063]优选的,所述第一内存空间获取模块包括:
[0064]第一数据提取单元,其配置为获取所述序列化后的数据的首地址和数据长度信 息;
[0065] 第一内存空间分配单元,其配置为依据所述数据长度信息,在所述FRAME进程的虚 拟地址空间中分配第一目标内存空间;
[0066] 第一数据复制单元,其配置为根据所述序列化后的数据的首地址,将所述序列化 后的数据复制到分配的第一目标内存空间中。
[0067] 优选的,所述第一数据序列化模块包括:
[0068] 重载单元,其配置为采用重载运算符对将传输数据进行序列化操作,其中不同数 据类型的将传输数据对应不同的重载运算符。
[0069] 优选的,所述第二通知信息进一步包括:
[0070] 所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识;
[0071] 则所述第一内存空间释放模块进一步包括:
[0072]第二内存释放单元,其配置为:
[0073] 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理, 并获得所述FRAME进程的进程对象句柄;
[0074]依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地 址信息,释放所述FRAME进程分配的第一目标内存空间。
[0075]优选的,进一步包括:
[0076]第三通知信息接收模块,其配置为接收浏览器的BHO进程发送来的第三通知信息, 该第三通知信息携带所述BHO进程中分配的第二目标内存空间的地址信息以及所述BHO进 程的进程标识;
[0077]第一进程句柄获取模块,其配置为依据所述BHO进程的进程标识获取该BHO进程的 进程对象句柄;
[0078]第二数据处理模块,其配置为使用该进程对象句柄依据所述第二目标内存空间的 地址信息获取数据进行处理;
[0079]第四通知信息发送模块,其配置为处理结束后发送第四通知信息到所述BHO进程, 通知所述BHO进程浏览器的FRAME进程对所述第二目标内存空间中的数据处理完毕。
[0080] 优选的,所述第四通知信息进一步包括:
[0081] 所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。
[0082]优选的,所述浏览器辅助对象进程BHO是登录用控件的BHO子进程。
[0083]优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
[0084] 为解决上述问题,本发明还公开了一种浏览器中进程间通信的装置,包括:
[0085] 第二数据序列化模块,其配置为浏览器的辅助对象进程BHO对将传输数据进行序 列化操作;
[0086]第三内存空间获取模块,其配置为所述BHO进程在其虚拟地址空间中分配第三目 标内存空间,并复制序列化后的数据到第三目标内存空间中;
[0087]第五通知信息发送模块,其配置为所述BHO进程同步发送第五通知信息到浏览器 的FRAME进程,所述通知信息中携带第三目标内存空间的地址信息以及所述BHO进程的进程 标识;
[0088]第六通知信息接收模块,其配置为接收到所述浏览器的FRAME进程返回的第六通 知信息,通知对所述传输数据在所述FRAME进程中处理结束;
[0089]第三内存空间释放模块,其配置为释放分配的第三目标内存空间。
[0090]优选的,所述第三内存空间获取模块包括:
[0091] 第三数据提取单元,其配置为获取所述序列化后的数据的首地址和数据长度信 息;
[0092] 第三内存空间分配单元,其配置为依据所述数据长度信息,在所述BHO进程的虚拟 地址空间中分配第三目标内存空间;
[0093] 第三数据复制单元,其配置为根据所述序列化后的数据的首地址,将所述序列化 后的数据复制到分配的第三目标内存空间中。
[0094] 优选的,所述第六通知信息进一步包括:
[0095]所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识;
[0096]则所第三内存空间释放模块进一步包括:
[0097]第三内存释放单元,其配置为:
[0098] 依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并 获得所述BHO进程的进程对象句柄;
[0099]依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地 址信息,释放所述框BHO进程分配的第三目标内存空间。
[0100]优选的,进一步包括:
[0101]第七通知信息接收模块,其配置为接收浏览器的FRAME进程发送来的第七通知信 息,该第七通知信息携带所述FRAME进程中分配的第四目标内存空间的地址信息以及所述 FRAME进程的进程标识;
[0102] 第二进程句柄获取模块,其配置为依据所述FRAME进程的进程标识获取该FRAME进 程的进程对象句柄;
[0103] 第四数据处理模块,其配置为使用该进程对象句柄依据所述第四目标内存空间的 地址信息获取数据进行处理;
[0104]第八通知信息发送模块,其配置为处理结束后发送第八通知信息到所述FRAME进 程,通知所述FRAME进程所述BHO进程对所述第四目标内存空间中的数据处理完毕。
[0105] 优选的,所述第八通知信息进一步包括:
[0106] 所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。
[0107] 优选的,所述浏览器辅助对象进程是登录控件的BHO子进程。
[0108]优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
[0109] 与现有技术相比,本发明具有以下优点:
[0110] 现有浏览器中多个进程间进行通信是以共享内存方式对数据进行读写,但由于进 程往往无法及时从共享内存中获取数据,因此容易造成数据读写错乱的问题。本发明的浏 览器框架FRAME进程或浏览器辅助对象进程BHO在发送数据前首先对数据进行序列化操作, 然后在其虚拟地址空间中分配第一目标内存空间,并复制序列化后的数据到第一目标内存 空间,其次,发送携带有第一目标内存空间地址信息和发送方进程标识的通知信息,接收方 进程基于该通知信息即可完成对第一目标内存空间中数据的读写。因为不同的数据(例如 数据1和数据2)分别存放在不同的相应的内存空间段中(例如内存空间段1和内存空间段 2),这样,即使发送方进程在接收方进程读取数据1之前将数据2写入了内存空间段2,并发 消息通知接收方进程去读取数据2,接收方进程也不会读取错数据,并且,发送方进程不必 等待接收方进程执行完读取等处理操作,即可发送新的数据,总之,本发明能够在保证读写 数据不错乱的同时提高浏览器中进程的执行效率和进程间的通信效率。 另外,本发明将序列化操作完毕后的数据作为内存空间的存储对象,故本发明可 以支持无限深度数据的存储,能够方便大量复杂数据结构的交互。
【附图说明】
[0112] 图1示出了现有技术一种浏览器中以共享内存方式进程通信方法的流程示意图;
[0113] 图2示出了本发明所述一种浏览器中进程间通信的方法的实施例1的流程示意图;
[0114] 图3示出了本发明所述一种浏览器中进程间通信的方法的实施例2的流程示意图;
[0115] 图4示出了本发明所述一种浏览器中进程间通信的方法的实施例3的流程示意图;
[0116] 图5示出了本发明所述一种浏览器中进程间通信的方法一应用实施例的流程示意 图;
[0117] 图6示出了本发明所述一种浏览器中进程间通信装置一实施例的结构示意图;
[0118] 图7示出了本发明所述一种浏览器中进程间通信装置的另一实施例的结构示意 图。
【具体实施方式】
[0119] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面以浏览器框架进程 (FRAME)为发送方进程,BH0(Browser Helper Object,浏览器辅助对象)进程为接收方进程 为例,结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0120] 参照图2,图2示出了本发明所述一种浏览器中进程间通信方法的实施例一流程示 意图,所述方法包括:
[0121 ]步骤201 ,FRAME进程对将传输数据进行序列化操作。
[0122] 首先,对将传数据进行序列化操作,创建序列化对象,并在该序列化对象中记录序 列化内存的首地址、当前地址和内存总大小等信息;其次,存储将传数据到所述序列化内存 中。具体而言,可根据序列化对象中所记录的内存总大小,依次向对应的序列化内存中存放 序列化操作完毕后的数据。
[0123] 例如,对应的序列化内存的内存总大小为4GB,首地址为0x00000000,假设发送给 接收方进程的数据有5条,序列化操作后的大小分别为0.1 G、0.2G、0.5G、0.6G、0.8G,假设依 次往该序列化内存中存放这5条数据,则当前地址随着每次存放而不断变化。
[0124] 不同的数据类型如字符串、整数等,其结构体是分块的,在内存空间中是不连续的 几段空间,本发明实施例通过对数据进行序列化操作后可以把数据原本不连续的几段内存 空间变成一段连续的内存地址,因此,本发明实施例可以为结构体中任意深度的数据结构 分配内存空间,保证了数据的深层拷贝。
[0125] 在本发明的另一优选实施例中,所述FRAME进程对将传输数据进行序列化操作的 步骤进一步包括:采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将 传输数据对应不同的重载运算符。
[0126] 本优选实施例使用重载运算符〈〈对将传数据进行序列化。假设序列化对象的名称 为〇561^&1丨26〇13」6(^&〇13」,则可以米用〇13」〈〈111_111(1;〇13」〈〈111_81^6611似1116等重载运算符。"〈 〈"运算符经过多次重载,可以针对不同的数据类型执行了不同的内存分配。例如针对int类 型的数据,分配方式可以为:memcpy(pBuff,&nValue,sizeof (int));而针对string类型的 数据,分配方式可以为:_tcscpy(pStr,strValue · c_str〇)。
[0127] 对于其他类型的数据所采用的重载运算符请相互参照即可,在此不进行一一列 举。
[0128] 步骤202,FRAME进程在其虚拟地址空间中分配目标内存空间,并复制获取序列化 后的数据到目标内存空间中。
[0129] 在本发明另一优选实施例中,步骤202进一步包括:
[0130] 获取所述序列化后的数据的首地址和数据长度信息;依据所述数据长度信息,在 所述FRAME进程的虚拟地址空间中分配目标内存空间;根据所述序列化后的数据的首地址, 将所述序列化后的数据复制到分配的目标内存空间中。
[0131] 具体而言:
[0132] 首先,调用obj .GetBuffer (&lpData,&dwLength)来取得对数据序列化后的内存首 地址及长度;
[0133] 其次,调用VirtualAllocEx(GetCurrentP;rocess〇 ,NULL,sizeof(TWHMessage), MEM_TOMMIT,PAGE_READWRITE)在进程的地址空间上获得一块内存。其中,第一个参数 GetCurrentProcessO可以获得进程句柄,第二个参数为NULL表示由函数自己决定分配到 明UL,第三个参数是内存的大小,第四个参数表示分配一块内存空间,第五个参数表示允许 读写操作;
[0134] 最后,调用memcpy将之前序列化的内存拷贝到分配的目标内存空间中。
[0135] 步骤203,所述FRAME进程异步发送通知信息到BHO进程,所述通知信息中携带目标 内存空间的地址信息以及所述FRAME进程的进程标识。
[0136] 其中,发送给BHO进程的通知信息中携带的目标内存空间地址信息和FRAME进程标 识分别为所述目标内存空间的指针和FRAME进程的进程ID。
[0137] 浏览器辅助对象BHO是作为浏览器对第三方程序员开放交互接口的业界标准,通 过简单的代码就可以进入浏览器领域的"交互接口"(INTERACTIVED Interface)。通过这个 接口,程序员可以编写代码获取浏览器的行为,比如"后退"、"前进"、"当前页面"等,利用 BHO的交互特性,程序员还可以用代码控制浏览器行为,比如修改替换浏览器工具栏,添加 自己的程序按钮等。
[0138] BHO对象依托于浏览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个 新的BHO对象实例就要生成。任何BHO对象与浏览器实例的生命周期是一致的 [0139]优选的,本发明实施例所述BHO进程是登录用控件的BHO子进程,该登录控件以按 钮的形式添加在浏览器中,用于对浏览器窗口中网页标签中的登录表单进行处理;当浏览 器窗口中同时打开了多个标签页面时,其对应的BHO进程亦为多个,其中每一个标签页面就 是一个BHO子进程。
[0140]步骤204,FRAME进程接收到所述BHO进程返回的通知信息,通知对所述传输数据在 所述BHO进程中处理结束。
[0141] 步骤205,释放分配的第一目标内存空间。
[0142] BHO进程对目标内存空间中的数据处理完毕后,FRAME进程释放该目标内存空间以 节省系统资源。
[0143] 在本发明的另一优选实施例中,所述步骤204中BHO进程返回的通知信息中还包 括:所述分配的目标内存空间的地址信息以及所述FRAME进程标识;
[0144] 所述步骤204释放分配的第一目标内存空间进一步包括:
[0145] 首先,依据BHO返回通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进 行处理,并获得所述FRAME进程的进程对象句柄。具体的,调用OpenProcess函数(重要参数 为发送方进程ID,即FRAME返回通知信息中的FRAME进程标识),获得发送方的进程对象句 柄。
[0146] 其次,依据所述FRAME进程的进程对象句柄和BHO返回通知信息中的目标内存空间 的地址信息,释放所述FRAME进程分配的目标内存空间。具体的,调用VirtualFreeEx函数释 放(重要参数为上一步取得的进程句柄,以及之前分配内存的数据指针),并调用 CloseHandle函数关闭线程句柄。
[0147] 在本发明的另一优选实施例中,所述方法还包括:
[0148] FRAME进程接收BHO进程发送来的通知信息,该通知信息携带所述BHO进程中分配 的目标内存空间的地址信息以及所述BHO进程的进程标识;
[0149] 依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄;
[0150]使用BHO进程对象句柄依据所述BHO进程分配的目标内存空间的地址信息获取数 据进行处理;
[0151] 处理结束后发送通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME进程 对其目标内存空间中的数据处理完毕。
[0152] 通过以上优选实施例的描述可知,所述FRAME进程和BHO进程可互为发送方进程和 接收方进程进行浏览器中进程间的通信。
[0153] 以上是本发明实施例一所述方案的内容,本领域技术人员应当理解,上述实施例 中出现的函数、参数只是为了更好地理解本发明的内容,当本发明被应用于不同的操作系 统或应用环境时,完全可根据实际需要选择或命名所需要的函数和参数,本发明对此不作 限制。
[0154] 参见图3,图3示出了本发明所述一种浏览器中进程间通信方法的实施例二的流程 示意图。在本实施例中,BHO同步发送数据到Frame,Frame读取数据,最后BHO释放内存,所述 方法具体包括:步骤301,ΒΗ0进程对将传输数据进行序列化操作。
[0155] 步骤302,BHO进程在其虚拟地址空间中分配目标内存空间,并复制序列化后的数 据到所述目标内存空间中。
[0156] 具体包括:获取所述序列化后的数据的首地址和数据长度信息;依据所述数据长 度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空间;根据所述序列化后的数 据的首地址,将所述序列化后的数据复制到分配的第三目标内存空间中。
[0157] 例如:LPVOID pString = StructVi;rtualAlloc();
[0158] 步骤303,BH0进程同步发送通知信息到浏览器的FRAME进程,所述通知信息中携带 所述目标内存空间的地址信息以及所述BHO进程的进程标识。
[0159] 步骤304,BH0进程接收到所述浏览器的FRAME进程返回的通知信息,通知对所述传 输数据在所述FRAME进程中处理结束。
[0160]步骤305, BHO进程释放分配的目标内存空间。
[0161 ] 例如,调用函数StructVirtualFree(pString)释放目标内存空间。
[0162] 优选的,所述FRAME进程返回的通知信息进一步包括:所述分配的目标内存空间的 地址信息以及所述BHO进程的进程标识;
[0163] 所述BHO进程释放分配的目标内存空间进一步包括:
[0164] 依据FRAME进程返回通知信息中的BHO进程的进程标识,确定为对所述BHO进程进 行处理,并获得所述BHO进程的进程对象句柄;
[0165] 依据所述BHO进程的的进程对象句柄和所述通知信息中的目标内存空间的地址信 息,释放所述框BHO进程分配的目标内存空间。
[0166] 参见图4,图4示出了本发明所述一种浏览器中进程间通信方法的实施例三的流程 示意图。在本实施例中,BHO进程同步发送通知信息到Frame进程,Frame进程将数据填充进 BHO的目标内存空间,最后BHO进程完成对目标内存空间的处理后释放内存,所述方法具体 包括:
[0167] 步骤401,BHO进程在其虚拟地址空间中分配目标内存空间。
[0168] 步骤402,BH0进程同步发送通知信息到FRAME进程,所述通知信息中携带所述目标 内存空间的地址信息以及所述BHO进程的进程标识。
[0169] 步骤403 ,FRAME进程对将传数据进行序列化操作。
[0170] 存储将传数据到序列化内存中。
[0171] 步骤404,当FRAME进程接收BHO进程发送的通知信息,复制将传数据到BHO进程的 目标内存空间中。
[0172] 根据BHO进程通知消息中的BHO进程标识获得所述BHO进程的进程对象句柄;
[0173] 依据所述BHO进程的的进程对象句柄和所述通知信息中的目标内存空间的地址信 息,将所述序列化内存中的数据复制到所述目标内存空间中。
[0174] 步骤405,BHO进程接收到FRAME进程返回的通知信息,通知对所述传输数据在所述 FRAME进程中处理结束。
[0175] 优选的,所述FRAME进程返回的通知信息中还包括BHO进程的目标内存地址信息和 BHO进程标识。
[0176] 步骤406,BHO进程读取目标内存空间中的数据。
[0177] 步骤407,BHO进程释放目标内存空间。
[0178] 为了更好理解本发明实施例的内容,下面参见图5,结合一个实例对本发明所述的 一种浏览器间通信方法做进一步描述。在本实施例中,主进程FRAME与标签页面A、B、C对应 的BHO子进程进行通信,具体包括:
[0179] 参照表1,示出了本示例中用到的一些函数的功能和参数释义。
[0181] 表1
[0182] 下面以FRAME主进程与BHOl子进程的通信过程举例说明,其它BHO子进程与FRAME 进程间的通信与其类似,这里不再赘述,该示例具体可以包括如下步骤:
[0183] 步骤SUFRAME进程在其进程的虚拟地址空间上分配一个目标内存空间,并将序列 化操作完毕的数据存储至该目标内存空间。
[0184] LPVOID IpData = StructvirtualAllocO;
[0185] 具体包括:
[0186] Al:在发送数据前,对要发送的数据进行序列化操作,并将序列化操作完毕后的数 据存储至相应的序列化内存,仓Il建CSerializeObject&obj对象,该对象中记录了序列化内 存的首地址,当前地址,内存总大小等信息;
[0187] 42:在序列化操作完毕之后,调用〇13」.66丨131^€61'(&]^〇3丨3,&(^1^1^1:11)来取得对 数据序列化后的内存首地址及长度;
[0188] A3:调用VirtualAlIocEx(GetCurrentProcess() ,NULL,sizeof (TWHMessage), MEM_C0MMIT,PAGE_READWRITE)在进程的虚拟地址空间上获得一个目标内存空间,该目标内 存空间的长度与所述序列化内存的长度相等,VirtualAllocEx函数的返回值就是该内存空 间段的地址信息;
[0189] A4、调用memcpy将之前序列化的内存拷贝到所述目标内存存空间中。
[0190] 步骤S2、FRAME进程异步发送信息至BHOl进程通知其接收数据,该消息中携带有目 标内存空间段的地址信息以及FRAME进程的进程标识。
[0191] Browser_PostMessage();
[0192] 步骤S3、BH01进程依据通知信息中携带的目标内存空间的地址信息以及FRAME进 程的进程标识读取数据。
[0193]具体包括:
[0194] BI: BHOl进程调用OpenProcess函数(重要参数为FRAME进程进程ID)获得FRAME进 程的进程对象句柄;
[0195] B2: BHOl进程调用ReadProcessMemory函数(重要参数为上一步的FRAME进程对象 句柄及地址信息),获得数据。
[0196] B3:调用CloseHandle ()函数关闭FRAME进程的进程对象句柄;
[0197] B4: BHOl进程处理数据。
[0198] 步骤S4、BHOl进程向FRAME进程发送数据处理完毕的通知信息WM_BH0_ FREEBUFFER,该数据处理完毕消息中携带有该目标内存空间的地址信息以及FRAME进程的 进程标识。
[0199] 步骤S5、FRAME进程依据该数据处理完毕通知信息释放相应的内存。
[0200] Cl:调用OpenProcess函数(重要参数为FRAME进程ID),获得FRAME进程的进程对象 句柄;
[0201] C2:调用VirtualFreeEx函数释放(重要参数为上一步取得的FRAME进程句柄,以及 目标内存空间的地址信息);
[0202] C3:调用CloseHandle()函数关闭FRAME进程的进程对象句柄。
[0203]以上对本发明所提供的一种网页标签缩微图的显示方法做了描述,下面参见上述 方法实施例的内容,对本发明的装置进行描述:
[0204] 参见图6,图6示出了本发明所述一种浏览器中进程间通信的装置一实施例的结构 示意图,所述装置包括:
[0205] 第一数据序列化模块610,其配置为浏览器的框架进程FRAME对将传输数据进行序 列化操作;
[0206] 第一内存空间获取模块620,其配置为所述FRAME进程在其虚拟地址空间中分配第 一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中;
[0207] 第一通知信息发送模块630,其配置为所述FRAME进程异步发送第一通知信息到浏 览器辅助对象进程ΒΗ0,所述通知信息中携带第一目标内存空间的地址信息以及所述FRAME 进程的进程标识;
[0208]第二通知信息接收模块640,其配置为接收到所述浏览器辅助对象进程BHO返回的 第二通知信息,通知对所述传输数据在所述BHO进程中处理结束;
[0209]第一内存空间释放模块650,其配置为释放分配的第一目标内存空间。
[0210]优选的,所述第一内存空间获取模块620包括:
[0211] 第一数据提取单元621,其配置为获取所述序列化后的数据的首地址和数据长度 信息;
[0212] 第一内存空间分配单元622,其配置为依据所述数据长度信息,在所述FRAME进程 的虚拟地址空间中分配第一目标内存空间;
[0213] 第一数据复制单元623,其配置为根据所述序列化后的数据的首地址,将所述序列 化后的数据复制到分配的第一目标内存空间中。
[0214] 优选的,所述第一数据序列化模块610包括:
[0215] 重载单元611,其配置为采用重载运算符对将传输数据进行序列化操作,其中不同 数据类型的将传输数据对应不同的重载运算符。
[0216] 优选的,所述第二通知信息进一步包括:
[0217] 所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识;
[0218] 则所述第一内存空间释放模块650进一步包括:
[0219]第二内存释放单元651,其配置为:
[0220] 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理, 并获得所述FRAME进程的进程对象句柄;
[0221] 依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地 址信息,释放所述FRAME进程分配的第一目标内存空间。
[0222] 优选的,所述装置进一步包括:
[0223]第三通知信息接收模块660,其配置为接收浏览器的BHO进程发送来的第三通知信 息,该第三通知信息携带所述BHO进程中分配的第二目标内存空间的地址信息以及所述BHO 进程的进程标识;
[0224]第一进程句柄获取模块670,其配置为依据所述BHO进程的进程标识获取该BHO进 程的进程对象句柄;
[0225] 第二数据处理模块680,其配置为使用该进程对象句柄依据所述第二目标内存空 间的地址信息获取数据进行处理;
[0226] 第四通知信息发送模块690,其配置为处理结束后发送第四通知信息到所述BHO进 程,通知所述BHO进程浏览器的FRAME进程对所述第二目标内存空间中的数据处理完毕。
[0227] 优选的,所述第四通知信息进一步包括:
[0228] 所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。
[0229] 优选的,所述浏览器辅助对象进程BHO是登录用控件的BHO子进程。
[0230]优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
[0231] 参见图7,图7示出了本发明所述一种浏览器中进程间通信的装置一实施例的结构 示意图,所述装置包括:
[0232] 第二数据序列化模块710,其配置为浏览器的辅助对象进程BHO对将传输数据进行 序列化操作;
[0233]第三内存空间获取模块720,其配置为所述BHO进程在其虚拟地址空间中分配第三 目标内存空间,并复制序列化后的数据到第三目标内存空间中;
[0234] 第五通知信息发送模块730,其配置为所述BHO进程同步发送第五通知信息到浏览 器的FRAME进程,所述通知信息中携带第三目标内存空间的地址信息以及所述BHO进程的进 程标识;
[0235] 第六通知信息接收模块740,其配置为接收到所述浏览器的FRAME进程返回的第六 通知信息,通知对所述传输数据在所述FRAME进程中处理结束;
[0236] 第三内存空间释放模块750,其配置为释放分配的第三目标内存空间。
[0237] 优选的,所述第三内存空间获取模块750包括:
[0238]第三数据提取单元751,其配置为获取所述序列化后的数据的首地址和数据长度 信息;
[0239]第三内存空间分配单元752,其配置为依据所述数据长度信息,在所述BHO进程的 虚拟地址空间中分配第三目标内存空间;
[0240]第三数据复制单元753,其配置为根据所述序列化后的数据的首地址,将所述序列 化后的数据复制到分配的第三目标内存空间中。
[0241]优选的,所述第六通知信息进一步包括:
[0242]所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识;
[0243]则所第三内存空间释放模块750进一步包括:
[0244]第三内存释放单元754,其配置为:
[0245] 依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并 获得所述BHO进程的进程对象句柄;
[0246]依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地 址信息,释放所述框BHO进程分配的第三目标内存空间。
[0247] 优选的,所述装置进一步包括:
[0248] 第七通知信息接收模块760,其配置为接收浏览器的FRAME进程发送来的第七通知 信息,该第七通知信息携带所述FRAME进程中分配的第四目标内存空间的地址信息以及所 述FRAME进程的进程标识;
[0249]第二进程句柄获取模块770,其配置为依据所述FRAME进程的进程标识获取该 FRAME进程的进程对象句柄;
[0250] 第四数据处理模块780,其配置为使用该进程对象句柄依据所述第四目标内存空 间的地址信息获取数据进行处理;
[0251] 第八通知信息发送模块790,其配置为处理结束后发送第八通知信息到所述FRAME 进程,通知所述FRAME进程所述BHO进程对所述第四目标内存空间中的数据处理完毕。
[0252] 优选的,所述第八通知信息进一步包括:
[0253] 所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。
[0254] 优选的,所述浏览器辅助对象进程是登录控件的BHO子进程。
[0255] 优选的,所述浏览器辅助对象进程BHO是两个或多个BHO进程。
[0256] 上述本发明实施例中的方法和装置适用于各种网络或者客户端环境中,例如可以 实现在诸如个人计算机设备之类的计算机设备中,或者可以实现在诸如移动电话、移动通 信设备、个人数字助理(PDA)等其他便携式电子设备或者非便携式电子设备中。因此本领域 技术人员要明确的是,本发明的保护范围并不限于PC上运行浏览器中的进程间通信方法和 装置,仅是出于描述的简洁和方便而在本发明实施例中采用了 PC上运行浏览器中的进程间 通信方法和装置进行描述。
[0257] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列 的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为 依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知 悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须 的。
[0258] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与 其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统和/或装 置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实 施例的部分说明即可。
[0259] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将 一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作 之间存在任何这种实际的关系或者顺序。
[0260] 而且,上文中的"和/或"表示本文既包含了 "和"的关系,也包含了 "或"的关系,其 中:如果方案A与方案B是"和"的关系,则表示某实施例中可以同时包括方案A和方案B;如果 方案A与方案B是"或"的关系,则表示某实施例中可以单独包括方案A,或者单独包括方案B。
[0261] 以上对本发明所提供的一种浏览器中进程间通信的方法和装置进行了详细介绍, 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用 于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的 思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为 对本发明的限制。
[0262] 本发明实施例还揭示了 AU-种浏览器中进程间通信的方法,其特征在于,包括:
[0263] 浏览器的框架FRAME进程对将传输数据进行序列化操作;
[0264] 所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化 后的数据到第一目标内存空间中;
[0265] 所述FRAME进程异步发送第一通知信息到浏览器辅助对象BHO进程,所述通知消息 中携带第一目标内存空间的地址信息以及所述FRAME进程的进程标识;
[0266] 接收到所述BHO进程返回的第二通知信息,通知对所述传输数据在所述BHO进程中 处理结束;
[0267] 释放分配的第一目标内存空间。
[0268] A2、如Al所述的方法,其特征在于,所述FRAME进程在其虚拟地址空间中分配第一 目标内存空间,并复制获取序列化后的数据到第一目标内存空间中的步骤包括:
[0269] 获取所述序列化后的数据的首地址和数据长度信息;
[0270] 依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配第一目标内存 空间;
[0271] 根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第一目 标内存空间中。
[0272] A3、如Al所述的方法,其特征在于,所述FRAME进程对将传输数据进行序列化操作 的步骤进一步包括:
[0273] 采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据 对应不同的重载运算符。
[0274] A4、如Al所述的方法,其特征在于,所述第二通知信息进一步包括:
[0275] 所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识;
[0276] 则所述释放所述分配的第一目标内存空间的步骤进一步包括:
[0277] 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理, 并获得所述FRAME进程的进程对象句柄;
[0278] 依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地 址信息,释放所述FRAME进程分配的第一目标内存空间。
[0279] A5、如Al所述的方法,其特征在于,进一步包括:
[0280]接收浏览器的BHO进程发送来的第三通知信息,该第三通知信息携带所述BHO进程 中分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识;
[0281] 依据所述BHO进程的进程标识获取该BHO进程的进程对象句柄;
[0282] 使用该进程对象句柄依据所述第二目标内存空间的地址信息获取数据进行处理;
[0283] 处理结束后发送第四通知信息到所述BHO进程,通知所述BHO进程浏览器的FRAME 进程对所述第二目标内存空间中的数据处理完毕。
[0284] A6、如A5所述的方法,其特征在于,所述第四通知信息进一步包括:
[0285] 所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。
[0286] A7、如Al所述的方法,其特征在于,所述浏览器辅助对象进程BHO是登录用控件的 BHO子进程。
[0287] A8、如Al所述的方法,其特征在于,所述浏览器辅助对象进程BHO是两个或多个BHO 进程。
[0288] 本发明实施例还揭示了 B9、一种浏览器中进程间通信的方法,其特征在于,包括:
[0289] 浏览器的辅助对象进程BHO对将传输数据进行序列化操作;
[0290]所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数 据到第三目标内存空间中;
[0291] 所述BHO进程同步发送第五通知信息到浏览器的框架FRAME进程,所述通知信息中 携带第三目标内存空间的地址信息以及所述BHO进程的进程标识;
[0292] 接收到所述浏览器的FRAME进程返回的第六通知信息,通知对所述传输数据在所 述FRAME进程中处理结束;
[0293]释放分配的第三目标内存空间。
[0294] B10、如B9所述的方法,其特征在于,所述BHO进程在其虚拟地址空间中分配第三目 标内存空间,并复制序列化后的数据到第三目标内存空间中的步骤包括:
[0295] 获取所述序列化后的数据的首地址和数据长度信息;
[0296]依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空 间;
[0297] 根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目 标内存空间中。
[0298] BI 1、如B9所述的方法,其特征在于,所述第六通知信息进一步包括:
[0299]所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识;
[0300]则所述释放所述分配的第三目标内存空间的步骤包括:
[0301] 依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并 获得所述BHO进程的进程对象句柄;
[0302]依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地 址信息,释放所述框BHO进程分配的第三目标内存空间。
[0303] B12、如B9所述的方法,其特征在于,进一步包括:
[0304]接收浏览器的FRAME进程发送来的第七通知信息,该第七通知信息携带所述FRAME 进程中分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识;
[0305] 依据所述FRAME进程的进程标识获取该FRAME进程的进程对象句柄;
[0306]使用该进程对象句柄依据所述第四目标内存空间的地址信息获取数据进行处理; [0307] 处理结束后发送第八通知信息到所述FRAME进程,通知所述FRAME进程所述BHO进 程对所述第四目标内存空间中的数据处理完毕。
[0308] Bl 3、如Bl 2所述的方法,其特征在于,所述第八通知信息进一步包括:
[0309] 所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。
[0310] B14、如B9所述的方法,其特征在于,所述浏览器辅助对象进程是登录控件的BHO子 进程。
[0311] B15、如B9所述的方法,其特征在于,所述浏览器辅助对象进程BHO是两个或多个 BHO进程。
[0312] 本发明实施例还揭示了 C16、一种浏览器中进程间通信的装置,其特征在于,包括:
[0313] 第一数据序列化模块,其配置为浏览器的框架进程FRAME对将传输数据进行序列 化操作;
[0314]第一内存空间获取模块,其配置为所述FRAME进程在其虚拟地址空间中分配第一 目标内存空间,并复制获取序列化后的数据到第一目标内存空间中;
[0315]第一通知信息发送模块,其配置为所述FRAME进程异步发送第一通知信息到浏览 器辅助对象进程BHO,所述通知信息中携带第一目标内存空间的地址信息以及所述FRAME进 程的进程标识;
[0316] 第二通知信息接收模块,其配置为接收到所述浏览器辅助对象进程BHO返回的第 二通知信息,通知对所述传输数据在所述BHO进程中处理结束;
[0317] 第一内存空间释放模块,其配置为释放分配的第一目标内存空间。
[0318] C17、如C16所述的装置,其特征在于,所述第一内存空间获取模块包括:
[0319] 第一数据提取单元,其配置为获取所述序列化后的数据的首地址和数据长度信 息;
[0320] 第一内存空间分配单元,其配置为依据所述数据长度信息,在所述FRAME进程的虚 拟地址空间中分配第一目标内存空间;
[0321] 第一数据复制单元,其配置为根据所述序列化后的数据的首地址,将所述序列化 后的数据复制到分配的第一目标内存空间中。
[0322] C18、如C16所述的装置,其特征在于,所述第一数据序列化模块包括:
[0323] 重载单元,其配置为采用重载运算符对将传输数据进行序列化操作,其中不同数 据类型的将传输数据对应不同的重载运算符。
[0324] C19、如C16所述的装置,其特征在于,所述第二通知信息进一步包括:
[0325] 所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识;
[0326] 则所述第一内存空间释放模块进一步包括:
[0327] 第二内存释放单元,其配置为:
[0328] 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理, 并获得所述FRAME进程的进程对象句柄;
[0329] 依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地 址信息,释放所述FRAME进程分配的第一目标内存空间。
[0330] C20、如C16所述的装置,其特征在于,进一步包括:
[0331]第三通知信息接收模块,其配置为接收浏览器的BHO进程发送来的第三通知信息, 该第三通知信息携带所述BHO进程中分配的第二目标内存空间的地址信息以及所述BHO进 程的进程标识;
[0332]第一进程句柄获取模块,其配置为依据所述BHO进程的进程标识获取该BHO进程的 进程对象句柄;
[0333]第二数据处理模块,其配置为使用该进程对象句柄依据所述第二目标内存空间的 地址信息获取数据进行处理;
[0334]第四通知信息发送模块,其配置为处理结束后发送第四通知信息到所述BHO进程, 通知所述BHO进程浏览器的FRAME进程对所述第二目标内存空间中的数据处理完毕。
[0335] C21、如C20所述的装置,其特征在于,所述第四通知信息进一步包括:
[0336] 所述分配的第二目标内存空间的地址信息以及所述BHO进程的进程标识。
[0337] C22、如C16所述的装置,其特征在于,所述浏览器辅助对象进程BHO是登录用控件 的BHO子进程。
[0338] C23、如C16所述的装置,其特征在于,所述浏览器辅助对象进程BHO是两个或多个 BHO进程。
[0339] 本发明实施例还揭示了 D24、一种浏览器中进程间通信的装置,其特征在于,包括:
[0340] 第二数据序列化模块,其配置为浏览器的辅助对象进程BHO对将传输数据进行序 列化操作;
[0341]第三内存空间获取模块,其配置为所述BHO进程在其虚拟地址空间中分配第三目 标内存空间,并复制序列化后的数据到第三目标内存空间中;
[0342] 第五通知信息发送模块,其配置为所述BHO进程同步发送第五通知信息到浏览器 的FRAME进程,所述通知信息中携带第三目标内存空间的地址信息以及所述BHO进程的进程 标识;
[0343] 第六通知信息接收模块,其配置为接收到所述浏览器的FRAME进程返回的第六通 知信息,通知对所述传输数据在所述FRAME进程中处理结束;
[0344]第三内存空间释放模块,其配置为释放分配的第三目标内存空间。
[0345] D25、如D24所述的装置,其特征在于,所述第三内存空间获取模块包括:
[0346] 第三数据提取单元,其配置为获取所述序列化后的数据的首地址和数据长度信 息;
[0347] 第三内存空间分配单元,其配置为依据所述数据长度信息,在所述BHO进程的虚拟 地址空间中分配第三目标内存空间;
[0348] 第三数据复制单元,其配置为根据所述序列化后的数据的首地址,将所述序列化 后的数据复制到分配的第三目标内存空间中。
[0349] D26、如D24所述的装置,其特征在于,所述第六通知信息进一步包括:
[0350]所述分配的第三目标内存空间的地址信息以及所述BHO进程的进程标识;
[0351]则所第三内存空间释放模块进一步包括:
[0352]第三内存释放单元,其配置为:
[0353] 依据第六通知信息中的BHO进程的进程标识,确定为对所述BHO进程进行处理,并 获得所述BHO进程的进程对象句柄;
[0354] 依据所述BHO进程的的进程对象句柄和第六通知信息中的第三目标内存空间的地 址信息,释放所述框BHO进程分配的第三目标内存空间。
[0355] D27、如D24所述的装置,其特征在于,进一步包括:
[0356] 第七通知信息接收模块,其配置为接收浏览器的FRAME进程发送来的第七通知信 息,该第七通知信息携带所述FRAME进程中分配的第四目标内存空间的地址信息以及所述 FRAME进程的进程标识;
[0357] 第二进程句柄获取模块,其配置为依据所述FRAME进程的进程标识获取该FRAME进 程的进程对象句柄;
[0358] 第四数据处理模块,其配置为使用该进程对象句柄依据所述第四目标内存空间的 地址信息获取数据进行处理;
[0359] 第八通知信息发送模块,其配置为处理结束后发送第八通知信息到所述FRAME进 程,通知所述FRAME进程所述BHO进程对所述第四目标内存空间中的数据处理完毕。
[0360] D28、如D24所述的装置,其特征在于,所述第八通知信息进一步包括:
[0361] 所述分配的第四目标内存空间的地址信息以及所述FRAME进程的进程标识。
[0362] D29、如D24所述的装置,其特征在于,所述浏览器辅助对象进程是登录控件的BHO 子进程。
[0363] D30、如D24所述的装置,其特征在于,所述浏览器辅助对象进程BHO是两个或多个 BHO进程。
【主权项】
1. 一种浏览器中进程间通信的方法,其特征在于,包括: 浏览器的框架FRAME进程对将传输数据进行序列化操作; 所述FRAME进程在其虚拟地址空间中分配第一目标内存空间,并复制获取序列化后的 数据到第一目标内存空间中; 所述FRAME进程异步发送第一通知信息到浏览器辅助对象BHO进程,所述通知消息中携 带第一目标内存空间的地址信息以及所述FRAME进程的进程标识; 接收到所述BHO进程返回的第二通知信息,通知对所述传输数据在所述BHO进程中处理 结束; 释放分配的第一目标内存空间。2. 如权利要求1所述的方法,其特征在于,所述FRAME进程在其虚拟地址空间中分配第 一目标内存空间,并复制获取序列化后的数据到第一目标内存空间中的步骤包括: 获取所述序列化后的数据的首地址和数据长度信息; 依据所述数据长度信息,在所述FRAME进程的虚拟地址空间中分配第一目标内存空间; 根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第一目标内 存空间中。3. 如权利要求1所述的方法,其特征在于,所述FRAME进程对将传输数据进行序列化操 作的步骤进一步包括: 采用重载运算符对将传输数据进行序列化操作,其中不同数据类型的将传输数据对应 不同的重载运算符。4. 如权利要求1所述的方法,其特征在于,所述第二通知信息进一步包括: 所述分配的第一目标内存空间的地址信息以及所述FRAME进程标识; 则所述释放所述分配的第一目标内存空间的步骤进一步包括: 依据第二通知信息中的所述FRAME进程标识,确定为对所述FRAME进程进行处理,并获 得所述FRAME进程的进程对象句柄; 依据所述FRAME进程的进程对象句柄和第二通知信息中的第一目标内存空间的地址信 息,释放所述FRAME进程分配的第一目标内存空间。5. -种浏览器中进程间通信的方法,其特征在于,包括: 浏览器的辅助对象进程BHO对将传输数据进行序列化操作; 所述BHO进程在其虚拟地址空间中分配第三目标内存空间,并复制序列化后的数据到 第三目标内存空间中; 所述BHO进程同步发送第五通知信息到浏览器的框架FRAME进程,所述通知信息中携带 第三目标内存空间的地址信息以及所述BHO进程的进程标识; 接收到所述浏览器的FRAME进程返回的第六通知信息,通知对所述传输数据在所述 FRAME进程中处理结束; 释放分配的第三目标内存空间。6. 如权利要求5所述的方法,其特征在于,所述BHO进程在其虚拟地址空间中分配第三 目标内存空间,并复制序列化后的数据到第三目标内存空间中的步骤包括: 获取所述序列化后的数据的首地址和数据长度信息; 依据所述数据长度信息,在所述BHO进程的虚拟地址空间中分配第三目标内存空间; 根据所述序列化后的数据的首地址,将所述序列化后的数据复制到分配的第三目标内 存空间中。7. -种浏览器中进程间通信的装置,其特征在于,包括: 第一数据序列化模块,其配置为浏览器的框架进程FRAME对将传输数据进行序列化操 作; 第一内存空间获取模块,其配置为所述FRAME进程在其虚拟地址空间中分配第一目标 内存空间,并复制获取序列化后的数据到第一目标内存空间中; 第一通知信息发送模块,其配置为所述FRAME进程异步发送第一通知信息到浏览器辅 助对象进程BHO,所述通知信息中携带第一目标内存空间的地址信息以及所述FRAME进程的 进程标识; 第二通知信息接收模块,其配置为接收到所述浏览器辅助对象进程BHO返回的第二通 知信息,通知对所述传输数据在所述BHO进程中处理结束; 第一内存空间释放模块,其配置为释放分配的第一目标内存空间。8. 如权利要求7所述的装置,其特征在于,所述第一内存空间获取模块包括: 第一数据提取单元,其配置为获取所述序列化后的数据的首地址和数据长度信息; 第一内存空间分配单元,其配置为依据所述数据长度信息,在所述FRAME进程的虚拟地 址空间中分配第一目标内存空间; 第一数据复制单元,其配置为根据所述序列化后的数据的首地址,将所述序列化后的 数据复制到分配的第一目标内存空间中。9. 一种浏览器中进程间通信的装置,其特征在于,包括: 第二数据序列化模块,其配置为浏览器的辅助对象进程BHO对将传输数据进行序列化 操作; 第三内存空间获取模块,其配置为所述BHO进程在其虚拟地址空间中分配第三目标内 存空间,并复制序列化后的数据到第三目标内存空间中; 第五通知信息发送模块,其配置为所述BHO进程同步发送第五通知信息到浏览器的 FRAME进程,所述通知信息中携带第三目标内存空间的地址信息以及所述BHO进程的进程标 识; 第六通知信息接收模块,其配置为接收到所述浏览器的FRAME进程返回的第六通知信 息,通知对所述传输数据在所述FRAME进程中处理结束; 第三内存空间释放模块,其配置为释放分配的第三目标内存空间。10. 如权利要求9所述的装置,其特征在于,所述第三内存空间获取模块包括: 第三数据提取单元,其配置为获取所述序列化后的数据的首地址和数据长度信息; 第三内存空间分配单元,其配置为依据所述数据长度信息,在所述BHO进程的虚拟地址 空间中分配第三目标内存空间; 第三数据复制单元,其配置为根据所述序列化后的数据的首地址,将所述序列化后的 数据复制到分配的第三目标内存空间中。
【文档编号】G06F9/54GK105843691SQ201610159007
【公开日】2016年8月10日
【申请日】2012年6月29日
【发明人】杭程, 段培堃, 谢志宏, 任寰
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1