- Created by Guardant Tech, last modified by Guardant R&D on Sept 25, 2014
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 18 Next »
Функция GrdFind осуществляет поиск локальных и удаленных ключей, удовлетворяющих установленным критериям поиска.
int GRD_API GrdFind( HANDLE hGrd, DWORD dwMode, DWORD *pdwID, TGrdFindInfo *pFindInfo );
hGrd |
хэндл, через который будет выполнен поиск |
||||
dwMode |
режим поиска. Устанавливается константами GrdF_XXX. Значение GrdF_First нужно использовать при первом вызове GrdFind после того, как были установлены критерии поиска функцией GrdSetFindMode. При всех последующих вызовах до изменения критериев поиска нужно использовать значение GrdF_Next.
|
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; |
Возможные ошибки
GrdE_NeedLogout |
Попытка вызова GrdFind после GrdLogin |
public static GrdE GrdFind(Handle grdHandle, GrdF mode, out uint id, out FindInfo findInfo)
grdHandle [in]
Тип: Handle
Хэндл, через который будет выполнен поиск.
mode [in]
Тип: GrdF
Режим поиска. Устанавливается константами GrdF. Значение GrdF_First нужно использовать при первом вызове GrdFind после того, как были установлены критерии поиска функцией GrdSetFindMode. При всех последующих вызовах до изменения критериев поиска нужно использовать значение GrdF_Next.
id [out]
Тип: uint
ID найденного ключа.
findinfo [out]
Тип: Findinfo
Данные о найденном ключе.
public static GrdE GrdFind(Handle grdHandle, GrdF mode, GrdDongleID id, GrdFindInfo findInfo)
grdHandle [in]
Тип: Handle
Хэндл, через который будет выполнен поиск.
mode [in]
Тип: GrdF
Режим поиска. Устанавливается константами GrdF. Значение GrdF_First нужно использовать при первом вызове GrdFind после того, как были установлены критерии поиска функцией GrdSetFindMode. При всех последующих вызовах до изменения критериев поиска нужно использовать значение GrdF_Next.
id [out]
Тип: GrdDongleID
ID найденного ключа.
findinfo [out]
Тип: GrdFindInfo
Данные о найденном ключе.
Функция GrdFind осуществляет поиск локального или удаленного ключа, удовлетворяющего критериям поиска, установленным при последнем вызове GrdSetFindMode и возвращает ошибку GrdE_OK и ID этого ключа, в том случае, если такой ключ найден, а также структуру TGrdFindInfo, содержащую данные о найденном ключе. Если производится поиск сетевого ключа, функция GrdFind опрашивает все сервера Guardant Net, доступные для данной копии приложения в соответствии с параметрами установленными в конфигурационном файле gnclient.ini. Если производится поиск локальных ключей, то функция обнаруживает только те ключи, которые подключены непосредственно к данной рабочей станции.
При помощи 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 будет искать только ключи с заданным Общим кодом.
- No labels