Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Старый Vc++6.0 и новые заморочки Ras

243
11 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Дело вот в чем: указанная версися VC не полностью поддерживает работу с RAS на нужном сейчас уровне, или я просто не знаю, как ее заставить работать.
Приведу пример: структура RASENTRY в vc++6.0, не имеет добавочных опций - dwfOptions2. Их просто напросто нет в заголовочнике ras.h. Попробовал взять кусок заголовочника из билдера, в котором они есть и влепить в вижаловский. Возникла проблема с WINVER - там стоит директива #if (WINVER >= 0x501) и вижал почему-то упорно считает, что версия меньше указанного числа. Переопределение директивы в своем файле не помогает - выдается куча ошибок при компиляции подключенных заголовочников. Попробовал закомментировать эти директивы. Скомпилировалось, но при выполнении программы выдается ошибка - не удачное выполнение функции RasSetEntryProperties.
Есть варианты решения данной проблемы на 6-ой версии, или это можно обойти только в 7-ой?
ЗЫ В билдере все компилируется и работает на ура, но нужно на VC++.
243
11 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Блин, поставил седьмой VC и теперь не могу найти, где в нем подключаются lib-ы??? Что-то понакрутили, черт ногу сломит! Пожите чем можИте! :)
406
11 октября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by pacific_7
Блин, поставил седьмой VC и теперь не могу найти, где в нем подключаются lib-ы??? Что-то понакрутили, черт ногу сломит! Пожите чем можИте! :)


Чем #pragma comment( lib, "emapi" ) к примеру не подходит?
Ну а если через саму студию то в solution-explorer щелкин правой конпкой мыши на проекте и в появившемся меню properties->linker->Input->Additional Dependencies сюда и прописывеш доп либы.

243
11 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by vitaly2003s
Чем #pragma comment( lib, "emapi" ) к примеру не подходит?
Ну а если через саму студию то в solution-explorer щелкин правой конпкой мыши на проекте и в появившемся меню properties->linker->Input->Additional Dependencies сюда и прописывеш доп либы.


Благодарю. Первый вариант - просто не знал, а искать уже не было сил. Второй - не нашел, т.к. щелкал немного не в том месте. В 6-ой версиии это было в главном меню.

243
16 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Всё! Приехали :). См. тему http://forum.codenet.ru/showthread.php?s=&threadid=26434 В общем - понял в чем там бага. Дело в компиляторе оказывается. Если собирать в VC7, то прога ни в каком исполнении не работает в 2000. Если собрать в 6-ом, то работает, но как я уже писал - в нем нету кое-чего, без чего мне не обойтись. Что можно подправить в 7-ом, что бы он для 2000 нормально собирал? Или в 6-ом, что бы он полноценный был.
406
16 октября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by pacific_7
Всё! Приехали :). См. тему http://forum.codenet.ru/showthread.php?s=&threadid=26434 В общем - понял в чем там бага. Дело в компиляторе оказывается. Если собирать в VC7, то прога ни в каком исполнении не работает в 2000. Если собрать в 6-ом, то работает, но как я уже писал - в нем нету кое-чего, без чего мне не обойтись. Что можно подправить в 7-ом, что бы он для 2000 нормально собирал? Или в 6-ом, что бы он полноценный был.


В каких опциях копилятора 7 ты сомневаешся. Не знаю,к примеру свои проги я собираю только в 7 и везде они работают. Может выложиш сюда весь проект чтобы его можно было откомпилить в VS7 на XP самому и проверить на 2000.

243
16 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by vitaly2003s
В каких опциях копилятора 7 ты сомневаешся. Не знаю,к примеру свои проги я собираю только в 7 и везде они работают. Может выложиш сюда весь проект чтобы его можно было откомпилить в VS7 на XP самому и проверить на 2000.


В том то и дело, что не знаю в каких опциях можно сомневаться :)
Весь проект? См. первый пост в теме про ХР & 2k. Это и есть весь код, там WinMain и return не хватает.
Только для надежности лучше выкинуть строчку rasEntry.dwfOptions2=RASEO2_DisableNbtOverIP | RASEO2_ReconnectIfDropped | RASEO2_Internet; или хотя бы флаг RASEO2_DisableNbtOverIP - т.к. в 2000 нет такой галки в св-вах соединения.
Если у тебя заработает на 2000, то вышли мне бинарник, проверю у себя, может винда кривая, хотя проверял уже на 3-х. Т.е. это очень сомнительно. Скорее уже тогда компилятор кривой. Что же там за размер такой не верный? Где его правильно указать в коде?
ЗЫ Собирать пофигу где - я даже 2000-ную дома поставил и в ней собирал. Итог тот же.

243
17 октября 2005 года
pacific_7
1.9K / / 06.09.2004
vitaly2003s - получилось что-нибудь? Я уже и в Билдере 6-ом собирал - та же ошибка.
406
17 октября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by pacific_7
vitaly2003s - получилось что-нибудь? Я уже и в Билдере 6-ом собирал - та же ошибка.


Нифига не получилось пока. Но могу сказать одно точно,дело тут не в компиляторе а в оси и функции а точнее передаваемым ей параметрам. Я так думаю проблема заключается в опциях RASENTRY но пока не могу сказать каких,еще попробую,поэксперементирую.

