Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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