Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Deck of Cards
id001
Card
defaulttrue
labelC
Code Block
languagecpp
int GRD_API GrdFind(	
  HANDLE hGrd,
  DWORD dwMode,
  DWORD *pdwID,
  TGrdFindInfo *pFindInfo
);	
Expand
titleПараметры функции

hGrd

хэндл, через который будет выполнен поиск

dwMode

режим поиска. Устанавливается константами GrdF_XXX. Значение GrdF_First нужно использовать при первом вызове GrdFind после того, как были установлены критерии поиска функцией GrdSetFindMode. При всех последующих вызовах до изменения критериев поиска нужно использовать значение GrdF_Next.

GrdF_First

Первый вызов

GrdF_Next

Следующий вызов

Expand
titleВозвращаемое значение функции

pdwID

указатель на переменную, в которую будет помещен ID найденного ключа. Память для переменной должна быть выделена до вызова функции

pFindInfo

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

typedef struct
{
DWORD dwPublicCode; // Общий код доступа в числовом виде
BYTE byHrwVersion; // Аппаратная версия ключа (биты 0 -3: minor, биты 4 - 7: major)
BYTE byMaxNetRes; // Максимальный ресурс лицензий сетевого ключа (программируется компанией "Актив" при продаже ключа)
WORD wType; // Флаги типа ключа
DWORD dwID; // ID ключа (программируется компанией "Актив" при продаже ключа)


// Группа полей, доступных в режиме адресации UAM
BYTE byNProg; // Номер программы
BYTE byVer; // Версия программы
WORD wSN; // Серийный номер
WORD wMask; // Битовая маска
WORD wGP; // Счетчик GP (устаревшая технология, не используется)
WORD wRealNetRes; // Текущий ресурс лицензий сетевого ключа. Задается разработчиком, должен быть <= byMaxNetRes
DWORD dwIndex; // Индекс, используемый утилитами удаленного программирования


// Только для современных ключей (Stealth III и старше)
BYTE abyReservedISEE[0x1C]; // Зарезервировано
WORD wWriteProtectS3; // SAM-адрес 1-го байта, доступного для записи. Если 0, запреты на запись отсутствуют.
WORD wReadProtectS3; // SAM-адрес 1-го байта, доступного для чтения. Если 0, запреты на чтение отсутствуют.
WORD wGlobalFlags; // Глобальные флаги
DWORD dwDongleState; // Dongle State. See GrdDSF_XXX definition
BYTE abyReservedH[0x100 - 0x1A - 0x1C - 0x0A]; // Reserved. For align to 0x100


// Информация о драйвере
DWORD dwGrDrv_Platform; // Разрядность драйвера (Win32/Win64)
DWORD dwGrDrv_Vers; // Версия драйвера (0x05401234=5.40.12.34)
DWORD dwGrDrv_Build; // Сборка драйвера
DWORD dwGrDrv_Reserved; // Зарезервировано


// Информация о ключе
DWORD dwRkmUserAddr; // Адрес начала пользовательской памяти в 2-хбайтовых словах
DWORD dwRkmAlgoAddrW; // Адрес таблицы размещения защищенных ячеек в словах
DWORD dwPrnPort; // Адрес LPT-порта (или 0, если ключ - USB)
DWORD dwClientVersion; // Reserved Dongle client version


// SAP start
DWORD dwRFlags; // Reserved Type of MCU
DWORD dwRProgVer; // Reserved Program version (in MCU)
DWORD dwRcn_rc; // Reserved curr_num & answer code
DWORD dwNcmps; // Reserved Number of compare conditions
DWORD dwNSKClientVersion; // Reserved Client version (low byte - minor, hi - major)
DWORD dwModel; // Модель ключа
DWORD dwMCUType; // Тип ключа
DWORD dwMemoryType; // Тип памяти ключа


// Зарезервировано
BYTE abyReserved[0x200 - 0x100 - 0x38]; // Reserved. For align to 0x200
} TGrdFindInfo;

Возможные ошибки

Набор ошибок Guardant API

 

GrdE_NeedLogout

Попытка вызова GrdFind после GrdLogin

Expand
titleОписание

Функция GrdFind осуществляет поиск локального или удаленного ключа, удовлетворяющего критериям поиска, установленным при последнем вызове GrdSetFindMode и возвращает ошибку GrdE_OK и ID этого ключа, в том случае, если такой ключ найден, а также структуру TGrdFindInfo, содержащую данные о найденном ключе. Если производится поиск сетевого ключа, функция GrdFind опрашивает все сервера Guardant Net, доступные для данной копии приложения в соответствии с параметрами установленными в конфигурационном файле сетевых настроек клиента. Если производится поиск локальных ключей, то функция обнаруживает только те ключи, которые подключены непосредственно к данной рабочей станции.

При помощи GrdFind можно построить список ключей, удовлетворяющим критериям поиска, выполняя поиск последовательно и записывая данные о ключах в массив, до тех пор пока функция не вернет ошибку GrdE_DongleNotFound или GrdE_AllDonglesFound. Если не будет найдено ни одного ключа, удовлетворяющего критериям поиска, функция вернет ошибку GrdE_DongleNotFound. После того, как список ключей построен, можно выбрать из них нужный и при дальнейшей работе использовать его, установив критерием поиска ID нужного ключа.

При первом вызове GrdFind при вновь установленных функцией GrdSetFindMode критериях поиска в параметре dwMode следует установить значение GrdF_First, при всех последующих вызовах до изменения критериев поиска нужно устанавливать значение GrdF_Next. GrdFind необходимо вызывать в рамках блока инициализации, до вызова GrdLogin. При попытке вызова GrdFind на залогиненном хэндле будет возвращена ошибка GrdE_NeedLogout.

