一种在WindowsCE操作系统下更改MTU的方法

文档序号:6481223阅读:657来源:国知局
专利名称:一种在Windows CE操作系统下更改MTU的方法
技术领域
本发明涉及一种更改MTU的方法,具体地说是一种在Windows CE操作系 统下更改MTU的方法。
背景技术
Windows CE是微软公司专门为嵌入设备推出的一款嵌入式操作系统。它具 有高可靠性、高实时性、功能强大、界面友好的特点,已经广泛应川于军事、 工控、民用等领域。
MTU是Maximum Transmission Unit的縮写,意思是网络上传送的最大数 据包。MTU的单位是字节。如果本机的MTU比网关的MTU大,大的数据包就会 被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把 本机的MTU修改为比网关的MTU小或相同,就可以减少丢包。
以往在Windows CE下修改MTU的方法, 一般倾向于采用编译内核源代码 的方式。但由于微软提供的源代码并不完整,所以一般很难完成MTU模块的重 新编译操作。

发明内容
本发明的技术任务是提供一种对微软源代码依赖性小,可靠性高的一种在 Windows CE操作系统下更改MTU的方法。
本发明的技术任务是按以下方式实现的,包括计算机,在计算机内的 Windows CE操作系统下更改MTU,首先要确定影响MTU的动态链接库文件,然 后通过修改这个动态链接库文件中的MTU的二进制数值,来修改MTU。
确定影响MTU的动态链接库文件的具体步骤为
6(1) 、首先新建Platform [程(PlatformBuilder), BSP中选腦LATOR —Mobile handheld,编译环境选EMULATOR:x86—Debug,编译并生成NK文件;
(2) 、然/i:i选择f ileview选项卡,在private\wince()s\ppp2\ppp\APP\ ip一]ntf. c中找到SLIP 一Default—MTU的位置并打上断点,启动Debug;
(3) 、系统启动后建立SL.iP连接,Debug会停在MTU的位置,读MTU当 前在内存中的数值(默认为1006),将其修改其为296;
(4) 、最后,如果能够建立连接成功,则断点设置成功,确定其作用域为 PPP. DLL文件;
修改动态链接库文件中的MTU的二进制数值的具体步骤为
(1) 、首先,使用UltraEdit打开上面建立的Platform工程里RelDir \Emulator—x86J)ebu目录下的PPP. DLL文件,进行分析;
(2) 、然后查找0xEE03(程序代码1006的小端模式),经过进行上位机和 下位机的联调,来确定是否需要修改,需要修改的修改位置为0x2801 (程序代 码296的小端模式);
(3) 、然后,在Platform工程中build OS中选Make進-time Image, 生成新的NK文件;
(4) 、最后,进行EMULATOR调试,直接建立SLIP连接后,若发现数据已 按296自动分包,即MTU的值己成功被修改为296;若不能按296自动分包, 则返回PPP.DLL文件,进行分析。
工p一intf. c中的关键代码如下 void
LinkUpIndication( PPP—CONTEXT *pppContext ) IXIPMTUChange mtuchange;
pppSession一t氺s一p 二 (pppSession一t氺)pppContext一〉Session;PLXPContext
lcp—p = (PIXPContext) s一p-"lcpCntxt;
B00i bAddWorked; DEB1:GMSG (ZONE—FUNCTION, (TEXT(〃PPP: LinkUpInch: cation ( %s ) \n" , pppContext-〉AdapterName )); ASSERT ( pppContext ); if (s—p-〉blsServer)
pppContext-〉f0pen 二 TRUE; // Unlock the session for calls into TCP/IP module pppUnLock( s—p );
DE跳CHK(s—p-〉SesCritSec. OwnerThread! =HANDLE)GetCurrentTh
// Register the new interface with IP bAddWorked 二 PPPAddlnterface (pppContext) , if (bAddWorked)
// Notify upper layer of MTU change according to Mode switch( s—p-〉Mode )
case PPPMODE—PPP:
SetPPPPeerIPAddress(pppContext);
// Use the negotiated peer MTU
mtuchange. lmc—mtu = lcp一p-〉peer. MRU;
break; case PPPMODE—SLIP: case PPPMODE CSLIP:
readld ());
8mtuchange. lmc—mtu = SLIP—DEFAULT—MTU; break; default: ASSERT( 0 );
// Indicate MTU change to IP
ii' (pppContext-〉f0pen && pppContext->IPContext)
IPStatus( pppContext->IPContext, LLIP—STATUS—MTU—CHANGE, &mtuchange,
sizeof( LLIPMTUChange ), NULL);
pppLock (s—p); if (!bAddWorked)
// Unable to register with IP!!!
// IP may be unable to register the interface because the IP address
// is invalid or in use, or there was insufficient memory. //If this happens, we need to terminate the PPP connection. DEBUGMSG(ZONE—ERROR, (TEXT("PPP: ERROR - Unable t。 register interface %s with IP\n"), pppContext-〉AdapterName)); // Request 1XP terminate link
9pppLcp—Close (lcp_p, NULL' NULL);
DEBUGMSG(ZONE—FUNCTION, (TEXT(〃PPP:-LinkUpIndication( %s )\n〃)pppContext-〉Ad邵terName ));
其中,BSP为板级支持包(board support package),是介于主板硬件和操作系统中驱动层程序之间的一层,-一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行与硬件主板。
EMULATOR为模拟器,是一种在计算机平台上,基于计算机语言编译的,
可模拟执行特定之硬件平台及其程序的软件程序。
SLIP,英文原义Serial Line Internet Protocol,中文禾畢义串行
线路网际协议。
Debug为一种调试程序,它是可用于测试和调试MS-DOS可执行文件的程序。
UltraEdit是一套功能强大的文本编辑器,可以编辑文本、十六进制、ASCII码,完全可以取代记事本,内建英文单字检查、C++及VB指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。软件附有HTML标签颜色显示、搜寻替换以及无限制的还原功能, 一般用其来修改EXE或DLL文件。
本发明的一种在Windows CE操作系统下更改MTU的方法具有以下优点
1、 将本机的MTU修改为比网关的MTU小或相同,这样在数据传送中就可以减少丢包;且提高了传输速度;
2、 本发明减少对微软源代码的依赖,不再需要微软提供全部源代码,就可以对MTU进行修改,提高了产品的自主可控性;和指导作用;
因而,具有很好的推广使用价仿。


下面结合附图对本发明进- -歩说明。
附图1为一种在Windows CE操作系统下更改MTU的方法的流程示意图。
具体实施例方式
参照说明书附图和具体实施例对本发明的一种在Windows CE操作系统下更改MTU的方法作以下详细地说明。实施例
.本发明的一种在Windows CE操作系统下更改MTU的方法,包括计算机,在计算机内的Windows CE操作系统下更改MTU,首先要确定影响MTU的动态链接库文件,然后通过修改这个动态链接库文件中的MTU的二进制数值,来达到修改MTU的目的。
确定影响MTU的动态链接库文件的具体步骤为
(1) 、首先新建Platform工程(Platform Builder), BSP中选EMULATOR—Mobile handheld,编译环境选EMULATOR:x86J)ebug,编译并生成NK文件;
(2) 、然后选择f ileview选项卡,在private\winceos\ppp2\ppp\APP\ip—intf. c中找到SLIP —Default—MTU的位置并打上断点,启动Debug;
(3) 、系统启动后建立SLIP连接,Debug会停在MTU的位置,读MTU当前在内存中的数值(默认为1006),将其修改其为296;
(4) 、最后,如果能够建立连接成功,则断点设置成功,确定其作用域为PPP.DLL文件;
修改动态链接库文件中的MTU的二进制数值的具体步骤为(1)、首先,使用UltraEdit打开上面建立的Platform工程里RelDir\Emulator—x86—Debu目录下的PPP. DLL文件,进行分析;(2) 、然后査找0xEE03(程序代码1006的小端模式),发现一共6个位置,经过进行上位机和下位机的联调,来确定是否需要修改,发现前2个不用修改,修改后面的4个位置为0x2801 (程序代码296的小端模式);
(3) 、然后,在Platform工程中build 0S中选Make run-time Image,生成新的NK文件;
(4) 、最后,进行EMULATOR调试,直接建立SLIP连接后,若发现数据已按296自动分包,即MTU的值已成功被修改为296;若不能按296自动分包,则返回PPP. DLL文件,进行分析。
Ip一intf. c中的关键代码如下void
LinkUpIndication( PPP—CONTEXT印ppContext )LLIPMTUChange mtuchange;
pppSession—t *s—p 二 (pppSession—t 氺)pppContext-〉Session;PIXPContextlcp—p = (PLXPContext) s—p-〉lcpCntxt;B00L bAddWorked;DEBUGMSG(ZONE—FUNCTION, (TEXT(〃PPP:LinkUpIndication( %s )\n"), pppContext-〉AdapterName ));ASSERT( pppContext );if (s—p->bIsServer)
pppContext-〉f0pen = TRUE;// Unlock the session for calls into TCP/IP modulepppUnLock ( s一p );
DEBUGCHK(s—p_〉SesCritSec. 0wnerThread!二HANDLE)GetCurrentTh
readld ());
12// Register the new interface w;i th IP bAddWorked = PPPAddlnterface(pppContext); if (bAddWorked)
// Notify upper layer of MTU change according to Mode switch( s—p-〉Mode )
case PPPMODE—PPP:
SetPPPPeerIPAddress(pppContext);
// Use the negotiated peer MTU mtuchange. Imc—mtu = lcp一p-〉peer. MRU;
break; case PPPMODE—SLIP: case PPPM0DE—CSLIP:
mtuchange. Imc—mtu 二 SLIP一DEFAULT—MTU;
break; default: ASSERT( 0 );
// Indicate MTU change to IP
if (pppContext->f0pen pppContext—>IPContext)
IPStatus( pppContext—>IPContext
LLIP STATUS MTU CHANGE
&mtuchange
sizeof( LLIPMTUChange )
13NULL);
pppLock (s_p); if (!bAddWorked)
// Unable to register with IP!!!
// IP may be unable to register the interface because the IP address
// is invalid or in use, or there was insufficient memory. //If this happens, we need to terminate the PPP cormection. DEBUGMSG(ZONE—ERROR, (TEXT("PPP: ERROR - Unable t。 register interface %s with IP\n〃), pppContext-〉AdapterName)); // Request IXP terminate link PPpLcp—Close (lcp—p, NULL, NULL);
DEBUGMSG(Z0NE—FTJNCTI0N, (TEXT(〃PPP:-Linkliplndication( %s ) \n〃) pppContext->AdapterName ));}。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
1权利要求
1、一种在Windows CE操作系统下更改MTU的方法,包括计算机,其特征在于在计算机内的Windows CE操作系统下更改MTU,首先要确定影响MTU的动态链接库文件,然后通过修改这个动态链接库文件中的MTU的二进制数值,来修改MTU。
2、 根据权利要求1所述的一种在Windows CE操作系统下更改MTU的方法, 其特征在于确定影响MTU的动态链接库文件的具体步骤为(1) 、首先新建Platform工程,BSP中选EMULATOR—Mobile handheld, 编译环境选EMULATOR :x86一Debug,编译并生成NK文件;(2) 、然后选择f ileview选项卡,在private\winceos\ppp2\ppp\APP\ ip—intf. c 「|-'找至lj SLIP —Default—MTU的位置并打上断点,启动Debug;(3) 、系统启动后建立SLIP连接,Debug会停在MTU的位置,读MTU当 前在内存中的数值,将其修改其为296;(4) 、最后,如果能够建立连接成功,则断点设置成功,确定其作用域为 PPP. DLL文件;修改动态链接库文件中的MTU的二进制数值的具体步骤为(1) 、首先,使用UltmEdit打开上面建立的Platform工程里RelDir \Emulator_x86_Debu目录下的PPP. DLL文件,进行分析;(2) 、然后查找0xEE03,经过进行上位机和下位机的联调,来确定是否 需要修改,需要修改的修改位置为0x2801;(3) 、然后,在Platform工程中build OS中选Make run—time Image, 生成新的NK文件;(4) 、最后,进行EMULATOR调试,直接建立SLIP连接后,若发现数据已 按296自动分包,即MTU的值已成功被修改为296;若不能按296自动分包, 则返回PPP.DLL文件,进行分析。
3、根据权利要求2所述的-'种在Windows CE操作系统下更改MTU的方法, 其特征在于]:p一intf. c中的关键代码如下voidLinkUpIndication( PPP—CONTEXT *pppContext ) LLIPMTUChange mtuchange;pppSession—t 氺s—p = (pppSession—t PPpContext-〉Session; PLCPContextlcp—p = (PLCPContext)s—p-〉lcpCntxt; B00L bA諸orked; DEBUGMSG(ZONE—FUNCTION, (TEXT (〃PPP: LinkUpIndication( %s )\n"), pppContext_>AdapterName )); ASSERT( pppC。ntext ); if (s—p-〉blsServer)pppContext-〉f0pen 二 TRUE; // Unlock the session for calls into TCP/IP module pppUnLock ( s_p );DEBUGCHK(s—p-〉SesCritSec. OwnerThread!二HANDLE)GetCurrentThreadld 0);// Register the new interface with IP bAddWorked = PPPAddlnterface(pppContext); if (bAddWorked)// Notify upper layer of MTU change according to Modeswitch( s—p-〉Mode )case PPPMODE—PPP:SetPPPPeerIPAddress(pppContext);// Use the negotiated peer MTUmtuchange. lmc_mtu = lcp—p-〉peer. MRU;break; case PPPMODE—SLIP: case PPPMODE—CSLIP:mtuchange. lmc—mtu = SLIP一DEFAULT一MTU;break; default: ASSERT( 0 );// Indicate MTU change to IPif (pppContext-〉f0pen && pppContext-〉IPContext) IPStatus( pppContext-〉IPContext,LLIP STATUS MTU CHANGE&mtuchangesizeof ( LLIPMTUChange )NULL);pppl 0Ck (S一p);if 'bAddWorked)// Unable to register with IP!!!/■ / IP may be unable to register the interface because theIP address/7 is invalid or in use, or there was insufficient memory./■/ If this h即pens, we need to terminate th(:〕 PPP connection.DEBUG:VISG(ZONE—ERROR, (TEXT(〃PPP: ERROR - Unable to registerinterface %s with IP\n〃), pppContext-〉AdapterName));/7 Request LXP terminate linkpppLcp—Close(lcp—p, NULL, NULL);DEBUGMSG(ZONE—FUNCTION, (TEXT(〃PPP:-LinkUpIndication( %s )\n〃)pppContext-〉AdapterName ));}。
全文摘要
本发明公开了一种在Windows CE操作系统下更改MTU的方法,属于一种更改MTU的方法,在计算机内的Windows CE操作系统下更改MTU,首先要确定影响MTU的动态链接库文件,然后通过修改这个动态链接库文件中的MTU的二进制数值,来达到修改MTU的目的。本发明的一种在Windows CE操作系统下更改MTU的方法和现有技术相比,使用本方法更改MTU后,在数据传送中就可以减少丢包,且提高了传输速度;本发明减少对微软源代码的依赖,不再需要微软提供全部源代码,就可以对MTU进行修改,提高了产品的自主可控性。
文档编号G06F11/36GK101661426SQ200910018990
公开日2010年3月3日 申请日期2009年9月22日 优先权日2009年9月22日
发明者中 孙, 凯 崔, 牛玉峰, 边守华, 陈乃阔 申请人:山东超越数控电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1