<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Незадача с GrdLogin]]></title>
		<link>https://forum.guardant.ru/topic/313/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/313/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Незадача с GrdLogin».]]></description>
		<lastBuildDate>Mon, 13 May 2013 13:37:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Незадача с GrdLogin]]></title>
			<link>https://forum.guardant.ru/post/1517/#p1517</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Ошибка GrdE_InvalidHandle, скорее всего, происходит из-за того, что в некоторых языках программирования, периодически уничтожаются неиспользуемые объекты и передвигаются используемые, для уплотнения памяти (т. н. garbage collecting). В результате, происходит передвижение хэндла в памяти, в то время как hGrd указывает на старую область памяти.</p></blockquote></div><p>Странно. Казалось бы, чистые &quot;плюсы&quot;, unmanaged код... По крайней мере в этом модуле.</p><div class="quotebox"><blockquote><p>Для того чтобы избежать данной проблемы, необходимо первым параметром функции GrdCreateHandle указывать null.</p></blockquote></div><p>Спасибо, помогло...</p><p>Хотя... Разница у приложений как раз в том, что &quot;старое&quot; практически полностью unmanaged, с небольшими вставками на C#, а &quot;новое&quot; - наоборот, пускалка (и бОльшая часть кода) на C# - т.е. managed и как раз для работы с ключиком пускается unmanaged кусочек.</p>]]></description>
			<author><![CDATA[null@example.com (Виктор Блинов)]]></author>
			<pubDate>Mon, 13 May 2013 13:37:16 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1517/#p1517</guid>
		</item>
		<item>
			<title><![CDATA[Re: Незадача с GrdLogin]]></title>
			<link>https://forum.guardant.ru/post/1515/#p1515</link>
			<description><![CDATA[<div class="quotebox"><cite>Виктор Блинов пишет:</cite><blockquote><p>возвращает 48 - т.е. GrdE_InvalidHandle</p></blockquote></div><p>Ошибка GrdE_InvalidHandle, скорее всего, происходит из-за того, что в некоторых языках программирования, периодически уничтожаются неиспользуемые объекты и передвигаются используемые, для уплотнения памяти (т. н. garbage collecting). В результате, происходит передвижение хэндла в памяти, в то время как hGrd указывает на старую область памяти.</p><p>Для того чтобы избежать данной проблемы, необходимо первым параметром функции GrdCreateHandle указывать null. В таком случае функция сама выделит память для хэндла, и он попадет в неуправляемую область памяти, и не будет подвержен действию сборщика мусора.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Mon, 13 May 2013 12:48:56 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1515/#p1515</guid>
		</item>
		<item>
			<title><![CDATA[Re: Незадача с GrdLogin]]></title>
			<link>https://forum.guardant.ru/post/1513/#p1513</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Верно ли то, что при прочих равных условиях (версия операционной системы, версия Guardant API (какая версия API используется?) и т.д.), два абсолютно одинаковых приложения ведут себя по разному (описанным образом)?</p></blockquote></div><p>Да, именно так.</p><div class="quotebox"><blockquote><p>какая версия API используется?</p></blockquote></div><p>Поставил за выходные 6.2 от декабря 2012 и GrdAPI32.lib и *.cpp и *.h</p><p>Теперь другая незадача...</p><div class="codebox"><pre><code>    Mode = Local ? GrdFMR_Local : GrdFMR_Remote;
    int ret = InitDongle();
    if (ret != GrdE_OK)
        return ret;

    ret = GrdDongle.SetFindMode(Mode, 0, 0, 0, 0, 0, 0, GrdFMM_ALL, GrdFMI_ALL);</code></pre></div><p>возвращает 48 - т.е. GrdE_InvalidHandle</p>]]></description>
			<author><![CDATA[null@example.com (Виктор Блинов)]]></author>
			<pubDate>Mon, 13 May 2013 12:42:16 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1513/#p1513</guid>
		</item>
		<item>
			<title><![CDATA[Re: Незадача с GrdLogin]]></title>
			<link>https://forum.guardant.ru/post/1511/#p1511</link>
			<description><![CDATA[<p>Здравствуйте.<br /></p><div class="quotebox"><cite>Виктор Блинов пишет:</cite><blockquote><p>В разрабатываемом приложении начал приделывать работу с ключиком.<br />Весь код просто скопировал один в один из работающего.<br />И выяснилась странная вещь:<br />вызов <strong>GrdLogin( m_hGrd, dwModuleLMS, dwLoginFlags );</strong> результат выдаёт нормальный, всё у него казалось бы хорошо, <br />но при этом <em><strong>после вызова </strong></em>меняются значения: m_hGrd превращается в NULL и m_dwRemoteMode == 0</p><p>Повторюсь, текст модулей на C++ один и тот же, но в одном приложении таких чудес не случается, а во втором - всегда...<br />Тестировал на XP x32 и Windows 7 x64</p></blockquote></div><p>Верно ли то, что при прочих равных условиях (версия операционной системы, версия Guardant API (<span class="bbu">какая версия API используется?</span>) и т.д.), два абсолютно одинаковых приложения ведут себя по разному (описанным образом)?</p><p>Что за параметр (переменная) <strong>m_dwRemoteMode</strong>? В <strong>GrdLogin</strong> таких параметров нет (что видно и из Вашего описания тоже).</p><p>Воспроизводится ли указанная проблема на нашем стандартном примере для Guardant API ((все примеры можно найти в папке &quot;Samples&quot; установленного комплекта разработчика, директория по умолчанию: &quot; %Program Files%\Guardant\Guardant 6\%Public Code%\Samples\&quot;))?</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Mon, 13 May 2013 09:12:23 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1511/#p1511</guid>
		</item>
		<item>
			<title><![CDATA[Незадача с GrdLogin]]></title>
			<link>https://forum.guardant.ru/post/1507/#p1507</link>
			<description><![CDATA[<p>В разрабатываемом приложении начал приделывать работу с ключиком.<br />Весь код просто скопировал один в один из работающего.<br />И выяснилась странная вещь:<br />вызов <strong>GrdLogin( m_hGrd, dwModuleLMS, dwLoginFlags );</strong> результат выдаёт нормальный, всё у него казалось бы хорошо, <br />но при этом <em><strong>после вызова </strong></em>меняются значения: m_hGrd превращается в NULL и m_dwRemoteMode == 0</p><p>Повторюсь, текст модулей на C++ один и тот же, но в одном приложении таких чудес не случается, а во втором - всегда...<br />Тестировал на XP x32 и Windows 7 x64</p>]]></description>
			<author><![CDATA[null@example.com (Виктор Блинов)]]></author>
			<pubDate>Sun, 12 May 2013 10:19:36 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1507/#p1507</guid>
		</item>
	</channel>
</rss>
