<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Правильная логика проверки наличия ключа]]></title>
		<link>https://forum.guardant.ru/topic/296/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/296" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Правильная логика проверки наличия ключа».]]></description>
		<lastBuildDate>Thu, 28 Mar 2013 14:09:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link>https://forum.guardant.ru/post/1431/#p1431</link>
			<description><![CDATA[<p>В таком случае пришлите нам следующие данные на hotline@guardant.ru:<br />1. О каких именно рекомендациях идёт речь;<br />2. Версия Мастер Комплекта;<br />3. Язык программирования;<br />4. Среда разработки;<br />5. На какой операционной системе выполняется приложение и на каком железе(достаточно данных утилиты msinfo.32&nbsp; с проблемного компьютера);<br />6. Тестовое приложение с исходниками на котором воспроизводится ошибка;<br />7. Отчёт утилиты диагностики ключа и файл маски .nsd прошитый в используемом ключе.</p>]]></description>
			<author><![CDATA[null@example.com (Вячеслав Ланчуков)]]></author>
			<pubDate>Thu, 28 Mar 2013 14:09:56 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1431/#p1431</guid>
		</item>
		<item>
			<title><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link>https://forum.guardant.ru/post/1430/#p1430</link>
			<description><![CDATA[<p>GUARDANT_KEY_RECHECK_TIMEOUT - 5 сек.<br />Ключи guardant code, но для приведенной ситуации не используется ничего кроме того что написано в коде.</p>]]></description>
			<author><![CDATA[null@example.com (Xander)]]></author>
			<pubDate>Thu, 28 Mar 2013 13:55:35 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1430/#p1430</guid>
		</item>
		<item>
			<title><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link>https://forum.guardant.ru/post/1429/#p1429</link>
			<description><![CDATA[<p>на нескольких тестовых с голой операционкой. На моем воспроизводится гарантированно со второго-третьего раза.<br />На сколько я понимаю логику - скомпилируйте вышеуказанный код - у вас должно получиться то же самое. Если будет необходимость я могу изолировать это приложение от остальной части софта чтобы вы могли его запустить.</p>]]></description>
			<author><![CDATA[null@example.com (Xander)]]></author>
			<pubDate>Thu, 28 Mar 2013 13:54:18 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1429/#p1429</guid>
		</item>
		<item>
			<title><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link>https://forum.guardant.ru/post/1428/#p1428</link>
			<description><![CDATA[<p>Здравствуйте. Уточните подробнее, указанное поведение защищённого приложения воспроизводится только на одном компьютере или на нескольких?</p>]]></description>
			<author><![CDATA[null@example.com (Вячеслав Ланчуков)]]></author>
			<pubDate>Thu, 28 Mar 2013 11:02:04 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1428/#p1428</guid>
		</item>
		<item>
			<title><![CDATA[Правильная логика проверки наличия ключа]]></title>
			<link>https://forum.guardant.ru/post/1417/#p1417</link>
			<description><![CDATA[<p>Ниже приведен кусок кода который следит за наличием ключа в слоте. Написано в соответствии с рекомендациями ваших собаководов. =) Однако бывает баг следующего генеза - если достать ключ, а затем снова вставить(не каждый раз, нужно повторять до потери пульса.). В итоге, в данном процессе ключ определится, вся информация считается. Однако Ключ после этого не доступен в других процессах. В частности guardant - диагностика просто навсегда зависает в поиске ключа(любой другой процесс пытающийся повторить поиск - заканчивает так же плачевно, т.е. не заканчивается никогда). Если застрелить чекер с нижеуказанным кодом - все сразу оживает. Я чтото делаю не так, или всетаки лыжи не едут?</p><p>if (GrdStartup(GrdFMR_Local) == GrdE_OK)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; HANDLE hGrd = GrdCreateHandle(NULL, GrdCHM_MultiThread, NULL);<br />&nbsp; &nbsp; &nbsp; &nbsp; if (hGrd)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //TODO: protect access codes<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (GrdSetAccessCodes(hGrd, ***, ***, 0, 0) == GrdE_OK)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (GrdSetFindMode(hGrd, GrdFMR_Local, GrdFM_NProg, 1, 0, 0, 0, 0, 0, 0, GrdFMI_USB) == GrdE_OK)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (!abort.Check())<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DWORD keyId = 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TGrdFindInfo fi;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int r = GrdFind(hGrd, GrdF_First, &amp;keyId, &amp;fi);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (r != GrdE_OK &amp;&amp; r != GrdE_DongleNotFound &amp;&amp; r != GrdE_AllDonglesFound)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (r == GrdE_OK)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (GrdLogin(hGrd, 0, 0) != GrdE_OK)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (GrdRead(hGrd, UAM_WORKER_ID, 4, &amp;workerInfo.m_id, NULL) == GrdE_OK)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (!abort.Wait(GUARDANT_KEY_RECHECK_TIMEOUT))<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (GrdCheck(hGrd) != GrdE_OK)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_logout();<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GrdLogout(hGrd, 0);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; abort.Wait(GUARDANT_KEY_RECHECK_TIMEOUT);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GrdCloseHandle(hGrd);<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; GrdCleanup();<br />&nbsp; &nbsp; }</p>]]></description>
			<author><![CDATA[null@example.com (Xander)]]></author>
			<pubDate>Tue, 26 Mar 2013 11:16:14 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1417/#p1417</guid>
		</item>
	</channel>
</rss>