Если GrdFind вызвать до установки Общего кода (Public Code), см. GrdSetAccessCodes, то будут найдены все доступные ключи Guardant с любыми кодами. После вызова GrdSetAccessCodes функция GrdFind будет искать только ключи с заданным Общим кодом.

Card
labelC#
Code Block
languagec#
public static GrdE GrdFind(Handle grdHandle, GrdF mode, out uint id, out FindInfo findInfo)
Expand
titleПараметры метода

grdHandle [in] 

Тип: Handle

Хэндл, через который будет выполнен поиск.

mode [in]

Тип: GrdF

Режим поиска. Устанавливается константами GrdF. Значение GrdF.First нужно использовать при первом вызове GrdFind после того, как были установлены критерии поиска функцией GrdSetFindMode. При всех последующих вызовах до изменения критериев поиска нужно использовать значение GrdF.Next.

id [out]

Тип:  uint

ID найденного ключа.

findinfo [out]

Тип:  FindInfo

Данные о найденном ключе.

Expand
titleВозвращаемое значение метода

Набор ошибок Guardant API

Expand
titleОписание

Метод GrdFind осуществляет поиск локального или удаленного ключа, удовлетворяющего критериям поиска, установленным при последнем вызове GrdSetFindMode и возвращает ошибку GrdE.OK, а также  ID этого ключа, в том случае, если такой ключ найден, а также структуру FindInfo GrdFindInfo, содержащую данные о найденном ключе. Если производится поиск сетевого ключа, метод GrdFind опрашивает все сервера Guardant Net, доступные для данной копии приложения в соответствии с параметрами установленными в конфигурационном файле сетевых настроек клиента. Если производится поиск локальных ключей, то метод обнаруживает только те ключи, которые подключены непосредственно к данной рабочей станции.

При помощи метода GrdFind можно построить список ключей, удовлетворяющим критериям поиска, выполняя поиск последовательно и записывая данные о ключах в массив, до тех пор пока метод не вернет ошибки GrdE.DongleNotFound  или GrdE.AllDonglesFound. Если не будет найдено ни одного ключа, удовлетворяющего критериям поиска, метод вернет ошибку GrdE.DongleNotFoundG. После того, как список ключей построен, можно выбрать из них нужный и при дальнейшей работе использовать его, установив критерием поиска ID нужного ключа.

При первом вызове GrdFind при вновь установленных методом GrdSetFindMode критериях поиска в параметре mode следует установить значение First, при всех последующих вызовах до изменения критериев поиска нужно устанавливать значение Next.  GrdFind необходимо вызывать в рамках блока инициализации, до вызова GrdLogin. При попытке вызова GrdFind на залогиненном хэндле будет возвращена ошибка GrdE.NeedLogout

Если GrdFind вызвать до установки Общего кода (Public Code), см. GrdSetAccessCodes, то будут найдены все доступные ключи Guardant с любыми кодами. После вызова GrdSetAccessCodes метод GrdFind будет искать только ключи с заданным Общим кодом.

Card
labelJava
Code Block
languagejava
 public static GrdE GrdFind(Handle grdHandle, GrdF mode, GrdDongleID id, GrdFindInfo findInfo)
Expand
titleПараметры метода

grdHandle [in] 

Тип: Handle

Хэндл, через который будет выполнен поиск.

mode [in]

Тип: GrdF

Режим поиска. Устанавливается константами GrdF. Значение GrdF_First нужно использовать при первом вызове GrdFind после того, как были установлены критерии поиска функцией GrdSetFindMode. При всех последующих вызовах до изменения критериев поиска нужно использовать значение GrdF_Next.

id [out]

Тип: GrdDongleID

ID найденного ключа.

findinfo [out]

Тип: GrdFindInfo

Данные о найденном ключе.

Expand
titleВозвращаемое значение метода

Набор ошибок Guardant API

Expand
titleОписание

Метод GrdFind осуществляет поиск локального или удаленного ключа, удовлетворяющего критериям поиска, установленным при последнем вызове GrdSetFindMode и возвращает ошибку GrdE.OK, а также  ID этого ключа, в том случае, если такой ключ найден, а также класс класс GrdFindInfo, содержащий данные о найденном ключе. Если производится поиск сетевого ключа, метод GrdFind опрашивает все сервера Guardant Net, доступные для данной копии приложения в соответствии с параметрами установленными в конфигурационном файле сетевых настроек клиента. Если производится поиск локальных ключей, то метод обнаруживает только те ключи, которые подключены непосредственно к данной рабочей станции.

При помощи метода GrdFind можно построить список ключей, удовлетворяющим критериям поиска, выполняя поиск последовательно и записывая данные о ключах в массив, до тех пор пока метод не вернет ошибки GrdE.DongleNotFound или GrdE.AllDonglesFound. Если не будет найдено ни одного ключа, удовлетворяющего критериям поиска, метод вернет ошибку GrdE.DongleNotFound. После того, как список ключей построен, можно выбрать из них нужный и при дальнейшей работе использовать его, установив критерием поиска ID нужного ключа.

При первом вызове GrdFind для вновь установленных методом GrdSetFindMode критериях поиска в параметре mode следует установить значение First, при всех последующих вызовах до изменения критериев поиска нужно устанавливать значение Next.  GrdFind необходимо вызывать в рамках блока инициализации, до вызова GrdLogin. При попытке вызова GrdFind на залогиненном хэндле будет возвращена ошибка GrdE.NeedLogout.

Если GrdFind вызвать до установки Общего кода (Public Code), см. GrdSetAccessCodes, то будут найдены все доступные ключи Guardant с любыми кодами. После вызова GrdSetAccessCodes метод GrdFind будет искать только ключи с заданным Общим кодом.