Пишу прогу с RasApi - первый раз столкнулся и сразу грабли Есть такая структура RASDIALPARAMS. Как я понял, для разных версий Windows она отличается (двумя полями), и именно длина этой структуры сигнализирует о той или иной версии операционки. Внимание вопрос Как должна выглядеть эта структура для разных версий Windows? В MSDN написано так: Код (Text): typedef struct _RASDIALPARAMS { DWORD dwSize; TCHAR szEntryName[RAS_MaxEntryName + 1]; TCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; TCHAR szCallbackNumber[RAS_MaxCallbackNumber + 1]; TCHAR szUserName[UNLEN + 1]; TCHAR szPassword[PWLEN + 1]; TCHAR szDomain[DNLEN + 1] ; #if (WINVER >= 0x401) DWORD dwSubEntry; ULONG_PTR dwCallbackId; #endif } RASDIALPARAMS; Пробовал под WinXP и так и сяк - не работает - пресловутая ошибка "неправильный размер структуры".
Делал конечно. В masm-овском windows.inc эта структура вообще объявлена так: Код (Text): RASDIALPARAMSA STRUCT dwSize dd ? szEntryName db RAS_MaxEntryName + 1 dup(?) szPhoneNumber db RAS_MaxPhoneNumber + 1 dup(?) szCallbackNumber db RAS_MaxCallbackNumber + 1 dup(?) szUserName db UNLEN + 1 dup(?) szPassword db PWLEN + 1 dup(?) szDomain db DNLEN + 1 dup(?) RASDIALPARAMSA ENDS Как видите, тут никаких проверок на версию Windows нет. Соответственно я ручками все выставляю, переделываю - не работает. Может величины RAS_MaxEntryName и пр. тоже разные в разных версиях?
пробуй до 1048. точно не помню. я тоже с этим сталкивался, тогда просто в отладчик загнал программулю, которая написанна уже кемто и работает и посмотрел что туда передаётся. один из самых верных способов определения ошибки
у меня 1052. RAS_MaxEntryName 256 RAS_MaxPhoneNumber 128 RAS_MaxCallbackNumber 128 UNLEN 256 PWLEN 256 DNLEN 15 Использовал сишную структуру.
1052 - это то что нужно Работает. Теперь та-же проблема со структурами RASENTRYNAME и RASCONN n0name, не мог бы ты выложить или выслать мне ентот модуль, из которого ты взял значения. А то у меня в пределах двухдневной досягаемости никакого С нету.