您的位置:首页 > 其它

GlobalMemoryStatusEx()在VC6.0下的编译

2014-03-29 18:55 417 查看
在VC6.0下,使用 GlobalMemoryStatusEx 会出现
 

'GlobalMemoryStatus'  undeclared identifier

解决方法:

 动态加载DLL方式调用.

int getTotalRAM(void) {
int ret = 0;
DWORD v = GetVersion();
DWORD major = (DWORD)(LOBYTE(LOWORD(v)));
DWORD minor = (DWORD)(HIBYTE(LOWORD(v)));
DWORD build = 0;
if (v < 0x80000000) build = (DWORD)(HIWORD(v));

// 定义函数指针
BOOL (__stdcall*GMSEx)(LPMEMORYSTATUSEX) = 0;

HINSTANCE hIL = LoadLibrary(L"kernel32.dll");
GMSEx = (BOOL(__stdcall*)(LPMEMORYSTATUSEX))GetProcAddress(hIL, "GlobalMemoryStatusEx");

if(GMSEx) {
MEMORYSTATUSEX m;
m.dwLength = sizeof(m);
if(GMSEx(&m)) {
ret = (int)(m.ullTotalPhys>>20);
}
} else {
MEMORYSTATUS m;
m.dwLength = sizeof(m);
GlobalMemoryStatus(&m);
ret = (int)(m.dwTotalPhys>>20);
}
return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: