real = GetPIDCounterValue("_Total","PhysicalDisk","Disk Bytes/sec",PDH_FMT_LONG) / 1024 / 64;
函数如下:
DWORD CGetInfoDlg::GetPIDCounterValue(LPTSTR inInstanceName, char *Object, char *Count,
unsigned long Pdh_Fmt_Type)
{
// 打开一个查询对象
HQUERY hQuery = NULL;
PDH_STATUS pdhStatus = PdhOpenQuery (0, 0, &hQuery);
if(pdhStatus != ERROR_SUCCESS)
{
return -1;
} HCOUNTER hCounter = NULL;
char szPathBuffer[MAX_PATH];
memset(szPathBuffer, 0, sizeof(szPathBuffer)); if(inInstanceName == NULL)
sprintf(szPathBuffer, "\\%s\\%s", TEXT(Object),TEXT(Count));
else
sprintf(szPathBuffer, "\\%s(%s)\\%s", TEXT(Object),TEXT(inInstanceName),TEXT(Count));
pdhStatus = PdhAddCounter(hQuery, TEXT(szPathBuffer), 0, &hCounter);
if(pdhStatus != ERROR_SUCCESS)
{
return -2;
} pdhStatus = PdhCollectQueryData(hQuery);
if(pdhStatus != ERROR_SUCCESS)
{
return -3;
} // 获得当前实例的“ID Process”计数器的值
DWORD ctrType;
PDH_FMT_COUNTERVALUE fmtValue;
pdhStatus = PdhGetFormattedCounterValue(hCounter, Pdh_Fmt_Type, &ctrType, &fmtValue);
if(pdhStatus != ERROR_SUCCESS)
{
return -4;
} // 关闭查询对象
pdhStatus = PdhCloseQuery (hQuery);
if(pdhStatus != ERROR_SUCCESS)
{
// 关闭失败
} if(Pdh_Fmt_Type == PDH_FMT_LONG)
return fmtValue.longValue;
else if(Pdh_Fmt_Type == PDH_FMT_DOUBLE)
return fmtValue.doubleValue;
else
return fmtValue.largeValue;
}结果real 的植老是为0
请教高手 ,谢谢啊 !!!!!!