Re: Вопросы по Guardant API

А научите, пожалуйста, считать CRC для таблицы лицензий.

Берем GrdUtil, создаем пустую маску ключа Sign, добавляем в нее пустую таблицу лицензий и смотрим ее дамп.

54 4C 10 05 [67 9D 75 33] (02 00 01 01 00 00 00 00 05 00)

Как я понимаю, то, что в квадратных скобках - это CRC  от того, что в круглых скобках.

Проверяем. Берем ApiExplorer, и выполняем в нем функцию GrdCRC. Код, сгенеированный ApiExplorer-ом (с некоторыми сокращениями), приведен ниже.

Получаем 3910572690=E9169A92h.
Что я делаю не так?

BYTE memDump_pData[64];
  memDump_pData[0] = 0x02;
  memDump_pData[1] = 0x00;
  memDump_pData[2] = 0x01;
  memDump_pData[3] = 0x01;
  memDump_pData[4] = 0x00;
  memDump_pData[5] = 0x00;
  memDump_pData[6] = 0x00;
  memDump_pData[7] = 0x00;
  memDump_pData[8] = 0x05;
  memDump_pData[9] = 0x00;
  void* pData = (void*) memDump_pData;

  DWORD DWORD_GrdCRC0( 0 );

  DWORD_GrdCRC0 = GrdCRC( pData, 10, 4294967295 );

Re: Вопросы по Guardant API

Здравствуйте, Luck.

Здесь не совсем корректно производится подсчет CRC, т.к. последний байт не должен учитываться (согласно документации: "выравнивающий байт не учитывается"), а массив для подсчета будет следующим: (02 00 01 01 00 00 00 00 05).

Re: Вопросы по Guardant API

Большое спасибо! Заработало!

PS
У вас на форуме часы идут по летнему времени.

Re: Вопросы по Guardant API

Luck пишет:

У вас на форуме часы идут по летнему времени.

Нужно в настройках своего профиля отключить "Переход на летнее/зимнее время".

Re: Вопросы по Guardant API

Станислав Петрушевский пишет:

SP ключи управляются на портале sp.guardant.ru, там Вы можете несколько серийных номеров объединить в один сетевой, ресурс будет равен количеству серийных номеров. Шаблон уже активируется в соответствии с серийным номером. Прошивать сетевую лицензию  в SP ключ не нужно.

Похоже, что это все-таки не так...

Ключ SP на 2 пользователя
Активирую шаблон без таблицы лицензий (и с нулем в 38sam) - сервер его видит, но количество лицензий 0/0
Активирую шаблон c таблицей лицензий на 5 (и 5 в 38sam) - сервер его видит, количество лицензий 2/2

То есть, все-таки, для сетевых ключей нужно иметь в шаблоне таблицу лицензий и 38sam?
И как это продавать? Иметь пачку шаблонов на 1,2,3,... лицензий и каждому пользователю выдавать шаблон, соответствующий количеству лицензий в его ключе?
Или же можно записать в шаблон заведомо большое количество лицензий (100) и давать его всем пользователям, в том числе и локальным?

Re: Вопросы по Guardant API

Luck пишет:

Активирую шаблон c таблицей лицензий на 5 (и 5 в 38sam) - сервер его видит, количество лицензий 2/2

Или же можно записать в шаблон заведомо большое количество лицензий (100) и давать его всем пользователям, в том числе и локальным?

Если реальный сетевой ресурс ключа (который был указан при формировании сетевого ключа Guardant SP Net на сервере активаций) будет меньше, чем прошитый в таблице лицензий, то вполне можно. Иначе же придется делать разные шаблоны.

Re: Вопросы по Guardant API

Спасибо. Буду использовать единственный шаблон для всех ключей SP, и локальных и сетевых. Кстати, какое наибольшее значение можно записать в качестве сетевого ресурса - 255?

И все-таки, после вот этого:

Станислав Петрушевский пишет:
Luck пишет:
Алексей Перепелов пишет:

таблица лицензий должна присутствовать в сетевом ключе, если Вы собираетесь использовать его, как сетевой.

Относится ли это к сетевым ключам SP?

... Прошивать сетевую лицензию  в SP ключ не нужно.

Станислав Петрушевский пишет:
Luck пишет:

... Во всех остальных случаях, в частности ...
2) Сетевые и локальные софтверные ключи

таблица лицензий также может присутствовать, но не обязана.
Верно?

... Все операции с Guardant SP осуществляются через портал sp.guardant.ru

хотелось бы получить окончательный внятный официальный ответ на вопрос:

Обязана ли присутствовать таблица лицензий в шаблоне ключа сетевого GuardantSP, если он будет использоваться как сетевой?

Re: Вопросы по Guardant API

И еще вопрос.

Раньше сетевой ресурс хранился в ключе в двух местах: 19sam и 38sam.
В следующем поколении ключей, ресурс хранится в трех местах: 19sam, 38sam и LMS
А в новейших GuardantSPNet он хранится уже в четырех местах: 19sam, 38sam, LMS и sp.guardant.ru

