本文参考:http://www.cnblogs.com/llz5023/archive/2012/12/30/2839776.html
wince系统中获取系统当前内存使用情况可使用 GlobalMemoryStatus 函数,对于该函数的说明如下:
GlobalMemoryStatus
Win32 API函数。
此函数用来获得当前可用的物理和虚拟内存信息,函数定义为:
VOID GlobalMemoryStatus
(
LPMEMORYSTATUS lpBuffer
);
此函数无返回值,参数是一个指向名为MEMORYSTATUS的结构的指针。函数的返回信息会被存储在MEMORYSTATUS结构中。
此函数用来替代用来支持16位应用程序的GetFreeSpace函数。
应用程序应该在申请内存前调用此函数以防止影响到其他程序运行。
这个函数的返回值是动态的,并且可能返回相同的值。
关于MEMORYSTATUS结构:
机构定义:
typedef struct _MEMORYSTATUS { // mst
DWORD dwLength; // sizeof(MEMORYSTATUS)
DWORD dwMemoryLoad; // percent of memory in use
DWORD dwTotalPhys; // bytes of physical memory
DWORD dwAvailPhys; // free physical memory bytes
DWORD dwTotalPageFile; // bytes of paging file
DWORD dwAvailPageFile; // free bytes of paging file
DWORD dwTotalVirtual; // user bytes of address space
DWORD dwAvailVirtual; // free user bytesa
} MEMORYSTATUS, *LPMEMORYSTATUS;
结构成员的含义:
dwLength
MEMORYSTATUS结构的大小,在调GlobalMemoryStatus函数前用sizeof()函数求得,用来供函数检测结构的版本。
dwMemoryLoad
返回一个介于0~100之间的值,用来指示当前系统内存的使用率。
dwTotalPhys
返回总的物理内存大小,以字节(byte)为单位。
dwAvailPhys
返回可用的物理内存大小,以字节(byte)为单位。
dwTotalPageFile
显示可以存在页面文件中的字节数。注意这个数值并不表示在页面文件在磁盘上的真实物理大小。
dwAvailPageFile
返回可用的页面文件大小,以字节(byte)为单位。
dwTotalVirtual
返回调用进程的用户模式部分的全部可用虚拟地址空间,以字节(byte)为单位。
dwAvailVirtual
返回调用进程的用户模式部分的实际自由可用的虚拟地址空间,以字节(byte)为单位。
MEMORYSTATUS结构,
结构的定义如下:
MEMORYSTATUS STRUCT
dwLength DWORD ;本结构的长度
dwMemoryLoad DWORD ;已用内存的百分比
dwTotalPhys DWORD ;物理内存总量
dwAvailPhys DWORD ;可用物理内存
dwTotalPageFile DWORD ;交换文件总的大小
dwAvailPageFile DWORD ;交换文件中空闲部分大小
dwTotalVirtual DWORD ;用户可用的地址空间
dwAvailVirtual DWORD ;当前空闲的地址空间
MEMORYSTATUS ENDS
当然,最后是要上代码的:
-
#include <windows.h>
-
typedef void(WINAPI* FunctionGlobalMemoryStatusEx)(LPMEMORYSTATUS);//声明函数原型指针
-
MEMORYSTATUS GetMemoryStatus()
-
{
-
HMODULE hModule;
-
FunctionGlobalMemoryStatusEx GlobalMemoryStatusEx;
-
MEMORYSTATUS status;
-
status.dwLength = sizeof(status);
-
hModule = LoadLibrary("kernel32.dll");//载入动态链接库kernel32.dll,返回它的句柄
-
if(NULL==hModule)//判断载入dll是否成功
-
{
-
//error.
-
//MessageBox(NULL,TEXT("载入动态链接库kernel32.dll"),TEXT("错误"),MB_OK|MB_ICONERROR);
-
return;
-
}
-
//在kernel32.dll句柄里查找GlobalMemoryStatusEx函数,返回改函数的指针
-
GlobalMemoryStatusEx =(FunctionGlobalMemoryStatusEx)GetProcAddress(hModule,"GlobalMemoryStatusEx");
-
if(NULL==GlobalMemoryStatusEx)//判断函数是否找到
-
{
-
//error
-
//MessageBox(hwndDlg,TEXT("函数查找不到"),TEXT("错误"),MB_OK|MB_ICONERROR);
-
return;
-
}
-
GlobalMemoryStatusEx(&status);//调用函数取得系统的内存情况
-
FreeLibrary(hModule);//释放链接库句柄
-
return status;
-
}
阅读(2299) | 评论(0) | 转发(0) |