docs: def build_counter(obj, instance, instance_index, counter):
          r'''
          Makes a fully resolved counter path. Counter names are formatted like
          this:
  
          ``\Processor(*)\% Processor Time``
  
          The above breaks down like this:
  
              obj = 'Processor'
              instance = '*'
              counter = '% Processor Time'
  
          Args:
  
              obj (str):
                  The top level object
  
              instance (str):
                  The instance of the object
  
              instance_index (int):
                  The index of the instance. Can usually be 0
  
              counter (str):
                  The name of the counter
  
          Returns:
              Counter: A Counter object with the path if valid
  
          Raises:
              CommandExecutionError: If the path is invalid
          '''
          path = win32pdh.MakeCounterPath(
              (None, obj, instance, None, instance_index, counter), 0)
          if win32pdh.ValidatePath(path) is 0:
              return Counter(path, obj, instance, instance_index, counter)
          raise CommandExecutionError('Invalid counter specified: {0}'.format(path))