Dahua NetSDK Error 0: NET_NOERROR — статус успешного выполнения операции
- Функция
CLIENT_GetLastError()возвращает код0(NET_NOERROR). - Операция API (логин, захват потока, управление реле СКУД) выполнена штатно.
- Отсутствие сбоев в работе подключенного оборудования Dahua (NVR, IPC, VTO, ASC).
1. Корректная обработка возвращаемых значений функций SDK
В Dahua NetSDK вызов CLIENT_GetLastError() имеет смысл только тогда, когда основной вызов API вернул FALSE (0) или нулевой дескриптор (NULL / 0):
// Пример на C++
LLONG lLoginID = CLIENT_LoginEx2(szIp, nPort, szUser, szPass, EM_LOGIN_SPEC_CAP_TCP, NULL, &stDevice, &nError);
if (lLoginID == 0) {
DWORD dwErr = CLIENT_GetLastError();
printf("Login failed with error code: %d\n", dwErr);
} else {
// Успешная авторизация, код 0 (NET_NOERROR)
printf("Login successful! Handle: %lld\n", lLoginID);
}2. Проверка контекста в многопоточном приложении
Функция CLIENT_GetLastError() возвращает ошибку, сохраненную в Thread Local Storage (TLS) текущего потока. Не вызывайте CLIENT_GetLastError() из другого потока, отличного от потока выполнения SDK-функции.
Частые вопросы (FAQ)
Что означает код ошибки NET_NOERROR (0)?
Код 0 указывает на полное отсутствие ошибок при выполнении последней команды SDK и успешное завершение транзакции с устройством.
Почему CLIENT_GetLastError() возвращает 0, если функция вернула FALSE?
Это происходит, если перед вызовом get error произошел успешный вызов другой внутренней функции SDK в этом же потоке, сбросивший статус ошибки.
Нужно ли вызывать CLIENT_GetLastError() после каждого успешного вызова?
Нет, проверять код ошибки нужно только в том случае, если сигнатура метода вернула признак сбоя (FALSE, 0 или отрицательное число).
Где объявлены константы кодов ошибок Dahua NetSDK?
Все коды ошибок и перечисления определены в заголовочном файле dhnetsdk.h (или NetSDKCS.cs для .NET).