WEB开发网
开发学院软件开发VC VC下使用 Windows 的性能计数器简介 阅读

VC下使用 Windows 的性能计数器简介

 2006-07-20 11:41:28 来源:WEB开发网   
核心提示: 枚举计数器对象的基本步骤是:获取计数器对象列表大小; 为计数器列表分配缓冲区; 开始杖举; 以下是编程实现:第一步:获取计数器对象列表大小LPTSTRszObjectListBuffer= NULL ;DWORDdwObjectListSize= 0 ;LPTSTRszThisObject

枚举计数器对象的基本步骤是:

  1. 获取计数器对象列表大小;
  2. 为计数器列表分配缓冲区;
  3. 开始杖举;

以下是编程实现:

第一步:获取计数器对象列表大小

LPTSTR      szObjectListBuffer   = NULL ;
DWORD      dwObjectListSize  = 0 ;
LPTSTR      szThisObject    = NULL ;
__try
{
  // 第一次调用该函数获得接收性能计数器对象列表的缓冲区大小
  pdhStatus = PdhEnumObjects (
    NULL ,          // [IN]数据源,NT4.0必须为NULL
    NULL ,       // [IN]机器名。本地机器为NULL
    szObjectListBuffer ,  // [OUT]接收计数器列表的缓冲区,如果计数器列表长度为0,则该项为空
    & dwObjectListSize ,  // [IN/OUT]设置或接收计数器列表长度
    PERF_DETAIL_WIZARD ,  // 获取信息的级别
    // PERF_DETAIL_NOVICE 初级级别
    // PERF_DETAIL_ADVANCE 高级级别(包含初级)
    // PERF_DETAIL_EXPERT 专家级别(包含初级和高级)
    // PERF_DETAIL_WIZARD 系统级别(包含所有级别)
    true ) ;
  if ( pdhStatus != ERROR_SUCCESS )
  {
    __leave ;
  }
  
  // 根据得到的缓冲区大小分配计数器对象列表缓冲区内存
  szObjectListBuffer = ( LPTSTR ) malloc ( ( dwObjectListSize  * sizeof ( TCHAR ) ) ) ;
  if ( szObjectListBuffer == NULL )
  {
    __leave ;
  }
  // 第二次调用该函数获得计数器对象
  pdhStatus = PdhEnumObjects (
    NULL ,          // [IN]数据源,NT4.0必须为NULL
    NULL ,     // [IN]机器名。本地机器为NULL
    szObjectListBuffer ,  // [OUT]接收计数器列表的缓冲区,如果计数器列表长度为0,则该项为空
    & dwObjectListSize ,  // [IN/OUT]设置或接收计数器列表长度
    PERF_DETAIL_WIZARD ,  // 获取信息的级别
    // PERF_DETAIL_NOVICE 初级级别
    // PERF_DETAIL_ADVANCE 高级级别(包含初级)
    // PERF_DETAIL_EXPERT 专家级别(包含初级和高级)
    // PERF_DETAIL_WIZARD 系统级别(包含所有级别)
    TRUE ) ;
  if ( pdhStatus != ERROR_SUCCESS )
  {
    __leave ;
  }
  
  szThisObject  = szObjectListBuffer ;
  
  // 开始杖举
  for ( ; * szThisObject != 0 ; szThisObject += ( lstrlen ( szThisObject ) + 1 ) )
  {
    // 每循环一次 szThisObject 就是杖举到的计数器对象
  }
}
__finally
{
  if ( AbnormalTermination () )
  {
    // 如果失败
    if ( szObjectListBuffer != NULL )
    {
      free ( szObjectListBuffer ) ;
      szObjectListBuffer = NULL ;
    }
  }
  else
  {
    // 如果成功
  }
}
最后别忘了 free

上一页  1 2 3 4 5  下一页

Tags:VC 使用 Windows

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接