<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Правильная логика проверки наличия ключа]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/296" />
	<updated>2013-03-28T14:09:56Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/296/</id>
		<entry>
			<title type="html"><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1431/#p1431" />
			<content type="html"><![CDATA[<p>В таком случае пришлите нам следующие данные на hotline@guardant.ru:<br />1. О каких именно рекомендациях идёт речь;<br />2. Версия Мастер Комплекта;<br />3. Язык программирования;<br />4. Среда разработки;<br />5. На какой операционной системе выполняется приложение и на каком железе(достаточно данных утилиты msinfo.32&nbsp; с проблемного компьютера);<br />6. Тестовое приложение с исходниками на котором воспроизводится ошибка;<br />7. Отчёт утилиты диагностики ключа и файл маски .nsd прошитый в используемом ключе.</p>]]></content>
			<author>
				<name><![CDATA[Вячеслав Ланчуков]]></name>
				<uri>https://forum.guardant.ru/user/556/</uri>
			</author>
			<updated>2013-03-28T14:09:56Z</updated>
			<id>https://forum.guardant.ru/post/1431/#p1431</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1430/#p1430" />
			<content type="html"><![CDATA[<p>GUARDANT_KEY_RECHECK_TIMEOUT - 5 сек.<br />Ключи guardant code, но для приведенной ситуации не используется ничего кроме того что написано в коде.</p>]]></content>
			<author>
				<name><![CDATA[Xander]]></name>
				<uri>https://forum.guardant.ru/user/582/</uri>
			</author>
			<updated>2013-03-28T13:55:35Z</updated>
			<id>https://forum.guardant.ru/post/1430/#p1430</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1429/#p1429" />
			<content type="html"><![CDATA[<p>на нескольких тестовых с голой операционкой. На моем воспроизводится гарантированно со второго-третьего раза.<br />На сколько я понимаю логику - скомпилируйте вышеуказанный код - у вас должно получиться то же самое. Если будет необходимость я могу изолировать это приложение от остальной части софта чтобы вы могли его запустить.</p>]]></content>
			<author>
				<name><![CDATA[Xander]]></name>
				<uri>https://forum.guardant.ru/user/582/</uri>
			</author>
			<updated>2013-03-28T13:54:18Z</updated>
			<id>https://forum.guardant.ru/post/1429/#p1429</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Правильная логика проверки наличия ключа]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1428/#p1428" />
			<content type="html"><![CDATA[<p>Здравствуйте. Уточните подробнее, указанное поведение защищённого приложения воспроизводится только на одном компьютере или на нескольких?</p>]]></content>
			<author>
				<name><![CDATA[Вячеслав Ланчуков]]></name>
				<uri>https://forum.guardant.ru/user/556/</uri>
			</author>
			<updated>2013-03-28T11:02:04Z</updated>
			<id>https://forum.guardant.ru/post/1428/#p1428</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Правильная логика проверки наличия ключа]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1417/#p1417" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Xander]]></name>
				<uri>https://forum.guardant.ru/user/582/</uri>
			</author>
			<updated>2013-03-26T11:16:14Z</updated>
			<id>https://forum.guardant.ru/post/1417/#p1417</id>
		</entry>
</feed>
