Memory Information on Windows Mobile
Windows Mobile设备跟桌面PC比起来,资源是相当受限的。目前最新的设备一般也就128M RAM+256M Flash,再外扩4G的存储卡。但Windows Mobile设备的资源与RAM和Flash是用Byte来计算的8bit单片机来说,还是相当可观的,编程的时候也不用像以前那样抠门到以Byte来计算全局变量。虽然是如此,但是程序和OS都是在RAM中运行的,最郁闷的是,由于RAM不够大,以至于跑一些软件时,不得不关掉正在运行的程序,为其腾出一些空间来,这样捉襟见肘的日子在以前还是经常碰到的。
大家知道,在Windows Mobile设备上,我们可以通过settings->system->memory来查看当前设备资源的使用状态,但是这个就需要动那么几下手,点击屏幕,麻烦。我们一般喜欢偷懒,让这些信息实时显示在今日界面上该多好啊,于是,好多公司的软件中都将设备资源的使用状态实时显示在界面上,比如Spb的,比如Resco的,很多很多。
其实,在WM6.0 SDK自带的Sample中,就有相关的程序,它位于” \PocketPC\CPP\win32\MemWatcher”文件夹下。这个工程是用native code写的一个今日界面的插件,编译完以后,生成一个dll文件和cab安装文件,我们可以直接将cab文件安装到设备上,然后在今日界面的设置中,将它显示。如下图1所示:
图1:MemWatcher的今日插件
当然,我们也可以通过platform invoke将coredll中的GetDiskFreeSpaceEx引入进来,通过得到的Total Free Bytes和Total Bytes计算当前的资源使用情况。如图2所示:左边是程序的运行效果,右边是settings->system->memory的信息,通过比较可以发现,他们显示的资源信息是一致的。
图2:计算Memory使用的程序
附上今日插件的那个MemWatcher安装包:memwatchercab.CAB.rar,下载后,直接将文件命改为memwatchercab.CAB,然后在设备上安装即可。以及显示资源程序的源文件:GetStorageCard.zip