#ifndef ZABBIX_WIN32_H
#define ZABBIX_WIN32_H
#include "config.h"
#include "zbxsysinc.h"
#include "zbxtypes.h"
#include "zbxcommon.h"
#if !defined(_WINDOWS) && !defined(__MINGW32__)
# error "This module is only available for Windows OS"
#endif
#define zbx_get_builtin_object_name(ctr) zbx_get_counter_name(zbx_get_builtin_object_index(ctr))
#define zbx_get_builtin_counter_name(ctr) zbx_get_counter_name(zbx_get_builtin_counter_index(ctr))
typedef enum
{
PCI_PROCESSOR_QUEUE_LENGTH = 0,
PCI_SYSTEM_UP_TIME,
PCI_PROCESSOR_TIME,
PCI_INFORMATION_PROCESSOR_TIME,
PCI_TOTAL_SESSIONS,
PCI_MAX_INDEX = PCI_TOTAL_SESSIONS
}
zbx_builtin_counter_ref_t;
typedef enum
{
PERF_COUNTER_NOTSUPPORTED = 0,
PERF_COUNTER_INITIALIZED,
PERF_COUNTER_GET_SECOND_VALUE,
PERF_COUNTER_ACTIVE
}
zbx_perf_counter_status_t;
typedef enum
{
PERF_COUNTER_LANG_DEFAULT = 0,
PERF_COUNTER_LANG_EN
}
zbx_perf_counter_lang_t;
typedef struct perf_counter_id
{
struct perf_counter_id *next;
unsigned long pdhIndex;
wchar_t name[PDH_MAX_COUNTER_NAME];
}
zbx_perf_counter_id_t;
typedef struct perf_counter_data
{
struct perf_counter_data *next;
char *name;
char *counterpath;
int interval;
zbx_perf_counter_lang_t lang;
zbx_perf_counter_status_t status;
HCOUNTER handle;
PDH_RAW_COUNTER rawValues[2];
int olderRawValue;
double *value_array;
int value_current;
int value_count;
double sum;
}
zbx_perf_counter_data_t;
zbx_uint64_t zbx_get_cluster_size(const char *path, char **error);
PDH_STATUS zbx_PdhMakeCounterPath(const char *function, PDH_COUNTER_PATH_ELEMENTS *cpe, char *counterpath);