首页 > Linux操作系统 > Linux操作系统 > 自编写CE进程查看程序(转)

| 函数 | 功能 |
| 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。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10294527/viewspace-126798/ ,如需转载,请注明出处,否则将追究法律责任。