You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

Функция GrdFind осуществляет поиск локальных и удаленных ключей, удовлетворяющих установленным критериям поиска.

    int GRD_API GrdFind(	
      HANDLE hGrd,
      DWORD dwMode,
      DWORD *pdwID,
      TGrdFindInfo *pFindInfo
    );	

    hGrd

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

    dwMode

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

    GrdF_First

    Первый вызов

    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)

     

     

    Функция 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