memory compiler使用方法 memory pill_Storage 前引:系统内存(Memory)信息是类似如下表格的信息:

memory compiler使用方法 memory pill_memory compiler使用方法_02



在设备上选择”Start – Setting – System – Memory - Main”可以看到有Storage和Program两项,严格意义上说这样划分和它的标题”Memory”并不符合,我想MS只是想告诉普通用户一些设备的基本信息。然而作为开发人员就不能这么简单的认为了。

在这之前我们需要了解一下Memory和Storage的区别,简单的说Memory(即上面的Program)就是RAM,而Storage就是ROM。如果您想明白的更透彻,参考:Mike Calligaro的RAM, ROM, NAND, NOR--That's A Lot Of Capital Letters...

memory compiler使用方法 memory pill_Storage 获取系统的物理和虚拟内存。

void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer );RAPI 对应版本为:void CeGlobalMemoryStatus( LPMEMORYSTATUS lpmst );参数为MEMORYSTATUS类型,如下:typedef struct _MEMORYSTATUS { DWORD dwLength;      // 结构体大小
DWORD dwMemoryLoad;  // 内存使用百分比

WORD dwTotalPhys;    // 物理内存总大小

DWORD dwAvailPhys;   // 可用物理内存大小

DWORD dwTotalPageFile; // 可存储在页面文件的字节总大小

DWORD dwAvailPageFile; // 页面文件的可用字节大小

DWORD dwTotalVirtual;  // 可提供给用户调用进程的虚拟内存字节大小

DWORD dwAvailVirtual;  // 可提供给用户调用进程的可用虚拟内存字节大小} MEMORYSTATUS, *LPMEMORYSTATUS;注意: 在创建MEMORYSTATUS对象时需要将对象大小赋值给dwLength参数。PInvoke GlobalMemoryStatus


memory compiler使用方法 memory pill_虚拟内存_04

    

[DllImport("coredll.dll")]
        public static extern void GlobalMemoryStatus(MEMORYSTATUS lpBuffer);
        public class MEMORYSTATUS
{
            public uint dwLength;
            public uint dwMemoryLoad;
            public uint dwTotalPhys;
            public uint dwAvailPhys;
            public uint dwTotalPageFile;
            public uint dwAvailPageFile;
            public uint dwTotalVirtual;
            public uint dwAvailVirtual;

            public MEMORYSTATUS()
{
                dwLength = (uint)Marshal.SizeOf(this);
                dwMemoryLoad = 0;
                dwTotalPhys = 0;
                dwAvailPhys = 0;
                dwTotalPageFile = 0;
                dwAvailPageFile = 0;
                dwTotalVirtual = 0;
                dwAvailVirtual = 0;
            }
        }

memory compiler使用方法 memory pill_虚拟内存_04

 
memory compiler使用方法 memory pill_Storage 二 获取内核态对象存储和系统内存信息BOOL GetSystemMemoryDivision(LPDWORD lpdwStorePages,  LPDWORD lpdwRamPages, LPDWORD lpdwPageSize);
注意: MSDN并不赞成使用该函数memory compiler使用方法 memory pill_Memory_07memory compiler使用方法 memory pill_Storage_08

PInvoke GetSystemMemoryDivision


[DllImport("coredll.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetSystemMemoryDivision(
ref uint lpdwStorePages,  // 存储内存页面数
ref uint lpdwRamPages,    // 程序内存页面数
ref uint lpdwPageSize     // 页面大小
);

 

 

 

--------------------------------------------------


李森 – listen

声明:
这里集中了在WinCE和Windows Mobile开发中的一些基本常识。我很乐意和大家分享,也希望大家提出意见,并给我投稿,我会第一时间替您发表并署上您的大名!

Announce:
Here collects general knowledge on WinCE and Windows mobile. I 'm very glad to share them with all friends, and also hope you can share your problems and opinions and contribute articles to me to share with others. I'll publish your articles and sign your name at the first time.