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

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

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

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 не рекомендуется — ОС освободит ресурсы автоматически.

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