Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet
Здравствуйте.
Пытаюсь в цикле обеспечить эксклюзивный доступ к ключу Guardant Sign Net, размещенном на другой машине в локальной сети (использую сервер GLDS.EXE)
Начало_Цикла
fStatus := GrdLock(fGrdHandle, 1000, 30000, GrdLM_All);
Проверка_Значения (fStatus);
...
... // Что-то делаю
...
Конц_Цикла
Одна итерация цикла у меня выполняется чуть больше 1 сек, и я задал значение параметра dwTimeoutAutoUnlock равным 30 сек, чтобы гарантированно перекрыть 2 сек и в случае "зависания" приложения разблокировать ключ не позднее, чем через полминуты.
Предполагаю, что повторный вызов GrdLock() в той же сессии всего лишь сдвинет время автоматического разблокирования ключа но очередные 30 сек.
Однако выяснилось, что после 10 итераций GrdLock() возвращает код
GrdE_DongleLocked = 23; { Guardant dongle is busy (locked by another copy of protected application)}
- хотя никакое другое приложение данный ключ не использовало.
-----------
Расскажите, пожалуйста, об особенностях работы метода GrdLock() в случае его повторного вызова до достижения момента времени, заданном в dwTimeoutAutoUnlock.