Программное определение типа соединения

Тема в разделе "WASM.NETWORKS", создана пользователем Broken Sword, 25 июн 2005.

  1. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    InternetGetConnectedState возвращает 51h и для dialup-а и для VPN-а. А нужно как то различать именно диалап. Кто подскажет?
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Диалап можно различить по типу интерфейса, который возвращает в структуре MIB_IFROW STRUCT ф-ция GetIfTable.
     
  3. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    cresta,

    ну и мутная ф-ция... столько проблем с ней.



    1. Если pdwSize < необходимого значения, то возвращается такое число, которое раза в 3 превышает реально необходимую память. Например, если передать в качестве размера буфера 100, то вернется 2F14h, хотя все прекрасно работает и с буфером в 0F00h байт, но это все ерунда



    2. Прямо какая-то беда с wszName из структуры MIB_IFROW. Во первых, там одни нули всегда (для всех интерфейсов). Во вторых - он какого-то непонятного размера. В MSDN четко сказано, что размер - MAX_INTERFACE_NAME_LEN, а это 256 байт. Однако на практике он у всех интерфейсов равен 512. Будет ли так на всех ОС 9x-XP ?



    3. В возвращенных структурах я ищу dwOperStatus в состоянии MIB_IF_OPER_STATUS_CONNECTED. Что на VPN, что на dialup-е - соотв. значение dwType всегда равно 17h (такого вообще нигде не описано).



    Какие еще варианты?
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Broken Sword

    Тут возможен вариант, что не функция мутная, а описание структуры в msdn неточное. Я его искал в инете, там поля структуры отличаются от того, что написано в msdn.



    Есть программка, показывает какие интерфейсы, расписывает значения полей структуры (которые меня интересовали). На XP работает, на 9х не пробовал.

    Может приаттачить, попробуешь?



    Если даже и одинаковые названия интерфейсов, можно определиться по другим параметрам, в частности, по значению Connection Speed of Interface из структуры: для диалапа оно маленькое, максимум сколько может выдать обычный модем, для других порядка 10 000 000.
     
  5. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    cresta

    подкинь плз программку на brokensword@te.net.ua

    а по скорости определять дело не благодарное - у меня VPN на скорости 4 Кб как раз
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Отправил.
     
  7. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    cresta

    спасибо. по-ходу - единственный способ выявить диалап - смотреть по скорости, ито тоже не факт. VPN в винде тоже через PPP работает оказывается.



    Или модем опрашивать, что изврат.