<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
		<link>https://forum.guardant.ru/topic/885/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/885" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Спустя некоторе время функция GrdFind() перестает обнаруживать ключ».]]></description>
		<lastBuildDate>Mon, 06 Jan 2025 18:01:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/5315/#p5315</link>
			<description><![CDATA[<div class="quotebox"><cite>vlad-mal пишет:</cite><blockquote><p>У нас защищённое приложение работает, если видит, что подключен только один НАШ ключ. Можно ли без использования GrdFind понять, что подключен только один наш ключ?</p></blockquote></div><p>Добрый день. Вы можете выполнять функцию <a href="https://dev.guardant.ru/display/DOC/GrdLogin">GrdLogin</a>. И далее по <a href="https://dev.guardant.ru/pages/viewpage.action?pageId=1278194">коду возврата функции</a>и делать вывод - подключён ли нужный ключ, или нет. <br />GrdFind при этом можно не использовать. Параметры ключа, с которым вы будете работать определяются функцией <a href="https://dev.guardant.ru/display/DOC/GrdSetFindMode">GrdSetFindMode</a>.</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Mon, 06 Jan 2025 18:01:50 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/5315/#p5315</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/5314/#p5314</link>
			<description><![CDATA[<div class="quotebox"><cite>Тимофей Ершов пишет:</cite><blockquote><p>...<br />- Нет смысла в рабочем приложении использовать GrdFind, т.к. он больше нужен чтобы перебрать все ключи в системе и составить список, причем не требует указания кодов доступа. Нужно использовать GrdLogin, поскольку эта функция уже будет искать конкретный ключ по параметрам, заданным для GrdSetFindMode и логиниться к нему, если найдет</p></blockquote></div><p>У нас защищённое приложение работает, если видит, что подключен только один НАШ ключ. Можно ли без использования GrdFind понять, что подключен только один наш ключ?</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Sun, 05 Jan 2025 19:11:08 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/5314/#p5314</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4292/#p4292</link>
			<description><![CDATA[<p>Здравствуйте. Мы провели тестирование, но нам не удалось воспроизвести такое поведение. На данный момент мы подозреваем, что проблема из-за GrdLock/GrdUnlock в HID-режиме под Linux, пытаемся подтвердить эту гипотезу.</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Thu, 06 Feb 2020 09:34:35 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4292/#p4292</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4291/#p4291</link>
			<description><![CDATA[<p>Отработало почти неделю без единого сбоя, тогда как в HID режиме работало максимум 2 дня и то с множеством сбоев, которые в конечном итоге приводили к &quot;зависанию&quot; ключа. Делаем вывод, что с HID режимом в ОС Linux есть какие-то проблемы. Будем прошивать ключи в драйверном режиме. Ваши разработчики могут, что-нибудь сказать по этому поводу? Производились тесты многопоточного доступа к ключу в HID режиме на ОС Linux?</p>]]></description>
			<author><![CDATA[null@example.com (Coxwain)]]></author>
			<pubDate>Thu, 06 Feb 2020 08:20:24 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4291/#p4291</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4290/#p4290</link>
			<description><![CDATA[<p>Здравствуйте. Сообщите нам пожалуйста результаты наблюдения.</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Tue, 04 Feb 2020 12:53:53 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4290/#p4290</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4289/#p4289</link>
			<description><![CDATA[<p>Перепрошили ключ в драйверном режиме вот лог утилиты chknsk:</p><p>Welcome to Guardant Diagnostic Tool! (v1.0001)&nbsp; &nbsp; &nbsp; &nbsp; </p><p>Detecting Guardant dongles ...</p><p>------------- Guardant Code Time Dongle ---------------------------------------<br />&nbsp; Produce Date (dd.mm.yy):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 21.05.2019 (ID=0xXXXXXXXX)&nbsp; &nbsp; &nbsp;<br />&nbsp; Versions (Hrw,MCUF,Type,PrtSup,Std,Cl,DSt):&nbsp; &nbsp;0.1,00,5F0,00,00,0.0,0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; Supports:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PI,TRU,RTC,AES,ECC,CODE&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; Global Flags:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PTIME&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; Public Code:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XXXXXXX (0xXXXXXXXX)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />-------------------------------------------------------------------------------<br /> Firmware&nbsp; ProgNum&nbsp; Version&nbsp; SerialN GPcounter&nbsp; Mask&nbsp; &nbsp;NetRes RealRes&nbsp; Index&nbsp; &nbsp;<br />-------------------------------------------------------------------------------<br /> 1.0.2.21&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; 109&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; 0000h&nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; &nbsp; &nbsp; &nbsp;0 00000000 <br />-------------------------------------------------------------------------------<br />Result: 1 dongle(s) found. Press Enter...</p><p>C 31.01.2020 по сегодняшний день 04.02.2020 ключ работает без зависаний, в логах тестовой утилиты не было ни одного сбоя функций GrdCheck и GrdLogin. Понаблюдаем еще.</p>]]></description>
			<author><![CDATA[null@example.com (Coxwain)]]></author>
			<pubDate>Tue, 04 Feb 2020 02:28:21 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4289/#p4289</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4288/#p4288</link>
			<description><![CDATA[<p>Большое спасибо за предоставляемые данные ваших тестов!<br />Сейчас первое, что еще нужно проверить, это работа ключа в <strong>драйверном режиме</strong>!</p><p>Для пользователя защищенного приложения, с точки зрения трудозатрат на настройку ключа в Linux, разницы не будет абсолютно, т.е. также нужно установить правило для udev и подключить ключ.</p><p>Переведите, пожалуйста, ключ в драйверный режим и также потестируйте.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Fri, 31 Jan 2020 06:13:29 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4288/#p4288</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4287/#p4287</link>
			<description><![CDATA[<p>Вчера вечером ключ завис вот лог утилиты с зависшим ключем:</p><p>Welcome to Guardant Diagnostic Tool! (v1.0001)&nbsp; &nbsp; &nbsp; &nbsp; </p><p>Detecting Guardant dongles ...</p><p>Result: 0 dongle(s) found. Press Enter...</p><p>Причем функция Detecting Guardant dongles ... длилась около 23 секунд</p><p>Все время было запущено тестовое приложение которое обращалось к ключу и вот сейчас когда я решил снова замерить время работы утилиты chknsk и она вдруг обнаружила ключ. Посмотрел логи работы нашей тестовой утилиты, после многих неудачных попыток функция GrdLogin вдруг снова стала работать. Зависание продлилось с 20:03 вчерашнего дня по 10:45 сегодняшнего дня т.е. около 15 часов. Ключ вроде бы не трогали. Первыий раз такое &quot;отвисание&quot; произошло.</p>]]></description>
			<author><![CDATA[null@example.com (Coxwain)]]></author>
			<pubDate>Fri, 31 Jan 2020 05:11:01 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4287/#p4287</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4286/#p4286</link>
			<description><![CDATA[<p>Собрали утилиту chknsk, вот ее вывод на работающем ключе (поля ID и Public Code изменены):</p><p>Welcome to Guardant Diagnostic Tool! (v1.0001)&nbsp; &nbsp; &nbsp; &nbsp; </p><p>Detecting Guardant dongles ...</p><p>------------- Guardant Code Time Dongle ---------------------------------------<br />&nbsp; Produce Date (dd.mm.yy):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 21.05.2019 (ID=0xXXXXXXXX)&nbsp; &nbsp; &nbsp;<br />&nbsp; Versions (Hrw,MCUF,Type,PrtSup,Std,Cl,DSt):&nbsp; &nbsp;0.1,00,5F0,00,00,0.0,0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; Supports:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PI,TRU,RTC,AES,ECC,CODE&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; Global Flags:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PTIME,HID&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; Public Code:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XXX_XXX (0xXXXXXXXX)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />-------------------------------------------------------------------------------<br /> Firmware&nbsp; ProgNum&nbsp; Version&nbsp; SerialN GPcounter&nbsp; Mask&nbsp; &nbsp;NetRes RealRes&nbsp; Index&nbsp; &nbsp;<br />-------------------------------------------------------------------------------<br /> 1.0.2.21&nbsp; &nbsp; &nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; 104&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; 0000h&nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; &nbsp; &nbsp; &nbsp;0 00000000 <br />-------------------------------------------------------------------------------<br />Result: 1 dongle(s) found. Press Enter...</p><p>Подождем когда ключ зависнет вновь и снова попытаемся ее выполнить.</p><p>По поводу хендлов. У нас используется первый описанный вами вариант. Над библиотекой grdapi написана дополнительная библиотека, которая работает непосредственно с ключем, в ней используется однин хендл. Перед выполнением любой функции GrdAPI происходит блокировка семафором, а вызовы фунукций GrdCodeRun дополнительно огорожены функциями GrdLock, GrdUnlock. Так же хотелось бы отметить, что обращение к ключу идет из нескольких процессов, в некоторых из них и из разных потоков.</p><p>Функции GrdFind и GrdLogin обращаются только к локальным ключам, так как перед их вызовом выполняется функция:<br />GrdSetFindMode(keyHandle, GrdFMR_Local, GrdFM_Type, 0, 0, 0, 0, 0, GrdDT_RTC, GrdFMM_CodeUSB, GrdFMI_USB);<br />Для поиска ключа мы действительно используем функцию GrdFind, а GrdLogin уже выполняется после успешного выполнения GrdFind. Учтем ваше предложение по поводу удаления функции GrdFind из кода, спасибо.<br />Мы провели эксперимент: после того как ключ уже находился в &quot;зависшем&quot; состоянии, было написано тестове приложение, в котором вместо вызова функции GrdFind была использована функция GrdLogin, но ее&nbsp; выполнение так же происходит с ошибкой до тех пор пока не передернешь физически ключ.</p><p>Еще провели небольшой эксперимент на предмет того, что зависает ключ или драйвер. При &quot;зависшем&quot; ключе перезагрузили ПК, при этом с помощью осциллографа убедились, что питание на USB в момент перезагрузки не обрывалось. Так вот после перезагрузки ключ прекрасно начал работать, т.о. предположительно что-то в драйвере ключа происходит.</p><p>Ключи у нас работают в HID режиме.</p>]]></description>
			<author><![CDATA[null@example.com (Coxwain)]]></author>
			<pubDate>Thu, 30 Jan 2020 11:18:21 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4286/#p4286</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4284/#p4284</link>
			<description><![CDATA[<p>Если совсем нет возможности получить отчет диагностики на Windows, то можно собрать консольную утилиту из исходников под нужный дистрибутив Linux. <a href="https://forum.guardant.ru/post/292/#p292">Скачать ее можно на нашем форуме</a>.</p><p>Посоветовались с нашими разработчиками, чтобы попытаться хотя бы предположить причины описанного поведения. Поскольку данных в описании мало, а тест с исходниками получить затруднительно, то есть пара гипотез «куда копать», связанных с многопоточностью:</p><p>1. Если используется один handle на все потоки, то можно попробовать лочить его мьютексом пока выполняется GrdCodeRun. Либо в каждом потоке создавать отдельный хэндл<br />2. Если в каждом потоке отдельный handle, то надо наоборот попробовать держать один хэндл на все потоки</p><p>Есть вероятность что в одном из этих кейсов проблема уйдет.</p><p>ОБРАТИТЬ ВНИМАНИЕ</p><p>- Надо убедиться, что GrdFind и GrdLogin ищут только локальные ключи<br />- Нет смысла в рабочем приложении использовать GrdFind, т.к. он больше нужен чтобы перебрать все ключи в системе и составить список, причем не требует указания кодов доступа. Нужно использовать GrdLogin, поскольку эта функция уже будет искать конкретный ключ по параметрам, заданным для GrdSetFindMode и логиниться к нему, если найдет<br />- Как раз вы не описали в какой момент выполняется GrdLogin? В случае сбоя до ее вызова, видимо, дело не доходит<br />- Еще интересно в каком режиме используете ключи, USB или HID?</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Wed, 29 Jan 2020 14:02:57 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4284/#p4284</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4283/#p4283</link>
			<description><![CDATA[<p>Здравствуйте, утилита диагностики как я понял работает только на ОС Windows, а у нас используется Linux. По поводу примера, код достаточно емкий использующий множество сторонних библиотек к тому же политика организации не позволяет передавать исходные коды. Вы можете хотя бы направление дать в каких случаях функия GrdFind() не обнаруживает подключенный ключ и замирает при этом на 10 секунд. Утилита lsusb при возникновении данной проблемы отображает наличие ключа Guardant.</p>]]></description>
			<author><![CDATA[null@example.com (Coxwain)]]></author>
			<pubDate>Wed, 29 Jan 2020 05:32:53 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4283/#p4283</guid>
		</item>
		<item>
			<title><![CDATA[Re: Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4282/#p4282</link>
			<description><![CDATA[<p>Здравствуйте. Пришлите <a href="https://dev.guardant.ru/display/KB/0001">полный отчет утилиты диагностики</a> и тестовый пример кода на hotline@guardant.ru</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Tue, 28 Jan 2020 14:45:47 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4282/#p4282</guid>
		</item>
		<item>
			<title><![CDATA[Спустя некоторе время функция GrdFind() перестает обнаруживать ключ]]></title>
			<link>https://forum.guardant.ru/post/4281/#p4281</link>
			<description><![CDATA[<p>Здравствуйте у нас имеется приложение, работающее на ОС Linux ROSA. Приложение многопоточное. Защита организована на ключах Guardant Code Time. Приложение периодически проверяет наличие ключа и лицензию, функциями GrdCheck() и GrdCodeRun(). Если функция GrdCheck() возвращает ошибку, выполняется повторный поиск ключа функцией GrdFind(), а затем снова GrdCheck() и GrdCodeRun(). Так вот возникает следующая проблема: функция GrdCheck() иногда возвращает ошибку 71 («Guardant API Must be initialized») после чего выполняется GrdFind() ключ снова обнаруживается и дальше все прекрасно работает, а иногда функция GrdCheck() возвращает ошибку 1 («Dongle with specified search conditions not found») после чего функция GrdFind() начинает выполнятся по 10 секунд и возвращает ошибку 36 («All dongles found») и больше не может обнаружить ключ даже после перезапуска приложения. Для решения проблемы помогает только вынимание ключа из USB порта и подключение его снова.&nbsp; Подскажите в чем может быть проблема.</p>]]></description>
			<author><![CDATA[null@example.com (Coxwain)]]></author>
			<pubDate>Tue, 28 Jan 2020 11:40:26 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/4281/#p4281</guid>
		</item>
	</channel>
</rss>
