Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

NET_NOT_SAVING (19) IP-Телефония и СКУД

Dahua NetSDK Ошибка 19: NET_NOT_SAVING — Ошибка остановки сохранения потока

Обновлено: 24.08.2026 · Официальная документация ↗

Сбои при завершении записи потокового видео:

  • Функция CLIENT_StopSaveRealData возвращает FALSE с кодом 19.
  • Попытка остановить запись для канала, на котором сохранение не было запущено или уже завершилось.
  • Ложные срабатывания сторожевых таймеров в коде управления записью.

Ошибка NET_NOT_SAVING (19) возникает, когда вызывается функция остановки записи CLIENT_StopSaveRealData для дескриптора видеопотока, на котором процесс сохранения данных не активен.

1. Внедрение конечного автомата состояний канала (State Machine)

Храните статус записи в структуре управления каналом:

enum ChannelState {
    STATE_IDLE,
    STATE_PLAYING,
    STATE_RECORDING
};

struct ChannelContext {
    LLONG lRealHandle;
    bool bIsRecording;
};

void StopRecording(ChannelContext* pCtx) {
    if (pCtx && pCtx->bIsRecording) {
        if (CLIENT_StopSaveRealData(pCtx->lRealHandle)) {
            pCtx->bIsRecording = false;
        } else {
            DWORD dwErr = CLIENT_GetLastError(); // Ошибка 19 исключена
        }
    }
}

2. Проверка на автоматическую остановку записи

Если диск переполнился или произошла ошибка записи файла (Error 20), NetSDK автоматически переводит запись в остановленное состояние. Последующий вызов CLIENT_StopSaveRealData закономерно вернет ошибку 19.

💡 Практика специалистов: Игнорируйте ошибку 19 в блоках деинициализации (Cleanup routines), но обязательно логируйте ее на уровне Debug для выявления race condition между потоками.

Частые вопросы (FAQ)

Критична ли ошибка 19 для работы приложения?

Нет, ошибка 19 является чисто информационной (ID-статус) и сигнализирует о том, что файл уже закрыт.

Нужно ли вызывать CLIENT_StopSaveRealData при разрыве сетевого соединения?

При дисконнекте сокета NetSDK самостоятельно сбрасывает дескрипторы сохранения, поэтому данный вызов вернет ошибку 19.

Может ли ошибка возникать из-за передачи нулевого lRealHandle?

При нулевом хэндле SDK чаще возвращает код NET_INVALID_HANDLE или NET_ILLEGAL_PARAM, но при невалидном ненулевом значении возможен код 19.

Как сбросить внутренний флаг записи в SDK?

Флаг сбрасывается автоматически при успешном вызове CLIENT_StopSaveRealData либо при полном уничтожении потока CLIENT_StopRealPlay.

Полезные материалы
Рекомендуем