SOL9 2.0 Class: PerformanceCounterPath

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

Source code

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



// SOL9
// 2009/09/25

#pragma once

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


namespace SOL {

class PerformanceCounterPath :public PdhObject {

private:

    PDH_COUNTER_PATH_ELEMENTS elements;

public:
    PerformanceCounterPath()
    {
        clear();
    }

public:
    void clear()
    {
        memset(&elements, 0, sizeof(elements));
    }


public:
    PDH_STATUS make(__out String& path,
            __in const TCHAR* machineName, 
            __in const TCHAR* objectName,
            __in const TCHAR* counterName,
            __in const TCHAR* instanceName = NULL,
            __in const int  instanceIndex = -1)
    {        
        clear();

        elements.szMachineName    = (TCHAR*)machineName;

        elements.szObjectName     = (TCHAR*)objectName;
        elements.szCounterName    = (TCHAR*)counterName;

        
        elements.dwInstanceIndex  = instanceIndex;

        elements.szInstanceName   = (TCHAR*)instanceName;

        TCHAR buffer[1024];
        memset(buffer, (TCHAR)0, SizeOf(buffer));        

        DWORD dwSize = SizeOf(buffer);

        PDH_STATUS status = PdhMakeCounterPath(&elements, buffer,
                                               &dwSize, 0);
        if (status == ERROR_SUCCESS) {
            path = buffer;
        } else {
            throw (int)status;
        }

        return status;
    }

};

}

Last modified: 1 Feb 2012

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