def nvmlDeviceGetEccMode(handle):
    r"""
    /**
     * Retrieves the current and pending ECC modes for the device.
     *
     * For Fermi &tm; or newer fully supported devices.
     * Only applicable to devices with ECC.
     * Requires \a NVML_INFOROM_ECC version 1.0 or higher.
     *
     * Changing ECC modes requires a reboot. The "pending" ECC mode refers to the target mode following
     * the next reboot.
     *
     * See \ref nvmlEnableState_t for details on allowed modes.
     *
     * @param device                               The identifier of the target device
     * @param current                              Reference in which to return the current ECC mode
     * @param pending                              Reference in which to return the pending ECC mode
     *
     * @return
     *         - \ref NVML_SUCCESS                 if \a current and \a pending have 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 either \a current or \a pending is NULL
     *         - \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
     *
     * @see nvmlDeviceSetEccMode()
     */
    nvmlReturn_t DECLDIR nvmlDeviceGetEccMode
    """
    c_currState = _nvmlEnableState_t()
    c_pendingState = _nvmlEnableState_t()
    fn = _nvmlGetFunctionPointer("nvmlDeviceGetEccMode")
    ret = fn(handle, byref(c_currState), byref(c_pendingState))
    _nvmlCheckReturn(ret)
    return [c_currState.value, c_pendingState.value]