И да кстати ты хочеш сказать что этот же код собраный в VC6 работает?

243
17 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by vitaly2003s
Нифига не получилось пока. Но могу сказать одно точно,дело тут не в компиляторе а в оси и функции а точнее передаваемым ей параметрам. Я так думаю проблема заключается в опциях RASENTRY но пока не могу сказать каких,еще попробую,поэксперементирую.


Абсолютно солидарен. Уж какие я только опции не пробовал! Если что у тебя получится, то буду безумно рад. Кстати, собирал в 6-ом билдере, такой же результат, вернее его отсутствие. И ошибка естественно та же. У меня уже закралось в мысли дурацкое подозрение, что 2000 просто-напросто не поддерживает программно нужные мне опции. Но, тогда вопрос, почему не работает в VC7 без них и работает в VC6? В общем - мелкомягкие что-то там сами наверное напутали а мне теперь разбираться.

Цитата:
Originally posted by vitaly2003s
И да кстати ты хочеш сказать что этот же код собраный в VC6 работает?


Не совсем этот: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecomm5/html/wce50sampptpcodesample.asp Т.е. там нету опций dwfOptions2. Но если собрать это в VC7, то не работает. В VC6 - работает.

406
17 октября 2005 года
vitaly2003s
481 / / 27.07.2004
Короче допер я в чем дело было. Надеюсь и ты догадаешся в чем дело если взглянеш хорошенько на код. Не поймеш объясню. Вот код абсолютно работоспособный в 2000 и в XP и в 2003 и скомпилированый в VС7. Как я и сказал дело не в компиляторе а в кое чем другом было. Скомпиль его:

RASENTRY rasEntry;
memset(&rasEntry, 0, sizeof(RASENTRY));
rasEntry.dwSize = 2088;
rasEntry.dwfOptions = RASEO_PreviewUserPw | RASEO_ShowDialingProgress | RASEO_Custom | RASEO_RequireMsCHAP2;
rasEntry.dwfOptions2=RASEO2_DisableNbtOverIP | RASEO2_ReconnectIfDropped | RASEO2_Internet;
rasEntry.dwRedialCount=99;
rasEntry.dwRedialPause=3;
rasEntry.dwEncryptionType=ET_Optional;
rasEntry.dwType=RASET_Vpn;
rasEntry.dwFramingProtocol=RASFP_Ppp;
rasEntry.dwVpnStrategy=VS_Default;


strcpy(rasEntry.szLocalPhoneNumber, TEXT("ADRES"));
strcpy(rasEntry.szDeviceType, RASDT_Vpn);
strcpy(rasEntry.szDeviceName, TEXT("VPN"));

int ret=RasSetEntryProperties(0, TEXT("VPN"), &rasEntry, 2088, 0, 0);
406
17 октября 2005 года
vitaly2003s
481 / / 27.07.2004
А вот бинарник.
406
17 октября 2005 года
vitaly2003s
481 / / 27.07.2004
А если зделать еще коректнее то лучше так:

bool Func(void)
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;
int size_of_struct=sizeof(RASENTRY);

// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
// If that fails, try using the OSVERSIONINFO structure.

ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
{
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
return FALSE;
}

// Test for the Windows NT and 2000 product family.
if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
if ( (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0) || osvi.dwMajorVersion <= 4)
size_of_struct=2088;
}
else return 0;//error ME,98,95 not provided VPN Connections

RASENTRY rasEntry;
memset(&rasEntry, 0, sizeof(RASENTRY));
rasEntry.dwSize = size_of_struct;
rasEntry.dwfOptions = RASEO_PreviewUserPw | RASEO_ShowDialingProgress | RASEO_Custom | RASEO_RequireMsCHAP2;
rasEntry.dwfOptions2=RASEO2_DisableNbtOverIP | RASEO2_ReconnectIfDropped | RASEO2_Internet;
rasEntry.dwRedialCount=99;
rasEntry.dwRedialPause=3;
rasEntry.dwEncryptionType=ET_Optional;
rasEntry.dwType=RASET_Vpn;
rasEntry.dwFramingProtocol=RASFP_Ppp;
rasEntry.dwVpnStrategy=VS_Default;


strcpy(rasEntry.szLocalPhoneNumber, TEXT("ADRES"));
strcpy(rasEntry.szDeviceType, RASDT_Vpn);
strcpy(rasEntry.szDeviceName, TEXT("VPN"));

int ret=RasSetEntryProperties(0, TEXT("VPN"), &rasEntry, size_of_struct, NULL, 0);

return TRUE;
}
243
17 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Гы, сенк, только пока под рукой нет компилера, буду дома - все внимательно исследую. Выводы к которым приду - выложу на оценку :) 2088 - ключевой момент. Только просьба пока не раскрывать его происхождения.
Большое спасибо.
243
17 октября 2005 года
pacific_7
1.9K / / 06.09.2004
Кстати, rasEntry.dwFramingProtocol=RASFP_Ppp; - это зря. Без него замечтально работает, с ним - наоборот, пункт TCP/IP - остается не отмеченным.
406
17 октября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by pacific_7
Кстати, rasEntry.dwFramingProtocol=RASFP_Ppp; - это зря. Без него замечтально работает, с ним - наоборот, пункт TCP/IP - остается не отмеченным.


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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог