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

Compare with Current View Page History

« Previous Version 12 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)

     

     

     

     

     

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

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

    C#

    Visual Basic

    Visual C++

    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

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

    Пример для используемого средства разработки см. в директории:

    "\%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\x86\Win32\General Guardant API\"
    или
    "\%Program Files%\Guardant\Guardant 6\%Public Code%\Samples\x64\Win64\General Guardant API\"

     

     

     

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

     
    • No labels