Ошибка 91 в HCNetSDK.dll: причины и решение

Ошибка 91 при работе с библиотекой HCNetSDK.dll чаще всего указывает на сбой сетевого взаимодействия между клиентским приложением и устройством Hikvision — регистратором, камерой или видеосервером. Код возвращается функцией NET_DVR_GetLastError после неудачного вызова NET_DVR_Login или другой сетевой операции, и в документации SDK он относится к группе ошибок подключения, а не к сбоям самой библиотеки.

Практически это означает: библиотека загрузилась корректно, но не смогла установить или удержать соединение с устройством. Причин может быть несколько — от недоступности IP-адреса до несовместимости версий SDK и прошивки. Ниже разберём, как локализовать источник проблемы и устранить её без риска для системы видеонаблюдения.

Что такое HCNetSDK.dll и когда возникает ошибка 91

HCNetSDK.dll — это клиентская библиотека из комплекта разработчика Hikvision Device Network SDK. Она используется сторонними программами, интеграционными модулями и самописными приложениями для подключения к оборудованию Hikvision: авторизации, получения видеопотока, управления PTZ и выгрузки архива.

Ошибка 91 появляется не при загрузке DLL, а при выполнении сетевых функций. Типичные сценарии: вызов NET_DVR_Login_V30 возвращает -1, воспроизведение потока обрывается сразу после старта, либо приложение зависает на этапе инициализации соединения. Код конкретизируется через NET_DVR_GetLastError() — именно его значение стоит проверять в первую очередь, а не гадать по внешним симптомам.

⚠️ Внимание: код ошибки зависит от версии SDK. В разных редакциях документации Hikvision числовые коды могут трактоваться по-разному, поэтому сверяйте значение с файлом Error.htm или заголовочными файлами именно вашей версии SDK, а не с описаниями из старых форумов.

Основные причины ошибки 91

Поскольку ошибка относится к сетевому уровню, диагностику логично строить от простого к сложному. Возможные причины:

  • 🔌 Устройство недоступно по сети — неверный IP-адрес, обрыв кабеля, отключён коммутатор или порт PoE.
  • 🚪 Закрыт или изменён порт SDK (по умолчанию обычно используется порт 8000, но он настраивается в устройстве).
  • 🔥 Брандмауэр Windows или антивирус блокирует исходящие соединения приложения.
  • 📦 Несовместимость версии библиотеки HCNetSDK.dll с прошивкой устройства.
  • 👤 Превышен лимит одновременных подключений к устройству или неверные учётные данные.
  • 🧩 Отсутствуют сопутствующие библиотеки SDK рядом с HCNetSDK.dll, из-за чего инициализация проходит некорректно.

Обратите внимание на последний пункт: HCNetSDK.dll редко работает в одиночку. В комплекте SDK идут дополнительные модули — например, библиотеки воспроизведения и преобразования потока. Если приложение загружает DLL из папки, где лежит только часть файлов SDK, возможны неочевидные сбои на этапе подключения.

📊 Где именно у вас возникает ошибка 91 HCNetSDK?
При входе в устройство (логин)
При запуске видеопотока
В стороннем ПО / интеграции
При работе через интернет (не в локальной сети)

Шаг 1. Проверка сетевой доступности устройства

Начните с базовой проверки: отвечает ли устройство вообще. С компьютера, где работает приложение, выполните ping до адреса регистратора или камеры:

ping 192.168.1.64

Если ответа нет — проблема физическая или адресная: проверьте кабель, порт коммутатора, правильность IP и маски подсети. Если ping проходит, следующим шагом проверьте доступность порта SDK:

Test-NetConnection 192.168.1.64 -Port 8000

Командлет Test-NetConnection работает в PowerShell на современных версиях Windows. Если в выводе TcpTestSucceeded : False, порт закрыт — либо он изменён в настройках устройства, либо его блокирует файрвол на пути следования трафика.

Фактический порт SDK смотрите в сетевых настройках самого устройства: через веб-интерфейс или локальное меню регистратора, в разделе сетевых служб. Не полагайтесь на значение «по умолчанию» — на объектах его часто меняют при настройке.

☑️ Диагностика ошибки 91 HCNetSDK

Выполнено: 0 / 5

Шаг 2. Брандмауэр и антивирус

Вам нужно убедиться, что защитное ПО не режет соединение. Временно отключите брандмауэр Windows и повторите попытку подключения — если ошибка исчезла, создайте разрешающее правило для вашего приложения, а не оставляйте защиту выключенной.

Проверьте также антивирус с модулем сетевого контроля. Некоторые решения инспектируют трафик и разрывают нестандартные соединения, что внешне выглядит как сетевая ошибка SDK. Добавление приложения в исключения обычно решает вопрос.

Шаг 3. Версия SDK и комплектность библиотек

Необходимо сверить версию HCNetSDK.dll с прошивкой устройства. Старые библиотеки могут некорректно работать с новыми прошивками, где изменились механизмы аутентификации (например, усиленные требования к шифрованию при логине). Обратная ситуация тоже встречается: свежий SDK с очень старой прошивкой.

