Не работает программа после перехода с 6.2 на 6.31

Есть проект, написанный с использованием API из SDK 6.2. После перехода на SDK 6.31, и, соответственно после замены файла GrdFWBO.obj на новый из комплекта 6.31 какая-то API-функция (или несколько функций) стали выдавать ошибку "Недопустимые параметры функции". Т.к. шифрование в проекте производится повсеместно и зависит от пользовательских данных, локализовать ошибку пока не удается.

Подскажите, в чем может быть дело? Какие API-функции подверглись изменению в 6.31 по сравнению с 6.2?

(я проверял: после подключении файла GrdFWBO.obj обратно из версии 6.2 работоспособность полностью восстанавливается)

(Если позже удастся локализовать ошибку, то смогу сказать какие именно функции перестали работать)

Re: Не работает программа после перехода с 6.2 на 6.31

grddelphi.pas заменить на новый не забыли?
И второй момент, я сейчас уже на вскидку уже не помню, но помоему 6.3 может работать на старых драйверах 6.2 (без выдачи сообщения о том что драйвер не найден). Может быть поможет обновление драйверов?

Re: Не работает программа после перехода с 6.2 на 6.31

"grddelphi.pas заменить на новый не забыли?" я и на 6.2 этот файл не подключал... Я на c++. Разве нужен дополнительно *.pas подключать?

Драйвер стоит обновленный, самый последний с сайта.

Re: Не работает программа после перехода с 6.2 на 6.31

Эмм, для С++ на сколько я помню используется не GrdFWBO.obj, а GrdFWMC.obj (Если это конечно не C++ Builder).

https://forum.guardant.ru/topic/268/

А так вроде бы ничего такого не поменялось, что может вызвать такую ошибку.

Re: Не работает программа после перехода с 6.2 на 6.31

Все верно, работаю в C++Builder.
Пока факт остается фактом. Локализую/устраню ошибку, расскажу, где проблема/решение.

(2014-06-03 11:02:47 отредактировано dayznse)

Re: Не работает программа после перехода с 6.2 на 6.31

Итак, первая локализация первой ошибки:
Функция AES256 в 6.31:

int ResN = GrdCrypt(hGrd,     //  Хэндл контейнера Guardant
                                      GrdSC_AES256,             //  Номер алгоритма шифрования
                                      sizeof(char)*len,      //  Длина данных для шифрования
                                    Buff,                        //  Данные для шифрования
                                    GrdAM_OFB + GrdAM_Decrypt + GrdSC_All,//  Выбор режима шифрования
                            InitVector,       //  Вектор инициализации
                            Key,              //  Ключ программно-реализованного алгоритма AES256
                            Context);     // буфер для контекста при шифровании больших массивов данных

жалуется на недопустимые параметры, когда len = 0  (что очень неудобно, т.к. придется везде ставить проверки на ненулевую длину данных).

В версии 6.2 не жалуется.

Re: Не работает программа после перехода с 6.2 на 6.31

Так и должно быть?

Re: Не работает программа после перехода с 6.2 на 6.31

Здравствуйте.

dayznse пишет:

Так и должно быть?

Да. С версии SDK Guardant 6.31 введена проверка на допустимые параметры функций, в т.ч. размер данных для преобразования где «0» это недопустимое значение для длины данных.

Re: Не работает программа после перехода с 6.2 на 6.31

Спасибо.