![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RasEnumConnections
StriderMan © (2008-12-26 16:25:00)Приветствую, коллеги!
Подключаю в свой проект возможность автоматического создания dialup-соединения. Обнаружил в процессе интересный эффект.
Допустим, создаем соединение при помощи
RasDial(...)
пока оно создается, снимаем задачу нашего приложения. смотрим в диспетчере соединений, у данного соединения статус "Подключение". Винда ничего не позволяет с ним сделать: ни отключить ни подключить. Пытаюсь найти его программно при помощи
RasEnumConnections(...)
- не нахожу, потому как видимо оно еще не подключено. Как быть? как найти и программно оживить или прибить такое соединение? Кто сталкивался?
StriderMan (2008-12-29 12:04:00) [1]
> KilkennyCat © (29.12.08 10:23) [8]
> да я понял. Простро из справки, я так понял, что с какой
> фонебучной записью соединение создается, то с той и грохается.
> и это единственная привязка.
phonebook я не использую. Получаю сразуRASDIALPARAMSпри помощиRasGetEntryDialParamsпо имени соединения
KilkennyCat (2008-12-29 10:23:00) [2]да я понял. Простро из справки, я так понял, что с какой фонебучной записью соединение создается, то с той и грохается. и это единственная привязка.
StriderMan (2008-12-29 08:07:00) [3]судя по всему, lpszPhonebook
еще раз:
с установлением соединения проблем нет, есть проблема с зависшим соединением
KilkennyCat (2008-12-28 22:43:00) [4]
> и куда тут передавать East Office? :)
судя по всему, lpszPhonebook
StriderMan (2008-12-28 20:54:00) [5]
DWORD RasDial(
LPRASDIALEXTENSIONS lpRasDialExtensions,
LPCTSTR lpszPhonebook,
LPRASDIALPARAMS lpRasDialParams,
DWORD dwNotifierType,
LPVOID lpvNotifier,
LPHRASCONN lphRasConn
);
и куда тут передавать East Office? :)
Собственно, с установлением соединения проблем нет, есть проблема с зависшим соединением. Оно легко отрубается при помощи RasHangUp, но нужен Handle. А вот его взять негде.
KilkennyCat (2008-12-27 16:10:00) [6]то есть, разве нельзя использовать, как сказано в мсдн, rasdial "EAST OFFICE" /d ?
KilkennyCat (2008-12-27 16:07:00) [7]а разве при создании соединения у него нет имени?
StriderMan (2008-12-26 18:24:00) [8]UPD2: Собственно проблема свелась к тому, как получить хэндл такого зависшего соединения?
RasEnumConnections нам его не находит, RasDial возвращет ошибку и хэндл оставляет нулевым. Нашел драконовское решение: перебираем всевозможные хэндлы HR и говорим им RasHangUp(HR). Работает, но медленно :)
StriderMan (2008-12-26 16:42:00) [9]UPD: если попытаться снова открыть это соединение при помощи RasDial, то получаем ошибку, что соединение уже установлено