docs: def nvmlDeviceGetViolationStatus(device, perfPolicyType):
      r"""
      /**
       * Gets the duration of time during which the device was throttled (lower than requested clocks) due to power
       * or thermal constraints.
       *
       * The method is important to users who are tying to understand if their GPUs throttle at any point during their applications. The
       * difference in violation times at two different reference times gives the indication of GPU throttling event.
       *
       * Violation for thermal capping is not supported at this time.
       *
       * For Kepler &tm; or newer fully supported devices.
       *
       * @param device                               The identifier of the target device
       * @param perfPolicyType                       Represents Performance policy which can trigger GPU throttling
       * @param violTime                             Reference to which violation time related information is returned
       *
       *
       * @return
       *         - \ref NVML_SUCCESS                 if violation time is successfully retrieved
       *         - \ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized
       *         - \ref NVML_ERROR_INVALID_ARGUMENT  if \a device is invalid, \a perfPolicyType is invalid, or \a violTime is NULL
       *         - \ref NVML_ERROR_NOT_SUPPORTED     if this query is not supported by the device
       *         - \ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible
       *
       */
      nvmlReturn_t DECLDIR nvmlDeviceGetViolationStatus
      """
      c_perfPolicy_type = _nvmlPerfPolicyType_t(perfPolicyType)
      c_violTime = c_nvmlViolationTime_t()
      fn = _nvmlGetFunctionPointer("nvmlDeviceGetViolationStatus")
  
      ## Invoke the method to get violation time
      ret = fn(device, c_perfPolicy_type, byref(c_violTime))
      _nvmlCheckReturn(ret)
      return bytes_to_str(c_violTime)