RasApi

Тема в разделе "WASM.WIN32", создана пользователем Sfinks, 15 май 2006.

  1. Sfinks

    Sfinks New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    9
    Пишу прогу с RasApi - первый раз столкнулся и сразу грабли :) Есть такая структура RASDIALPARAMS. Как я понял, для разных версий Windows она отличается (двумя полями), и именно длина этой структуры сигнализирует о той или иной версии операционки.

    Внимание вопрос :) Как должна выглядеть эта структура для разных версий Windows?

    В MSDN написано так:
    Код (Text):
    1.  
    2. typedef struct _RASDIALPARAMS {
    3.   DWORD  dwSize;
    4.   TCHAR  szEntryName[RAS_MaxEntryName + 1];
    5.   TCHAR  szPhoneNumber[RAS_MaxPhoneNumber + 1];
    6.   TCHAR  szCallbackNumber[RAS_MaxCallbackNumber + 1];
    7.   TCHAR  szUserName[UNLEN + 1];
    8.   TCHAR  szPassword[PWLEN + 1];
    9.   TCHAR  szDomain[DNLEN + 1] ;
    10. #if (WINVER >= 0x401)
    11.   DWORD      dwSubEntry;
    12.   ULONG_PTR  dwCallbackId;
    13. #endif
    14. } RASDIALPARAMS;


    Пробовал под WinXP и так и сяк - не работает - пресловутая ошибка "неправильный размер структуры".
     
  2. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    <...>.dwSize = sizeof(RASDIALPARAMS) делал? там все работает...
     
  3. Sfinks

    Sfinks New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    9
    Делал конечно. В masm-овском windows.inc эта структура вообще объявлена так:
    Код (Text):
    1.  
    2. RASDIALPARAMSA STRUCT
    3.     dwSize dd ?
    4.     szEntryName db RAS_MaxEntryName + 1 dup(?)
    5.     szPhoneNumber db RAS_MaxPhoneNumber + 1 dup(?)
    6.     szCallbackNumber db RAS_MaxCallbackNumber + 1 dup(?)
    7.     szUserName db UNLEN + 1 dup(?)
    8.     szPassword db PWLEN + 1 dup(?)
    9.     szDomain db DNLEN + 1 dup(?)
    10. RASDIALPARAMSA ENDS
    11.  


    Как видите, тут никаких проверок на версию Windows нет. Соответственно я ручками все выставляю, переделываю - не работает. Может величины RAS_MaxEntryName и пр. тоже разные в разных версиях?
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    пробуй округлить размер. ;) dwSize = sizeof(RASDIALPARAMS) посмотри что в dwsize
     
  5. Sfinks

    Sfinks New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    9
    Размер структуры - 1049 байт Что значит округлить? До 1048? До 1024? :)
     
  6. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    пробуй до 1048. точно не помню. я тоже с этим сталкивался, тогда просто в отладчик загнал программулю, которая написанна уже кемто и работает и посмотрел что туда передаётся. один из самых верных способов определения ошибки
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    у меня 1052.

    RAS_MaxEntryName 256

    RAS_MaxPhoneNumber 128

    RAS_MaxCallbackNumber 128

    UNLEN 256

    PWLEN 256

    DNLEN 15



    Использовал сишную структуру.
     
  8. Sfinks

    Sfinks New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    9
    1052 - это то что нужно :) Работает.

    Теперь та-же проблема со структурами RASENTRYNAME и RASCONN :)



    n0name, не мог бы ты выложить или выслать мне ентот модуль, из которого ты взял значения. А то у меня в пределах двухдневной досягаемости никакого С нету.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    RASENTRYNAME - 264.

    RASCONN - 412
     
  11. Sfinks

    Sfinks New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2006
    Сообщения:
    9
    Большое спасибо! Теперь все прекрасно работает! :)