Какой реально будет сетевой ресурс ключа, если все эти значения будут различны? Возьмется наименьшее число?

Re: Вопросы по Guardant API

Luck пишет:

Кстати, какое наибольшее значение можно записать в качестве сетевого ресурса - 255?

65535 при размере ячейки в 2 байта.

Luck пишет:

Обязана ли присутствовать таблица лицензий в шаблоне ключа сетевого GuardantSP, если он будет использоваться как сетевой?

Да, обязана. Приносим свои извинения за предоставленный ранее, неточный ответ.

Luck пишет:

И еще вопрос.
Раньше сетевой ресурс хранился в ключе в двух местах: 19sam и 38sam.
В следующем поколении ключей, ресурс хранится в трех местах: 19sam, 38sam и LMS
А в новейших GuardantSPNet он хранится уже в четырех местах: 19sam, 38sam, LMS и sp.guardant.ru
Какой реально будет сетевой ресурс ключа, если все эти значения будут различны? Возьмется наименьшее число?

Сетевой ресурс не будет превышать тот, который был установлен для ключа на сервере активации.
Общий сетевой ресурс в 38sam и в LMS будут равны.

Re: Вопросы по Guardant API

Здравствуйте!
Не могу залогиниться на сетевой ключ Net II. Ошибка 10 - Сетевой ресурс ключа Guardant Net исчерпан.
https://forum.guardant.ru/uploads/legacy/0/2500/2924/thumb/p1a342oe2am4grordvn1d5i19ie1.jpg
Код такой:

        er = GrdStartup(GrdFMR_Remote)
        self.hgrd = GrdCreateHandle(, GrdCHM_MultiThread)
        er = GrdSetFindMode(self.hgrd, GrdFMR_Remote, GrdFM_NProg, 10, 0, 0, 0, 0, 0, GrdFMM_ALL, GrdFMI_ALL)
        er = GrdSetAccessCodes(self.hgrd, AC_public, AC_privateRD, AC_privateWR, AC_privateMST)
        er = GrdLogin(self.hgrd, 1, GrdLM_PerStation)

Уже не знаю в какую сторону капать...

Re: Вопросы по Guardant API

Здравствуйте, mike.ch.

В данном случае, при вызове функции GrdLogin, в качестве параметра dwModuleLMS передается значение "1".

mike.ch пишет:

er = GrdLogin(self.hgrd, 1, GrdLM_PerStation)

Это означает что приложение пытается зарегистрироваться и получит лицензию из модуля таблицы лицензий №1.

Убедитесь что таблица лицензий с таким модуле действительно была прошита в память ключа.
Обратите внимание: при добавлении модулей в таблицу лицензий первым добавляется модуль №0, т.е. модуль №1 будет вторым по счету.

Re: Вопросы по Guardant API

Антон Тихиенко пишет:

Здравствуйте, mike.ch.

В данном случае, при вызове функции GrdLogin, в качестве параметра dwModuleLMS передается значение "1".

mike.ch пишет:

er = GrdLogin(self.hgrd, 1, GrdLM_PerStation)

Это означает что приложение пытается зарегистрироваться и получит лицензию из модуля таблицы лицензий №1.

Убедитесь что таблица лицензий с таким модуле действительно была прошита в память ключа.
Обратите внимание: при добавлении модулей в таблицу лицензий первым добавляется модуль №0, т.е. модуль №1 будет вторым по счету.

Да. Таблица лицензий прошита в ключ. Я и без таблицы пробовал со значением 0xFFFFFFFF. И все равно ошибка 10. Я уже просто в отчаянии. Неделю колупаюсь с ключом, уперся в эту ошибку и все.

Re: Вопросы по Guardant API

mike.ch пишет:

Да. Таблица лицензий прошита в ключ. Я и без таблицы пробовал со значением 0xFFFFFFFF. И все равно ошибка 10. Я уже просто в отчаянии. Неделю колупаюсь с ключом, уперся в эту ошибку и все.

Выложите на файлообменнике или пришлите нам на e-mail ( hotline@guardant.ru - со ссылкой на данную тему) *.nsd-файл маски, которая прошита в тестируемом электронном ключе, и скриншот отчета стандартной утилиты диагностики Guardant (Пуск/Панель управления/Драйверы Guardant/кнопка "Диагностика"/кнопка "Полный отчет") для данного ключа.

Re: Вопросы по Guardant API

Антон Тихиенко пишет:

Выложите на файлообменнике или пришлите нам на e-mail ( hotline@guardant.ru - со ссылкой на данную тему) *.nsd-файл маски, которая прошита в тестируемом электронном ключе, и скриншот отчета стандартной утилиты диагностики Guardant (Пуск/Панель управления/Драйверы Guardant/кнопка "Диагностика"/кнопка "Полный отчет") для данного ключа.

Отправил.