- Implemented collector thread
[public/netxms.git] / src / agent / subagents / winperf / winperf.h
CommitLineData
e49f205f
VK
1/*
2** Windows Performance NetXMS subagent
3** Copyright (C) 2004 Victor Kirhenshtein
4**
5** This program is free software; you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation; either version 2 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program; if not, write to the Free Software
17** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18**
19** $module: winperf.h
20**
21**/
22
23#ifndef _winperf_h_
24#define _winperf_h_
25
26#include <windows.h>
27#include <nms_common.h>
28#include <nms_agent.h>
18f25f90 29#include <nms_threads.h>
e49f205f
VK
30#include <pdh.h>
31#include <pdhmsg.h>
32
33
18f25f90
VK
34//
35// Counter types
36//
37
38#define COUNTER_TYPE_AUTO 0
39#define COUNTER_TYPE_INT32 1
40#define COUNTER_TYPE_INT64 2
41#define COUNTER_TYPE_FLOAT 3
42
43
44//
45// Counter structure
46//
47
48struct WINPERF_COUNTER
49{
50 TCHAR *pszName;
51 WORD wType;
52 WORD wNumSamples;
53 union
54 {
55 LONG iLong;
56 INT64 iLarge;
57 double dFloat;
58 } value;
59 DWORD dwFormat; // Format code for PDH functions
60 PDH_RAW_COUNTER *pRawValues;
61 DWORD dwBufferPos;
62 HCOUNTER handle;
63};
64
65
66//
67// Counter set structure
68//
69
70struct WINPERF_COUNTER_SET
71{
72 DWORD dwInterval; // Interval beetween samples in milliseconds
73 DWORD dwNumCounters;
74 WINPERF_COUNTER **ppCounterList;
75 TCHAR cClass;
76};
77
78
e49f205f
VK
79//
80// Functions
81//
82
18f25f90 83void StartCollectorThreads(void);
e49f205f
VK
84TCHAR *GetPdhErrorText(DWORD dwError, TCHAR *pszBuffer, int iBufferSize);
85void ReportPdhError(TCHAR *pszFunction, TCHAR *pszPdhCall, PDH_STATUS dwError);
18f25f90
VK
86WINPERF_COUNTER *AddCounter(TCHAR *pszName, int iClass, int iNumSamples, int iDataType);
87BOOL AddCounterFromConfig(TCHAR *pszStr);
88
89
90//
91// Global variables
92//
93
94extern HANDLE g_hCondShutdown;
95
e49f205f
VK
96
97#endif