SOL9 2.0 Class: PerformanceQuery

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * PerformanceQuery.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2009/09/25

#pragma once

#include <sol/pdh/PdhObject.h>
#include <sol/pdh/PerformanceCounter.h>

namespace SOL {

class PerformanceQuery :public PdhObject {

private:
    HQUERY hQuery;

public:
    PerformanceQuery()
    :hQuery(NULL)
    {
        PDH_STATUS status = PdhOpenQuery(NULL, 0, &hQuery);
        if (status != ERROR_SUCCESS) {
            throw (int)status;
        }
    }

public:
    ~PerformanceQuery()
    {
        if (hQuery) {
            PdhCloseQuery(hQuery);
            hQuery = NULL;
        }
    }

public:
    PDH_STATUS addCounter(const TCHAR* path, PerformanceCounter& counter)
    {
        PDH_STATUS status = (PDH_STATUS)-1;;
        if (hQuery) {
            HCOUNTER hCounter;
            status = PdhAddCounter(hQuery, path, 0, &hCounter);
            if (status == ERROR_SUCCESS) {
                counter.setCounter(hCounter);
            } else {        
                throw (int)status;
            }
        }
        return status;
    }

public:
    PDH_STATUS collect()
    {
        PDH_STATUS status = (PDH_STATUS)-1;;
        if (hQuery) {
            status = PdhCollectQueryData(hQuery);
            if (status != ERROR_SUCCESS) {
                throw (int)status;
            }
        }
        return status;
    }

};

}

Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.