16,472
社区成员
发帖
与我相关
我的任务
分享
//添加计数器
bool CSystemInfo::_AddCounter(const char * pszDesc)
{
HCOUNTER* pca = (HCOUNTER *)GlobalAlloc(GPTR, (sizeof(HCOUNTER)));
m_oHCountMap[pszDesc] = pca;
return (ERROR_SUCCESS == PdhAddCounter(m_hQuery, pszDesc, 0, pca));
}
m_strIp = GetIp(); //获得的IP为192.168.20.16
m_SystemInfo.AddNetCounter(m_strIp,"Bytes Received/sec");
m_SystemInfo.AddNetCounter(m_strIp,"Bytes Sent/sec");
m_strIp = GetIp(); //获得的IP为192.168.20.16
m_SystemInfo.AddNetCounter(m_strIp,"Bytes Received/sec");
m_SystemInfo.AddNetCounter(m_strIp,"Bytes Sent/sec");
dw = m_SystemInfo.GetNetValue(m_strIp,"Bytes Received/sec");
m_strInfo.Format("%d",dw);
dw = m_SystemInfo.GetNetValue(m_strIp,"Bytes Sent/sec");
m_strTNet.Format("%s/%d",m_strInfo,dw);
SetDlgItemText(IDC_SNET,m_strTNet);
//获取计数器的值
DWORD CSystemInfo::_GetCounterValue(const char * pszDesc)
{
PDH_FUNCTION re = 0;
re = PdhCollectQueryData(m_hQuery); //这里返回那个PDH_NO_DATA 所以直接return-1
if(ERROR_SUCCESS == re)
{
HCOUNTER *pCounter = _FindHCounter(pszDesc);
if (pCounter != NULL)
{
PDH_FMT_COUNTERVALUE szFmtValue={0};
DWORD dwCtrType;
if(ERROR_SUCCESS == PdhGetFormattedCounterValue(*pCounter,
PDH_FMT_DOUBLE, //PDH_FMT_LONG,
&dwCtrType,
&szFmtValue))
{
return (szFmtValue.doubleValue+0.5);
//return szFmtValue.longValue;
}
}
}
return -1;
}
PdhCollectQueryData
原型:
PDH_STATUSPdhCollectQueryData(
PDH_HQUERYhQuery
);
功能:
收集该查询在当前行的所有统计的信息,并更新所有统计。
参数:
hQuery
查询的句柄
返回值:
ERROR_SUCCESS
统计成功
PDH_INVALID_HANDLE
句柄非法
PDH_NO_DATA
没有一个统计有新的数据