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

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

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

Dahua NetSDK Error 10: NET_SDK_UNINIT_ERROR — сбой деинициализации CLIENT_Cleanup

Обновлено: 24.08.2026  ·  Официальная база знаний
  • Функция CLIENT_Cleanup возвращает FALSE с кодом 10 (NET_SDK_UNINIT_ERROR).
  • Зависание процесса при завершении работы программы.
  • Утечки неуничтоженных системных потоков и блокировок мьютексов.

1. Корректный порядок освобождения ресурсов

Перед вызовом CLIENT_Cleanup необходимо принудительно завершить все активные трансляции, подписки на события и выйти со всех устройств:

void ShutdownSDK() {
    // 1. Остановка всех видеопотоков
    if (g_hPlay != 0) {
        CLIENT_StopRealPlayEx(g_hPlay);
        g_hPlay = 0;
    }
    
    // 2. Остановка прослушивания тревог
    if (g_hAlarm != 0) {
        CLIENT_StopListen(g_hAlarm);
        g_hAlarm = 0;
    }
    
    // 3. Выход со всех устройств
    if (g_lLoginID != 0) {
        CLIENT_Logout(g_lLoginID);
        g_lLoginID = 0;
    }
    
    // 4. Финальная деинициализация SDK
    CLIENT_Cleanup();
}

2. Завершение работы пользовательских коллбэков

Убедитесь, что ваши функции обработки кадров (fRealDataCallBack) завершили выполнение и не блокируют потоки SDK.

Практический опыт инженера: В C# приложениях вызывайте CLIENT_Cleanup в событии FormClosed / Application.ApplicationExit или в методе Dispose синглтона управления SDK.

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

Чем опасен вызов CLIENT_Cleanup при активных сессиях?

Принудительное уничтожение SDK при работающих сетевых сокетах может привести к Segmentation Fault или Access Violation в памяти процесса.

Что делать, если CLIENT_Cleanup блокирует главный поток?

Это происходит, если сетевой поток ожидает таймаута сокета. Перед вызовом Cleanup убедитесь, что все операции ввода-вывода остановлены.

Можно ли снова вызвать CLIENT_Init после CLIENT_Cleanup?

Да, SDK поддерживает повторный жизненный цикл инициализации в рамках одного процесса.

Нужно ли вызывать CLIENT_Cleanup при аварийном завершении по сигналу?

В обработчиках критических сигналов (SIGSEGV) вызывать Cleanup не рекомендуется — ОС освободит ресурсы автоматически.