WIN7定义的结构体比XP多了几字节,所以网上很多获取代码 在WIN7 多核下都运行不了
//包含处理器数量的系统结构体
typedef struct SYSTEM_BASIC { 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 SYSTEM_PROCESSOR_PERFORMANCE{__int64 i64IdleTime;__int64 i64KernelTime;__int64 i64UserTime;__int64 i64DpcTime;__int64 i64InterruptTime;long lInterruptCount;}SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
使用率,其实就是CPU空闲时间占整一秒的比例而已,就是时间的相除
//计算CPU使用率
int CCpuDraw::CalProcessorsUses()
{
__int64 nIdleTime=0,nKernelTime=0,nUserTime=0,nDpcTime=0,nInterruptTime=0,nTotalTime=0;
int status=NtQuerySystemInformation(SystemProcessorPerformanceInformation, m_ProcessInfo, sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION) * m_nNumberProcessors, 0);
if(status != NO_ERROR)
return -1;
for (int i = 0; i < m_nNumberProcessors; i++)
{
nIdleTime = m_ProcessInfo[i].i64IdleTime - m_vProcess[i].nOidleTime;
nAllIdleTime+=nIdleTime;
nKernelTime = m_ProcessInfo[i].i64KernelTime - m_vProcess[i].nOkerenelTime;
nUserTime = m_ProcessInfo[i].i64UserTime - m_vProcess[i].nOuserTime;
nDpcTime = m_ProcessInfo[i].i64DpcTime -m_vProcess[i].nOdpctTime;
WIN7下获取多核CPU【各个】使用率的方法
最新推荐文章于 2024-08-30 18:33:43 发布
本文介绍了在Windows 7操作系统中如何详细监控每个核心CPU的使用情况,帮助用户了解系统资源分配和性能表现。
摘要由CSDN通过智能技术生成