Конференция "WinAPI" » RasEnumConnections
 
  • StriderMan (26.12.08 16:25) [0]
    Приветствую, коллеги!

    Подключаю в свой проект возможность автоматического создания dialup-соединения. Обнаружил в процессе интересный эффект.

    Допустим, создаем соединение при помощи
    RasDial(...)

    пока оно создается, снимаем задачу нашего приложения. смотрим в диспетчере соединений, у данного соединения статус "Подключение". Винда ничего не позволяет с ним сделать: ни отключить ни подключить. Пытаюсь найти его программно при помощи
    RasEnumConnections(...)
    - не нахожу, потому как видимо оно еще не подключено. Как быть? как найти и программно оживить или прибить такое соединение? Кто сталкивался?
  • StriderMan (26.12.08 16:42) [1]
    UPD: если попытаться снова открыть это соединение при помощи RasDial, то получаем ошибку, что соединение уже установлено
  • StriderMan (26.12.08 18:24) [2]
    UPD2: Собственно проблема свелась к тому, как получить хэндл такого зависшего соединения?
    RasEnumConnections нам его не находит, RasDial возвращет ошибку и хэндл оставляет нулевым. Нашел драконовское решение: перебираем всевозможные хэндлы HR и говорим им RasHangUp(HR). Работает, но медленно :)
  • KilkennyCat © (27.12.08 16:07) [3]
    а разве при создании соединения у него нет имени?
  • KilkennyCat © (27.12.08 16:10) [4]
    то есть, разве нельзя использовать, как сказано в мсдн, rasdial "EAST OFFICE" /d ?
  • StriderMan (28.12.08 20:54) [5]
    DWORD RasDial(
     LPRASDIALEXTENSIONS lpRasDialExtensions,
     LPCTSTR lpszPhonebook,
     LPRASDIALPARAMS lpRasDialParams,
     DWORD dwNotifierType,
     LPVOID lpvNotifier,
     LPHRASCONN lphRasConn
    );



    и куда тут передавать East Office? :)
    Собственно, с установлением соединения проблем нет, есть проблема с зависшим соединением. Оно легко отрубается при помощи RasHangUp, но нужен Handle. А вот его взять негде.
  • KilkennyCat © (28.12.08 22:43) [6]

    > и куда тут передавать East Office? :)

    судя по всему, lpszPhonebook
  • StriderMan (29.12.08 08:07) [7]
    судя по всему, lpszPhonebook
    еще раз:
    с установлением соединения проблем нет, есть проблема с зависшим соединением
  • KilkennyCat © (29.12.08 10:23) [8]
    да я понял. Простро из справки, я так понял, что с какой фонебучной записью соединение создается, то с той и грохается. и это единственная привязка.
  • StriderMan (29.12.08 12:04) [9]

    > KilkennyCat ©   (29.12.08 10:23) [8]
    > да я понял. Простро из справки, я так понял, что с какой
    > фонебучной записью соединение создается, то с той и грохается.
    >  и это единственная привязка.

    phonebook я не использую. Получаю сразу
    RASDIALPARAMS

    при помощи
    RasGetEntryDialParams

    по имени соединения
Есть новые Нет новых   [134435   +35][b:0][p:0.001]