Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не видит функции Crypto API, не видит инклуд 
:(
    Опции темы
JenyaB
  Дата 12.11.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.11.2009

Репутация: нет
Всего: нет



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

Раньше никогда не сталкивалась с функциями Crypto API и вот пришлось. Возник вопрос на самом начальном этапе.

Вот есть код, по-идее, должен получит контекст криптопровайдера.


Код

#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>
#pragma comment(lib, "advapi32.lib")

void main()
{
HCRYPTPROV hProv;
HCRYPTKEY hSessionKey;

// Получение контекста криптопровайдера
if (!CryptAcquireContextA(&hProv, NULL, NULL, 
    PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
  Error("CryptAcquireContext");
  return;
}

std::cout << "Cryptographic provider initialized" << std::endl;


}





Оно выдает ошибок 15 штук. все они касательно вещей, которые должны быть взяты из wincrypt.h:

error C2065: 'HCRYPTPROV' : undeclared identifier
error C2065: 'HCRYPTKEY' : undeclared identifier
error C2065: 'CryptAcquireContextA' : undeclared identifier
...

Подскажите, пожалуйста, чего оно не может подключит этот инклуд. Сам wincrypt.h есть, лежит в папке ИНКЛУД. 
Пользуюсь MS Visual Studio 6.0

Заранее благодарю!
 
PM MAIL   Вверх
jonie
Дата 12.11.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



Код

#define _WIN32_WINNT 0x0400
перед include-ами поставьте, всё будет.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
JenyaB
Дата 12.11.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.11.2009

Репутация: нет
Всего: нет



jonie, спасибо, что откликнулись!

Теперь оно выдает две ошибки выдает в wincrypt.h :

c:\program files\microsoft visual studio\vc98\include\wincrypt.h(25) : error C2146: syntax error : missing ';' before identifier 'HRESULT'
c:\program files\microsoft visual studio\vc98\include\wincrypt.h(25) : fatal error C1004: unexpected end of file found 

Вот в этом коде выдает эти ошибки на строке typedef LONG HRESULT;

Код

#ifndef __WINCRYPT_H__
#define __WINCRYPT_H__


#if(_WIN32_WINNT >= 0x0400)

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _HRESULT_DEFINED
#define _HRESULT_DEFINED

typedef LONG HRESULT;

#endif // !_HRESULT_DEFINED

#if !defined(_CRYPT32_)
#define WINCRYPT32API DECLSPEC_IMPORT
#else
#define WINCRYPT32API
#endif


Пробовала совсем закаментить #if(_WIN32_WINNT >= 0x0400), пробовала менять на 0500 или 0600 _WIN32_WINNT, но все равно эти два ошибки.
Вроде правильно все, хотя может чего не вижу уже...

PM MAIL   Вверх
jonie
Дата 13.11.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



JenyaB странно, но у меня ваша программа не выдает ошибок...
не надо менять системные файлы (sdk0-шные) ни в коем случае!


Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  cryproapiVC6test.rar 2,89 Kb


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
JenyaB
Дата 13.11.2009, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.11.2009

Репутация: нет
Всего: нет



jonie, спасибо Вам огромное!

Ваш проект действительно работает нормально.
Я вот тут думаю - может я просто что-то с проектом напортачила, просто со студией мало работала. smile 
Скажите, Вы в какой версии студии создавали его и какой именно проект выбирали? 
Заранее благодарю.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.