"git.zabbix.com/ap/plugin-support/plugin"
nextObjectRefresh time.Time
nextEngNameRefresh time.Time
func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (response interface{}, err error) {
return nil, errors.New("Too many parameters.")
if len(params) == 0 || params[0] == "" {
return nil, errors.New("Invalid first parameter.")
if err = p.refreshObjects(); err != nil {
p.Warningf("Cannot refresh object cache: %s", err.Error())
case "perf_instance.discovery":
case "perf_instance_en.discovery":
if name = p.getLocalName(params[0]); name == "" {
if err = p.reloadEngObjectNames(); err != nil {
return nil, fmt.Errorf("Cannot obtain object's English names: %s", err.Error())
if name = p.getLocalName(params[0]); name == "" {
return nil, errors.New("Cannot obtain object's localized name.")
return nil, plugin.UnsupportedMetricError
var instances []win32.Instance
if instances, err = win32.PdhEnumObjectItems(name); err != nil {
return nil, fmt.Errorf("Cannot find object: %s", err.Error())