VC下使用 Windows 的性能计数器简介
2006-07-20 11:41:28 来源:WEB开发网核心提示: 上面说过了,要获取其它技术信息只需更改计数器地址(就是PdhAddCounter函数中的第二个参数“\Process(( "QQ" ))\%Processor Time”),VC下使用 Windows 的性能计数器简介(3),每个计数器地址包含三
上面说过了,要获取其它技术信息只需更改计数器地址(就是PdhAddCounter函数中的第二个参数“\Process(( "QQ" ))\%Processor Time”),每个计数器地址包含三个部分(计数器对象Process、计数器%Processor Time、计数器实例QQ),我们只要知道你的系统中都有哪些计数器对象、每个计数器对象有包含哪些计数器、每个计数器又有哪些计数器实例,按照上面的调用格式就可以得到你想要的所有计数信息。
Microsoft为我们提供了方便获取计数器对象、计数器、实例信息的方法---枚举。要杖举计数器需要用到以下几个API:
1、杖举计数器对象PdhEnumObjects (
NULL , // [IN]数据源,NT4.0必须为NULL
szMachineName , // [IN]机器名。本地机器为NULL
szObjectListBuffer , // [OUT]接收计数器列表的缓冲区,如果计数器列表长度为0,则该项为空
& dwObjectListSize , // [IN/OUT]设置或接收计数器列表长度
dwDetailLevel , // 获取信息的级别
// PERF_DETAIL_NOVICE 初级级别
// PERF_DETAIL_ADVANCE 高级级别(包含初级)
// PERF_DETAIL_EXPERT 专家级别(包含初级和高级)
// PERF_DETAIL_WIZARD 系统级别(包含所有级别)
TRUE );
2、杖举计数器和计数器实例
PdhEnumObjectItems (
NULL , // [IN]数据源,NT4.0必须为NULL
szMachineName , // [IN]机器名。本地机器为NULL
pctCounter , // [IN]计数器名
szCounterListBuffer , // [OUT]接收计数器列表的缓冲区,如果计数器列表长度为0,则该项为空
& dwCounterListSize , // [IN/OUT]设置或接收计数器列表长度
szInstanceListBuffer , // [OUT]接收实例列表的缓冲区,如果计数器列表长度为0,则该项为空
& dwInstanceListSize , // [IN/OUT]设置或接收实例列表长度
dwDetailLevel , // 获取信息的级别
// PERF_DETAIL_NOVICE 初级级别
// PERF_DETAIL_ADVANCE 高级级别(包含初级)
// PERF_DETAIL_EXPERT 专家级别(包含初级和高级)
// PERF_DETAIL_WIZARD 系统级别(包含所有级别)
0 ); // 最后一个参数系统保留为0
更详细信息请参阅MSDN
更多精彩
赞助商链接