func getCounterValue()

in helpers/windows/pdh/pdh_query_windows.go [329:369]


func getCounterValue(counter *Counter) CounterValue {
	counterValue := CounterValue{Instance: counter.instanceName, Err: CounterValueError{CStatus: 0}}
	switch counter.format {
	case PdhFmtLong:
		_, value, err := PdhGetFormattedCounterValueLong(counter.handle)
		if err != nil {
			counterValue.Err.Error = err
			if value != nil {
				counterValue.Err.CStatus = value.CStatus
			}
		} else {
			counterValue.Measurement = value.Value
		}
	case PdhFmtLarge:
		_, value, err := PdhGetFormattedCounterValueLarge(counter.handle)
		if err != nil {
			counterValue.Err.Error = err
			if value != nil {
				counterValue.Err.CStatus = value.CStatus
			}
		} else {
			counterValue.Measurement = value.Value
		}
	case PdhFmtDouble:
		_, value, err := PdhGetFormattedCounterValueDouble(counter.handle)
		if err != nil {
			counterValue.Err.Error = err
			if value != nil {
				counterValue.Err.CStatus = value.CStatus
			}
		} else {
			counterValue.Measurement = value.Value
		}
	default:
		counterValue.Err.Error = fmt.Errorf("initialization failed: format '%#v' "+
			"for instance '%s' is invalid (must be PdhFmtDouble, PdhFmtLarge or PdhFmtLong)",
			counter.format, counter.instanceName)
	}

	return counterValue
}