def nvmlDeviceGetUUID(handle):
    r"""
    /**
     * Retrieves the globally unique immutable UUID associated with this device, as a 5 part hexadecimal string,
     * that augments the immutable, board serial identifier.
     *
     * For all products.
     *
     * The UUID is a globally unique identifier. It is the only available identifier for pre-Fermi-architecture products.
     * It does NOT correspond to any identifier printed on the board.  It will not exceed 80 characters in length
     * (including the NULL terminator).  See \ref nvmlConstants::NVML_DEVICE_UUID_BUFFER_SIZE.
     *
     * @param device                               The identifier of the target device
     * @param uuid                                 Reference in which to return the GPU UUID
     * @param length                               The maximum allowed length of the string returned in \a uuid
     *
     * @return
     *         - \ref NVML_SUCCESS                 if \a uuid 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 uuid is NULL
     *         - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a length is too small
     *         - \ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature
     *         - \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
     */
    nvmlReturn_t DECLDIR nvmlDeviceGetUUID
    """
    c_uuid = create_string_buffer(NVML_DEVICE_UUID_BUFFER_SIZE)
    fn = _nvmlGetFunctionPointer("nvmlDeviceGetUUID")
    ret = fn(handle, c_uuid, c_uint(NVML_DEVICE_UUID_BUFFER_SIZE))
    _nvmlCheckReturn(ret)
    return bytes_to_str(c_uuid.value)
r"""
    /**
     * Retrieves the globally unique immutable UUID associated with this device, as a 5 part hexadecimal string,
     * that augments the immutable, board serial identifier.
     *
     * For all products.
     *
     * The UUID is a globally unique identifier. It is the only available identifier for pre-Fermi-architecture products.
     * It does NOT correspond to any identifier printed on the board.  It will not exceed 80 characters in length
     * (including the NULL terminator).  See \ref nvmlConstants::NVML_DEVICE_UUID_BUFFER_SIZE.
     *
     * @param device                               The identifier of the target device
     * @param uuid                                 Reference in which to return the GPU UUID
     * @param length                               The maximum allowed length of the string returned in \a uuid
     *
     * @return
     *         - \ref NVML_SUCCESS                 if \a uuid 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 uuid is NULL
     *         - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a length is too small
     *         - \ref NVML_ERROR_NOT_SUPPORTED     if the device does not support this feature
     *         - \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
     */
    nvmlReturn_t DECLDIR nvmlDeviceGetUUID