InternetGetConnectedState возвращает 51h и для dialup-а и для VPN-а. А нужно как то различать именно диалап. Кто подскажет?
Диалап можно различить по типу интерфейса, который возвращает в структуре MIB_IFROW STRUCT ф-ция GetIfTable.
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 (такого вообще нигде не описано). Какие еще варианты?
Broken Sword Тут возможен вариант, что не функция мутная, а описание структуры в msdn неточное. Я его искал в инете, там поля структуры отличаются от того, что написано в msdn. Есть программка, показывает какие интерфейсы, расписывает значения полей структуры (которые меня интересовали). На XP работает, на 9х не пробовал. Может приаттачить, попробуешь? Если даже и одинаковые названия интерфейсов, можно определиться по другим параметрам, в частности, по значению Connection Speed of Interface из структуры: для диалапа оно маленькое, максимум сколько может выдать обычный модем, для других порядка 10 000 000.
cresta подкинь плз программку на brokensword@te.net.ua а по скорости определять дело не благодарное - у меня VPN на скорости 4 Кб как раз
cresta спасибо. по-ходу - единственный способ выявить диалап - смотреть по скорости, ито тоже не факт. VPN в винде тоже через PPP работает оказывается. Или модем опрашивать, что изврат.