Безопасный порядок действий: скачайте актуальный Device Network SDK с официального портала Hikvision, скопируйте всё содержимое папки библиотек в каталог приложения, не выборочные файлы, и убедитесь, что разрядность совпадает — 32-битное приложение требует 32-битные DLL, 64-битное — 64-битные. Смешение разрядностей даёт ошибки ещё на этапе загрузки библиотеки.

ПроверкаИнструментОжидаемый результат
Доступность устройстваpingОтветы без потерь
Открытость порта SDKTest-NetConnectionTcpTestSucceeded: True
Работа устройства с ПКiVMS-4200Успешный логин и поток
Комплектность SDKСравнение с архивом SDKВсе DLL на месте, разрядность совпадает
Код ошибкиNET_DVR_GetLastErrorТочный код для справочника SDK
⚠️ Внимание: не заменяйте библиотеки SDK «по одной» из разных версий пакета. Файлы внутри одной версии собраны с учётом внутренних зависимостей, и смешение модулей из разных релизов приводит к нестабильной работе, которую сложно диагностировать.

Шаг 4. Учётные данные и лимит подключений

Если сеть в порядке, проверьте параметры авторизации. Устройства Hikvision могут блокировать пользователя после серии неудачных попыток входа — тогда даже корректный пароль временно не принимается. Подождите период блокировки или перезагрузите устройство и попробуйте снова с заведомо верными данными.

Вторая возможная причина — исчерпание лимита одновременных подключений. Если к регистратору уже подключены несколько клиентов, а ваше приложение дополнительно открывает соединения в цикле без освобождения (NET_DVR_Logout не вызывается), новые попытки логина будут отклоняться. Проверьте, что в коде каждая сессия корректно закрывается, а при завершении работы вызывается NET_DVR_Cleanup.

Порядок корректной работы с SDK в коде

Типичная последовательность: NET_DVR_Init → NET_DVR_SetConnectTime (необязательно) → NET_DVR_Login_V30 → рабочие вызовы → NET_DVR_Logout → NET_DVR_Cleanup. Пропуск Init или Cleanup, а также повторный Init без Cleanup — частые источники нестабильности. Таймаут подключения можно увеличить через NET_DVR_SetConnectTime, если сеть медленная или устройство за NAT.

Удалённый доступ: NAT, проброс портов и провайдер

Когда приложение подключается через интернет, добавляются внешние факторы. Проверьте, что на роутере проброшен именно порт SDK, а не только веб-порт (80) — это разные службы. Через мобильный интернет и за CG-NAT проброс портов вообще не работает, и ошибка подключения в этом случае закономерна.

Для таких сценариев рассмотрите альтернативы: VPN-туннель до локальной сети объекта или облачные механизмы производителя, если они предусмотрены вашей моделью устройства. Это надёжнее, чем выставление порта SDK напрямую в интернет, — открытый порт устройства видеонаблюдения является реальной угрозой безопасности.

Когда ничего не помогло

Если все проверки пройдены, а ошибка сохраняется, соберите диагностическую информацию перед обращением в поддержку или к интегратору: точный код из NET_DVR_GetLastError, версию SDK, модель и прошивку устройства, логи приложения. Многие версии SDK поддерживают запись собственного лога — включение этой функции описано в документации вашей версии пакета.

Отдельный сценарий — ошибка возникает только под нагрузкой или спустя время работы. Здесь стоит проверить стабильность сети (потери пакетов, дуплексные ошибки на порту коммутатора) и корректность освобождения ресурсов в коде приложения. Утечка дескрипторов сессий со временем исчерпывает возможности устройства.

Часто задаваемые вопросы

Ошибка 91 — это проблема самой библиотеки HCNetSDK.dll?

Нет, в подавляющем большинстве случаев DLL исправна. Код 91 относится к сетевым ошибкам: библиотека не смогла установить или удержать соединение с устройством. Искать причину нужно в сети, портах, брандмауэре или параметрах подключения.

Как узнать точный код ошибки в приложении?

Сразу после неудачного вызова функции SDK вызовите NET_DVR_GetLastError() — она вернёт числовой код последней ошибки. Расшифровку смотрите в документации именно вашей версии SDK, так как нумерация может отличаться между релизами.

iVMS-4200 подключается, а моё приложение — нет. Что делать?

Это локализует проблему в приложении: проверьте разрядность и версию DLL, комплектность файлов SDK в папке программы, правильность вызова NET_DVR_Init до логина и параметры подключения (IP, порт, логин). Также убедитесь, что брандмауэр не блокирует именно ваш исполняемый файл.

Может ли ошибка 91 возникать из-за прошивки устройства?

Да, возможна несовместимость старого SDK с новой прошивкой, где изменены механизмы аутентификации. Решение — обновить библиотеки SDK до актуальной версии целиком. Обновление прошивки устройства выполняйте только по официальной инструкции для вашей модели.

Помогает ли увеличение таймаута подключения?

Если устройство находится в медленной или нестабильной сети (VPN, интернет-канал), увеличение таймаута через NET_DVR_SetConnectTime может помочь. Но если порт закрыт или адрес неверен, никакой таймаут ситуацию не исправит — сначала проверьте базовую доступность.