Использование LMS

Подскажите, возможно ли при использовании LMS при логине занять из одного приложения сразу лицензии на разные модули.
Т.е. такая ситуация. Программа одна, состоит из 3-х модулей. Каждый модуль доступен из меню программы.
Один модуль основной. Он используется всегда. Поэтому при старте программы идет просто логин на ключ и доступ к этому модулю.
А вот потом нужно, чтобы при открытии двух других модулей программа забирала именно их лицензии.
По описанию GrdLogin следует, что можно занять только лицензию на один модуль из таблицы лицензий.
А мне надо в одном сеансе работы с ключом занять лицензии на разные модули.
Как это можно сделать ?

(2012-02-17 17:48:45 отредактировано Кирилл Ковлежов)

Re: Использование LMS

Насколько мы понимаем, речь идёт о сетевом приложении. Такое возможно, это стандартная ситуация, описанная в документации. Для этого нужно создать таблицу LMS с числом модулей, соответствующим Вашему приложению и необходимым ресурсом для каждого модуля. Затем при старте каждого из модулей должен происходить вызов grdlogin с номером в котором указан номер модуля в таблице лицензий.

Re: Использование LMS

Да речь о сетевом режиме.
А разве можно в одном сеансе работы с ключом вызвать несколько раз grdlogin соответственно на каждый из модулей???
Ведь в документации у вас написано : "Нельзя вызывать GrdLogin несколько раз в течение одного сеанса работы с ключом Guardant".
Как с этим быть ?
Задача состоит в том, чтобы залогиниться на ключ, а потом забирать лицензии на модули из LMS, если пользователь к ним обращается.
А из документации следует, что в одном сеансе можно открыть только один модуль !!!
Или я не прав ?
Можно ли написать в коде так (условно):

grdlogin (без LMS) - логинимся на ключ
grdlogin (модуль 1) - забираем лицензию первого модуля
grdlogin (модуль 3) - забираем лицензию третьего модуля
...
grdlogout () - завершаем работу с программой
???

Re: Использование LMS

Мой коллега вероятно не так понял ваш вопрос или просто ошибся. Ситуация действительно не освещена явно в документации, но занять несколько лицензий из одного приложения возможно. При этом вы абсолютно правы - действительно нельзя!! вызывать GrdLogin несколько раз для одного хендла (а если бы это было возможно, то нельзя было бы освобождать нужные лицензии в нужные моменты, ведь GrdLogout не принимает никаких дополнительных параметров).

Для решения вашей задачи нужно создать несколько хендлов, каждый раз вызывая функции GrdCreateHandle(), для каждого хендла нужно указать коды доступа GrdSetAccessCodes() и при необходимости задать условия поиска GrdSetFindMode. Затем вы можете делать логин из каждого хендла независимо, указывая нужный модуль таблицы лицензий. Не забывайте указывать режим GrdLM_PerHandle если вам необходимо чтобы лицензия вычиталась каждый раз при логине.

Каждую лицензию можно освобождать независимо вызывая GrdLogout для нужного хендла когда клиент закрывает тот или иной модуль.