16,472
社区成员
发帖
与我相关
我的任务
分享
//
// #define DIV 1024
//
// LARGE_INTEGER liOldIdleTime = {0,0};
// LARGE_INTEGER liOldSystemTime = {0,0};
//
// #define SystemBasicInformation 0
// #define SystemPerformanceInformation 2
// #define SystemTimeInformation 3
// #define WIDTH 7
// #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
//
// typedef struct
// {
// DWORD dwUnknown1;
// ULONG uKeMaximumIncrement;
// ULONG uPageSize;
// ULONG uMmNumberOfPhysicalPages;
// ULONG uMmLowestPhysicalPage;
// ULONG uMmHighestPhysicalPage;
// ULONG uAllocationGranularity;
// PVOID pLowestUserAddress;
// PVOID pMmHighestUserAddress;
// ULONG uKeActiveProcessors;
// BYTE bKeNumberProcessors;
// BYTE bUnknown2;
// WORD wUnknown3;
// } SYSTEM_BASIC_INFORMATION;
//
// typedef struct
// {
// LARGE_INTEGER liIdleTime;
// LARGE_INTEGER dwSpare[76];
// // DWORD cb;
// // SIZE_T CommitTotal;
// // SIZE_T CommitLimit;
// // SIZE_T CommitPeak;
// // SIZE_T PhysicalTotal;
// // SIZE_T PhysicalAvailable;
// // SIZE_T SystemCache;
// // SIZE_T KernelTotal;
// // SIZE_T KernelPaged;
// // SIZE_T KernelNonpaged;
// // SIZE_T PageSize;
// // DWORD HandleCount;
// // DWORD ProcessCount;
// // DWORD ThreadCount;
// } SYSTEM_PERFORMANCE_INFORMATION;
//
// typedef struct
// {
// LARGE_INTEGER liKeBootTime;
// LARGE_INTEGER liKeSystemTime;
// LARGE_INTEGER liExpTimeZoneBias;
// ULONG uCurrentTimeZoneId;
// DWORD dwReserved;
// } SYSTEM_TIME_INFORMATION;
//
// typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
//
// PROCNTQSI NtQuerySystemInformation;
//
//
//
//
// //获得CPU使用率
// INT GetCpuUsage()
// {
// SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo;
// SYSTEM_TIME_INFORMATION SysTimeInfo;
// SYSTEM_BASIC_INFORMATION SysBaseInfo;
// double dbIdleTime = 0;
// double dbSystemTime = 0;
// LONG status;
//
// NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(GetModuleHandle("ntdll"),"NtQuerySystemInformation");
//
// if (!NtQuerySystemInformation)
// return -1;
//
// // get number of processors in the system
// status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL);
// if (status != NO_ERROR)
// {
// printf("\r\nLast error = %d\r\n",GetLastError());
// return -1;
// }
//
// // get new system time
// status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0);
// if (status!=NO_ERROR)
// {
// printf("\r\nLast error = %d\r\n",GetLastError());
// return -1;
// }
//
// // get new CPU's idle time
// status =NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL);
// if (status != NO_ERROR)
// {
// printf("\r\nLast error = %d\r\n",GetLastError());
// return -1;
// }
//
// // if it's a first call - skip it
// if (liOldIdleTime.QuadPart != 0)
// {
// // CurrentValue = NewValue - OldValue
// dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
// dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);
//
// // CurrentCpuIdle = IdleTime / SystemTime
// dbIdleTime = dbIdleTime / dbSystemTime;
//
// // CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
// dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;
//
// }
//
// // store new CPU's idle and system time
// liOldIdleTime = SysPerfInfo.liIdleTime;
// liOldSystemTime = SysTimeInfo.liKeSystemTime;
//
// return (int)dbIdleTime;
// }
内存简单 GlobalMemoryStatusEx
http://blog.csdn.net/stecdeng/article/details/56011240
内存的 https://www.cnblogs.com/waynecheng/archive/2011/11/08/2241265.html