· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› RASAPI кто сталкивался с таким...

Посл.отвђт Сообщенiе


Дата: Окт 3, 2003 21:59:59

Когда я выполняю RASDial, используя модем на пульсовой линии, звоню к примеру тоном (хрен дозвонишься -) ) при этом когда я в процессе дозвона киляю аппликуху, что дайлит, то получаю залоченный модем - до перезагрузки его не разлочить никак. Кто нить сталкивался с таким? Либо может кто-нить знает как сие лечить? (оси - winxt, win2k )


Дата: Окт 3, 2003 22:21:10

Я не сталкивался. Говорю сразу. Но ты когда-то упоминал DACL и token. Значит, знаешь, что такое объекты. Вот и лезь туда. Наверняка эта дура создает какой-нибудь объект синхронизации, а когда ты киляешь это дело, лок не уходит.
Что до лечения - так корректно закрывать надо ;)


Дата: Окт 3, 2003 22:49:00 · Поправил: Valery

Действительно лок ОС, а не модемный глюк?
Т.е. даже хэндл не открывает и WriteFile не проходит?


Дата: Окт 4, 2003 01:02:29

Дело в том что после этого у меня в девайс-манагере стоит восклицательный знак. по поводу точно лок ОС или нет - я проверял на двух компах разных и на разных модемах - один встроенный в ноуте (софт вроде) - та же фигня. второй внешний - я его ребутил и т.д. - не помогало


Дата: Окт 4, 2003 01:03:06

volodya - это не относится к объектам ядра ИМХО т.к. там даже хэндлы у RAS не похожи на обычные хэндлы.


Дата: Окт 4, 2003 21:15:57

rst

Гы, тады, наверное, модем. Если даже ребут не помог...


Дата: Окт 5, 2003 17:12:52

Ребут ОСИ помогает.
А ребут модема - нет.


Дата: Окт 5, 2003 20:08:38

Так возьми тогда IDA и лезь туда. Разбираться... Загони структуры данных и лезь. Выбора-то у тебя немного :(


Дата: Окт 6, 2003 17:10:43 · Поправил: rst

Уже. и уже нашел решение..
если у кого будут проблемы с RAS То решать их нужно так:
делаем RasDial с CallBackом.
в CallBack всегда передается HRASCONN соединения, при этом RasDial возвращается немедленно ( в случае коллбэка это асинхронный вызов)
после этого делаем Sleep или WaitForSingleObject(WaitableTimer) - выделяем время на дозвон. Если в течении этого времени дозвона не случилось, то ВСЕГДА нужно вызывать RasHangup для HRASCONN. Иначе модем останется залоченным.
Причина похоже в том, что RAS контроллируется каким-то выделенным процессом, а не внутри приложения, и оно не понимает, что приложение от него уже отрубилось, и держит за ним модем.
У меня это случалось, если во время дозвона выключить модем или вытащить из него шнурок.


Дата: Окт 6, 2003 18:58:17

после этого делаем Sleep или WaitForSingleObject(WaitableTimer) - выделяем время на дозвон


Таки объекты, rst, таки объекты :)


Дата: Окт 6, 2003 20:08:24 · Поправил: rst

Нет!
WaitableTimers - это да, объекты ядра, но для того чтоб сотворить таймаут на дозвон, а не работа с RAS.


Дата: Окт 14, 2003 01:11:33

I've made a RAS Administration DLL and an application whitch is connecting to the server, and do some database update.... in VisualC.

1. some functions and their arguments differ from platform to platform(9x/nt).

2. you have to have the right includes with needed defines, in other case you'll get what you got.

3. I (fucking)spent a lot of time to understand this.


Дата: Окт 14, 2003 01:38:08 · Поправил: rst

Huh, man. As I understand - you have met the problem with the platform-dependent realization of RAS?
It means - if your app runs well under NT\2K\XP, but 9x says Invalid Buffer?
Yes. I've met such problems as well as You. The solution for this - include the standard visual C++ headers first, instead of PSDK headers. It is because PSDK headers contain wrong conditions for the RASAPI. So the dwLength member of RAS structures was set to the wrong value.
The next problem, i've met is: the non-zero values of the structure members, passed to the RASAPI functions can also lead to the Invalid Buffer error (it is also about 9x).
So the next rule, you have to not forget - it is also initialize to zero all of the structure members, which you not using.

It seems that programmer, who wrote the rasapi was drunk during process :-)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074