- Implemented collector thread
[public/netxms.git] / src / agent / subagents / winperf / winperf.h
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>
29 #include <nms_threads.h>
30 #include <pdh.h>
31 #include <pdhmsg.h>
32
33
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
48 struct 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
70 struct 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
79 //
80 // Functions
81 //
82
83 void StartCollectorThreads(void);
84 TCHAR *GetPdhErrorText(DWORD dwError, TCHAR *pszBuffer, int iBufferSize);
85 void ReportPdhError(TCHAR *pszFunction, TCHAR *pszPdhCall, PDH_STATUS dwError);
86 WINPERF_COUNTER *AddCounter(TCHAR *pszName, int iClass, int iNumSamples, int iDataType);
87 BOOL AddCounterFromConfig(TCHAR *pszStr);
88
89
90 //
91 // Global variables
92 //
93
94 extern HANDLE g_hCondShutdown;
95
96
97 #endif