def nvmlDeviceGetSupportedClocksThrottleReasons(handle):
    r"""
    /**
     * Retrieves bitmask of supported clocks throttle reasons that can be returned by
     * \ref nvmlDeviceGetCurrentClocksThrottleReasons
     *
     * For all fully supported products.
     *
     * This method is not supported in virtual machines running virtual GPU (vGPU).
     *
     * @param device                               The identifier of the target device
     * @param supportedClocksThrottleReasons       Reference in which to return bitmask of supported
     *                                              clocks throttle reasons
     *
     * @return
     *         - \ref NVML_SUCCESS                 if \a supportedClocksThrottleReasons has been set
     *         - \ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized
     *         - \ref NVML_ERROR_INVALID_ARGUMENT  if \a device is invalid or \a supportedClocksThrottleReasons is NULL
     *         - \ref NVML_ERROR_GPU_IS_LOST       if the target GPU has fallen off the bus or is otherwise inaccessible
     *         - \ref NVML_ERROR_UNKNOWN           on any unexpected error
     *
     * @see nvmlClocksThrottleReasons
     * @see nvmlDeviceGetCurrentClocksThrottleReasons
     */
    nvmlReturn_t DECLDIR nvmlDeviceGetSupportedClocksThrottleReasons
    """
    c_reasons= c_ulonglong()
    fn = _nvmlGetFunctionPointer("nvmlDeviceGetSupportedClocksThrottleReasons")
    ret = fn(handle, byref(c_reasons))
    _nvmlCheckReturn(ret)
    return bytes_to_str(c_reasons.value)