<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
		<link>https://forum.guardant.ru/topic/772/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/772" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet».]]></description>
		<lastBuildDate>Thu, 18 Sep 2025 13:45:39 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/5491/#p5491</link>
			<description><![CDATA[<p>Добрый день. Просьбе более детально описать ваш кейс, и проблему, которую вы хотите решить. Попробуем уточнить у наших разработчиков, какие еще рекомендации смогут вам помочь.</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Thu, 18 Sep 2025 13:45:39 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/5491/#p5491</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/5490/#p5490</link>
			<description><![CDATA[<div class="quotebox"><cite>Тимофей Ершов пишет:</cite><blockquote><p>...Попробуйте вместо GrdLock воспользоваться глобальным именованным мьютексом...</p></blockquote></div><p>Проблемы: <br />- если приложение работает в Linux под Wine, то, будучи установленным в разные экземпляры (&quot;префиксы&quot;) Wine, приложения одного префикса не видят мьютексы другого. Даже если мьютексы созданы в глобальном пространстве имен Windows (с префиксом &quot;Global\&quot;);<br />- &quot;нативное&quot; приложение под Linux не видит мьютексы Windows-приложений, запущенных в префиксах Wine. <em>Более того, в Linux вообще нет глобальных именованных мьютексов (но можно придумать костыли разной степени колченогости)</em><br />- &quot;нативные&quot; приложения под Linux могут быть запущены в докер-контейнрах, изолированных от рабочей хост - среды.<br />Во всех этих случах приложения могут совместо использовать локальный донгл.<br />...<br />Можно ли как-то организовать логическую блокировку донгла на аппаратном уровне? Например, записывать идентификатор сессии в память донгла или что-то ещё. Подскажите.</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Wed, 17 Sep 2025 22:57:59 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/5490/#p5490</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/5489/#p5489</link>
			<description><![CDATA[<div class="quotebox"><cite>Тимофей Ершов пишет:</cite><blockquote><p>Обратите внимание, сегодня актуальная версия Guardant SDK - 7 update 9. Найти ее можно у нас на сайте - <a href="https://www.guardant.ru/support/developers/sdk">https://www.guardant.ru/support/developers/sdk</a>.</p></blockquote></div><p>Да, я 7.9 использовал, конечно. Исправил № в сообщении, извинения.</p><p><em>Я, когда писал сообщение, смотрел № последнего релиза на страничке <a href="https://www.guardant.ru/support/release/">https://www.guardant.ru/support/release/</a> - там последний релиз 7.7; возможно есть смысл добавить туда инфорсацию о релизе 7.9?</em></p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Wed, 17 Sep 2025 22:39:57 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/5489/#p5489</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/5488/#p5488</link>
			<description><![CDATA[<p>Добрый день.<br />Попробуйте вместо GrdLock воспользоваться глобальным именованным мьютекосм. Возможно так вам удастся обойти эту проблему.</p><p>Обратите внимание, сегодня актуальная версия Guardant SDK - 7 update 9. Найти ее можно у нас на сайте - <a href="https://www.guardant.ru/support/developers/sdk">https://www.guardant.ru/support/developers/sdk</a>.</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Tue, 16 Sep 2025 10:33:00 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/5488/#p5488</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/5487/#p5487</link>
			<description><![CDATA[<div class="quotebox"><cite>Тимофей Ершов пишет:</cite><blockquote><p>...<br />2. Сегодня такую информацию мы уточнить не можем, так как SDK 6.3 обновлялся более 3 лет назад. Вероятно обе ваши ошибки имеют одну природу происхождения, и связаны с некорректной работой инструментов, входящих в SDK 6.3. Уточните, воспроизводятся ли такие ошибки на SDK 7.3?</p></blockquote></div><p>Сегодня вернулся к этому вопросу: скачал самый свежий DSK (7.<strong>9</strong>). Баг не исправили. Вот такой цикл всё так же выполняется всего 10 раз, вылетает с кодом GrdE_DongleLocked:<br /></p><div class="codebox"><pre><code>        int i = 0;
        DWORD ret;
        do {
            ret = GrdLock(hGrd, 2000, 3000, GrdLM_All);
            i++;
        } while (!ret);</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Mon, 15 Sep 2025 17:33:50 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/5487/#p5487</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3671/#p3671</link>
			<description><![CDATA[<p>Добрый день.</p><p>1. Приложения, защищенные с SDK 7.3 должны работать работать и на Windows XP в том числе. Совместимость есть. Однако сам комплект разработчика все же рекомендуем устанавливать на современных операционных системах.</p><p>2. Сегодня такую информацию мы уточнить не можем, так как SDK 6.3 обновлялся более 3 лет назад. Вероятно обе ваши ошибки имеют одну природу происхождения, и связаны с некорректной работой инструментов, входящих в SDK 6.3. Уточните, воспроизводятся ли такие ошибки на SDK 7.3?</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Wed, 05 Jul 2017 11:59:30 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3671/#p3671</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3670/#p3670</link>
			<description><![CDATA[<p>1. К сожалению, в SDK 7.3 вы почему-то отказались от поддержки Windows XP. Отказаться от обслуживания старых клиентов мы не готовы.</p><p>2. Уточните, пожалуйста, о какой &quot;исправленной ошибке&quot; идет речь? О той, где одно приложение может разблокировать другое, или о той, где одно приложение может &quot;безнаказанно&quot; вызвать GrdLock() лишь 10 раз?</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Tue, 04 Jul 2017 14:03:23 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3670/#p3670</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3669/#p3669</link>
			<description><![CDATA[<p>Добрый день. В SDK 6.31 была ошибка с GrdLock. В <a href="https://www.guardant.ru/support/download/sdk/">SDK 7.3</a> данная ошибка исправлена. Необходимо обновить SDK.</p><p>Обратите внимание! При установке\обновлении Guardant SDK, на компьютере с уже установленным ранее SDK, строго необходимо делать резервную копию базы данных утилиты программирования GrdUtil.exe.</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Tue, 04 Jul 2017 09:28:21 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3669/#p3669</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3664/#p3664</link>
			<description><![CDATA[<p>Отправил письмо.</p><p>1. К письму приложен 7z - архив, в нем - исходник тестового приложения, само приложение и инструкция по сборке и запуску в MS Word файле Readme.doc. Тест касается <a href="https://forum.guardant.ru/post/3662/#p3662">https://forum.guardant.ru/post/3662/#p3662</a></p><p>2. По поводу ограничения количества вызовов GrdLock() - <a href="https://forum.guardant.ru/post/3659/#p3659">https://forum.guardant.ru/post/3659/#p3659</a> - тест не создавал, для повторения достаточно в цикле вызывать <br /></p><div class="codebox"><pre><code>  fStatus := GrdLock(fGrdHandle, 1000, Cardinal(-1), GrdLM_All);</code></pre></div><p>- анализируя возвращаемый код fStatus и подсчитывая количество итераций цикла.</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Fri, 30 Jun 2017 23:35:32 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3664/#p3664</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3663/#p3663</link>
			<description><![CDATA[<p>Добрый день. У нас подобное поведение не воспроизводится. Просьба прислать на почту hotline@guardant.ru следующие данные</p><p>Пример с исходным кодом<br />Версия SDK с которой проводите защиту<br />Версия ОС<br />Среда разработки<br />Отчет утилиты диагностики ключа, с которым защищаетесь</p>]]></description>
			<author><![CDATA[null@example.com (Тимофей Ершов)]]></author>
			<pubDate>Fri, 30 Jun 2017 13:07:54 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3663/#p3663</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3662/#p3662</link>
			<description><![CDATA[<p>Бред... </p><p>При параллельном запуске приложений, первое приложение блокирует ключ по GrdLock().&nbsp; При этом значение параметра dwTimeoutAutoUnlock в GrdLogout() равно 0xFFFFFFFF, т.е. время блокирования не ограничено и блокировка может быть снята только функцией GrdUnlock.</p><p>Запускается второе приложение, которое вполне логично получает отказ по GrdLock() (т.к. первое уже заблокировало ключ), затем это второе приложение просто выполняем GrdLogout(), GrdCloseHandle(), потом затем снова инициализирует дескриптор ключа, выполняем поиск ключа, и - вуа-ля! - вызов GrdLock() выполняется успешно, первое приложение &quot;отваливается&quot; от ключа с кодом GrdE_DongleLocked - ну, красота, в общем. </p><p>Еще раз напомню, что значение параметра dwTimeoutAutoUnlock в GrdLogout() равно 0xFFFFFFFF, т.е. время блокирования не ограничено и блокировка может быть снята только функцией GrdUnlock (<a href="https://dev.guardant.ru/display/DOC/GrdLock">согласно документации</a>).</p><br /><p><strong>Уважаемые разработчики, кто-нибудь вообще тестировал метод GrdLock()? </strong></p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Thu, 29 Jun 2017 01:16:47 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3662/#p3662</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3661/#p3661</link>
			<description><![CDATA[<div class="quotebox"><cite>vlad-mal пишет:</cite><blockquote><p>...</p><p><span class="bbu">Остался вопрос:</span> как обеспечить эксклюзивный доступ к ключу в цикле, и при этом не заблокировать ключ надолго в случае &quot;зависания&quot; приложения?</p></blockquote></div><p>Придумал костыль: </p><p>- в начало цикла, перед вызовом GrdLock()</p><div class="codebox"><pre><code>var
  fLockCounter: DWORD;
begin
...
  Начало_Цикла

    while True do begin
      GrdGetInfo(fGrdHandle, GrdGIL_LockCounter, @fLockCounter, SizeOf(DWORD));
      if fLockCounter &lt;= 1 then Break; // fLockCounter и так маленький (&lt; 10)
      FStatus := GrdUnlock(fGrdHandle);
      if FStatus &lt;&gt; GrdE_OK then 
        //  действия в случае, когда ключ захвачен в другой сессии
    end;

    FStatus := GrdLock(...);
    if FStatus &lt;&gt; GrdE_OK then 
      //  действия в случае, когда ключ захвачен в другой сессии
...
... Тело цикла
...
Конец_Цикла</code></pre></div><p>Описание: приведенный код не позволяет счетчику блокировок увеличиться до недопустимого значения.<br />Если счетчик не боле, чем 1, то предполагается, что ключ был захвачен в этом сеансе. Иначе (счетчик больше 1), выполняется попытка уменьшить значение счетчика блокировок. Если не получилось - следовательно, ключ заблокирован в другой сессии.</p><p>~~~~~~~~</p><p>Ну, хоть так.</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Wed, 28 Jun 2017 23:40:53 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3661/#p3661</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3660/#p3660</link>
			<description><![CDATA[<p>Повторил эксперименты с ключами <strong>Guardant Sign</strong> - выяснил, что поведение у их точно такое же, как и <strong>Guardnt Sign <span style="color:Red">Net</span></strong>.</p><p>Можно было бы такое поведение и в документации отразить, тем более, что вопрос уже возникал: <a href="https://forum.guardant.ru/post/1092">https://forum.guardant.ru/post/1092</a></p><p>~~~~~~~~~~~~~~~~~</p><p><span class="bbu">Остался вопрос:</span> как обеспечить эксклюзивный доступ к ключу в цикле, и при этом не заблокировать ключ надолго в случае &quot;зависания&quot; приложения?</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Wed, 28 Jun 2017 22:45:49 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3660/#p3660</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3659/#p3659</link>
			<description><![CDATA[<p>Подключил к экспериментам метод&nbsp; &nbsp;<strong>GrdGetInfo()</strong> с параметром <strong>GrdGIL_LockCounter</strong>.<br /><em>Метод возвращает счетчик блокировок ключа.<br /></em></p><p>Итак:</p><p>Счетчик увеличивается на 1 при вызове GrdLock().<br />Счетчик уменьшается на 1 при вызове GrdUnlock() либо автоматически, по достижении момента времени, равного моменту последнего вызова GrdLock() плюс время, заданное в параметре dwTimeoutAutoUnlock.<br />Если счетчик равен 10, то вызов GrdLock() завершится с кодом GrdE_DongleLocked.</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Wed, 28 Jun 2017 22:34:34 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3659/#p3659</guid>
		</item>
		<item>
			<title><![CDATA[Re: Поясните, пожалуйста, работу GRDLock для ключей Sign/SignNet]]></title>
			<link>https://forum.guardant.ru/post/3658/#p3658</link>
			<description><![CDATA[<p>Экспериментирую...</p><p>Задал время выполнения итерации цикл равным <strong>ровно</strong> 1 секунда </p><div class="codebox"><pre><code>Начало_Цикла
  fStatus := GrdLock(fGrdHandle, 1000, aValue, GrdLM_All);
  Проверка_Значения (fStatus);
  ...
  ... // Что-то делаю
  ...
Конц_Цикла</code></pre></div><p>Выяснил:</p><p>Если значение времени авторазблокировки <strong>aValue</strong> меньше времени итерации цикла (например, <strong>aValue = 900</strong>, а <strong>dwTimeoutAutoUnlock = 1000</strong>), то <strong>GrdLock()</strong> всегда отрабатывает успешно.</p><p>Если значение времени авторазблокировки <strong>aValue</strong> больше времени итерации цикла (например, <strong>aValue = 1100</strong>, а <strong>dwTimeoutAutoUnlock = 1000</strong>), то <strong>GrdLock()</strong> отрабатывает успешно лишь 10 раз.</p><p>Непонятно, как блокировать ключ с учетом появившихся в результате экспериментов новых сведений. <br />Можно, конечно, после первого успешного захвата ключа просто периодически вызывать <strong>GrdLock()</strong>, не заботясь о коде завершения (&quot;это же я первым ключ захватил!&quot;), но в случае с перезапуском удаленного сервера, такая тактика, имхо, не будет правильной...</p>]]></description>
			<author><![CDATA[null@example.com (vlad-mal)]]></author>
			<pubDate>Wed, 28 Jun 2017 22:15:11 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3658/#p3658</guid>
		</item>
	</channel>
</rss>
