|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.10.2015, 02:36 | #1 |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
CryptoAPI
Добрый день, делаю инициализацию для работы с CryptoApi вот так:
Код:
Последний раз редактировалось Stilet; 19.10.2015 в 09:36. |
19.10.2015, 09:43 | #2 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
20.10.2015, 02:14 | #3 | |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Цитата:
Да функция (CryptAcquireContext) Вернула True и BaseCryptProv инициализировался. Передаю указать так как функция описана у меня так: function CryptAcquireContext(phProv :PHCRYPTPROV; pszContainer :LPAWSTR; pszProvider :LPAWSTR; dwProvType :DWORD; dwFlags :DWORD) :BOOL;stdcall; Сама переменная BaseCryptProv = HCRYPTPROV соотсветвенно вызов можно передать указателем? или я не прав? Провел маштабные тесты и получилось так. Win 7 32/64 bit все отлично. win 8 32 бит все отлично. win 8 64 bit и win 10 64 bit проблема сохранилась. но от юзера опять же все в порядке. Куда копать то? Последний раз редактировалось JPCool; 20.10.2015 в 02:45. |
|
20.10.2015, 08:50 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Я работаю так: http://www.programmersforum.ru/showp...8&postcount=45 Может и тебе стоит подхватить такого рода гриппчик?
I'm learning to live...
|
|
21.10.2015, 03:27 | #5 | |
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Цитата:
PHP код:
|
|
21.10.2015, 04:41 | #6 | |||
Пользователь
Регистрация: 06.09.2015
Сообщений: 31
|
Нашел проблему но не понял ее сути.
Если создать серсис стандартными средствами делфи, то есть ехе файл VCL Service то данный код работает отлично (32/64 bit на win 8). Но в моем случаи это 64 битная DLL каторую запускает Менеджер служб SVCHOST.EXE. Причем код инициализации InitializationCryptBase вставил до станадратных вызовов VCL. Цитата:
Цитата:
Прописываю сервис так. Цитата:
Наверно я не провожу какую то дополнительную инициализацию чего либо и т.д. Куда смотреть что копать? ) Последний раз редактировалось JPCool; 21.10.2015 в 04:53. |
|||
04.07.2016, 16:58 | #7 |
Новичок
Джуниор
Регистрация: 04.07.2016
Сообщений: 1
|
в WCrypt32.pas корявые декларации функций CryptoApi без учета 64-битности.
HCRYPTKEY = ULONG; // BAD DECLARATION !!!! ULONG = CARDINAL. // ALWAYS 32-BIT VARIABLE !!! Если глянуть в msdn to HCRYPTKEY это Handle, то есть тип THandle. HCRYPTKEY = THANDLE; // GOOD PASCAL DECLARATION THandle = NativeUInt; Поменяйте у себя корректно типы в WCrypt32 и все будет работать в Win64 среде вызовов как положено. Это кстати касается и HCRYPTPROV = ULONG; HCRYPTHASH = ULONG; |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
CryptoApi | Дмитрий5040 | Общие вопросы Delphi | 1 | 07.02.2013 02:36 |
Сертификат CryptoApi | Dianochka | Помощь студентам | 0 | 13.05.2012 12:39 |
CryptGenRandom,CryptoAPI | tiger | Помощь студентам | 0 | 25.05.2011 00:10 |
Проблемное CryptoAPI | Namelles One | Win Api | 1 | 07.11.2008 08:27 |
CryptoAPI: вопрос по ф-ям | Lisi4ka | Компоненты Delphi | 1 | 28.09.2008 14:53 |