Функция(метод) 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;

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

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

     

    GrdE_NeedLogout

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

    Функция 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 будет искать только ключи с заданным Общим кодом.

    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

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

    Метод GrdFind осуществляет поиск локального или удаленного ключа, удовлетворяющего критериям поиска, установленным при последнем вызове GrdSetFindMode и возвращает ошибку GrdE.OK, а также  ID этого ключа, в том случае, если такой ключ найден, а также структуру 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 будет искать только ключи с заданным Общим кодом.

     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 этого ключа, в том случае, если такой ключ найден, а также класс 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 будет искать только ключи с заданным Общим кодом.

    • No labels