王朝网络
分享
 
 
 

自编写CE进程查看程序

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

自编写CE进程查看程序

作者:付林林

在我以前所著文章《模拟器和远程调试工具(二)》中讲述了PB自带的远程调试工具"Remote Process

Viewer"。利用这个工具可以在开发平台上查看实际平台上正运行的进程的一些信息,这些信息包括进程ID、句柄、基地址、包含的线程数量、以及每个线程的信息(如线程ID、线程优先级、访问键),另外还有整个进程加载的每个DLL的信息(DLL文件名、ID、使用计数、基地址、大小、路径等)。这个调试工具对于用模拟器调试程序,或者用串口、网卡连接实际平台调试程序来说非常有效。但是在有些情况下这个调试工具又显露出它的缺点。

开发Windows

CE下运行的软件没有必要时刻让开发平台和实际平台连接,毕竟不是所有程序、所有功能都需要单步跟踪或者实时查看内存变量状态。而要使用"Remote

Process Viewer",就必须先将开发平台同实际平台连接起来,有时不但没必要,反而浪费时间。为此,我特意编写了一个类似"Remote

Process Viewer"的调试工具,只不过把它的"Remote"去掉了。这个工具名为"CEInfo",在VCKBASE网站上可以找到,另外在VCKBASE出版的《VC知识库5周年精华珍藏版光盘》上也可以找到。因为我这里只有National

x86 CPU,所以此软件是基于x86指令集编译的。可以运行在所有支持x86指令集的CPU上,包括PB的模拟器。下面图1是这个工具的主界面。

图1 CEInfo主界面

本篇文章主要讲述进程查看程序利用的主要API--Toolhelp。Toolhelp API位于Toolhelp.DLL中。包含13个函数和5个结构体。利用这些函数你可以编写既适合自己需要,又适合自己实际平台的调试工具。具体函数声明如下表:

函数

功能

CreateToolhelp32Snapshot

创建系统快照,在参数2中指定快照的对象,对象包括进程、线程、DLL、堆。因为系统内这些对象的生存期可能非常短,所以形成快照后的数据不一定完全反映真实情况。函数返回快照的句柄。

CloseToolhelp32Snapshot

关闭快照对象。参数为句柄。

Heap32First

函数获得指定进程中指定堆内部的第一个块的信息。信息包括块的首地址、块大小、块标志等。

Heap32Next

与上一个函数结合使用,获得下一个块的信息。

Heap32ListFirst

函数获得指定进程中第一个堆的信息。

Heap32ListNext

与上一个函数结合使用,获得下一个堆的信息。

Module32First

函数获得指定进程中第一个模块(DLL)的信息。信息包括模块的ID、引用计数、首地址、大小、路径等。

Module32Next

与上一个函数结合使用,获得下一个模块的信息。

Process32First

函数获得当前系统快照对象中第一个进程信息。

Process32Next

与上一个函数结合使用,获得下一个进程的信息。

Thread32First

函数获得指定进程中第一个线程的信息。信息包括线程ID、优先级、创建此线程的ID、访问键。

Thread32Next

与上一个函数结合使用,获得下一个线程的信息。

Toolhelp32ReadProcessMemory

函数获得指定进程中指定内存区域的数据。

注:要了解进程、线程、堆,请参见我的文章《Windows CE进程、线程、内存管理》。

利用这些函数即可编写一个获得当前系统进程、线程、DLL、堆的信息。编写这样的程序应该不难。所以我没必要讲的更加详细。但是有几点需要注意,也是CE帮助文档中重点强调的。

CreateToolhelp32Snapshot函数将当前系统的进程、线程、DLL、堆的信息全部复制到一个缓冲区里。所以在执行此函数后再调用其它Toolhelp函数,所得到的信息未必是准确的。比如得到的线程句柄在使用时异常,得到模块地址时模块已经释放。

根据上面所说,我们得到的信息未必是准确的,那么就应该在代码中加入异常处理。(我编写的"CEInfo"就没有加入异常处理,因为我只查看系统信息)

关闭快照对象只能用CloseToolhelp32Snapshot,不能用CloseHandle。

写作时间:2004-09-02

未经本文作者同意,不准擅自转载本篇文章。联系作者请邮至fllsoft@sina.com或windowsce@tom.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有