Repository navigation
Исправление главной проблемы 3.0: программа показывала «Готов» на сканере, которого нет в USB, и ждала палец десять секунд впустую.
Что исправлено
- Сканер определяется по-настоящему. Наличие устройства теперь берётся у Windows через
cfgmgr32, а не уZKFPM_GetDeviceCount: SDK составляет список устройств при инициализации и на вынутом сканере продолжает отвечать «устройство на месте». Отсюда и брались «Готов» на пустом USB и код −8 вместо −13. - Мгновенная реакция на подключение и отключение. Добавлена подписка на события устройств (
RegisterDeviceNotification): без неёDBT_DEVICEARRIVALдля USB-устройств окнам не приходит вообще — Windows рассылает его только для дисков и флешек. Плюс независимый сторож: раз в секунду сверяется слепок шины USB, опрос стоит меньше миллисекунды. - Переоткрытие устройства при возврате в USB. Вставили сканер обратно — программа сама закрывает старый дескриптор, заново инициализирует SDK и открывает устройство. Перезапуск не нужен.
- Отключение во время сканирования замечается за 0,4 секунды: захват прерывается с внятным «сканер отключён», а не висит до конца таймаута.
/api/fingerprint/scanотвечает503сразу, если сканера нет в USB. Раньше страница честно ждала весь таймаут и получала «палец не приложен».
Что нового
- Полное удаление программы. Кнопка в Настройках → Защита стирает exe, скрытый
agent.config.json, копию вC:\ProgramData\ZkFingerAgentи запись автозапуска — на компьютере не остаётся ничего. Драйвер сканера и ZKFinger SDK не трогаются: их ставил отдельный установщик и они нужны другим программам. - Если exe удалили снаружи, пока программа работала, она замечает это и убирает свои данные сама.
- Ключ командной строки
--uninstallдля того же самого без интерфейса.
Установка
Скачайте ZkFingerAgent.exe ниже и запустите. При первом запуске программа предложит поставить драйвер и SDK — установщик встроен внутрь.
Проверено на ZK4500 (USB\VID_1B55&PID_0840), ZKFinger SDK 5.3.0.33, Windows 10/11.