![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
Всем привет. Ситуация:
есть некая железка, подключается к компу по USB. при подключении железки к компу, ее драйвер создает виртуальный ком-порт. проблема вот в чем: допустим железка подключена, я открываю порт, общаюсь с устройством и вдруг, допустим железке вырубают питание/выдергивают шнурок/бьют по ней кувалдой, короче устройство из системы исчезает и мой дескриптор порта становится невалидным и соответственно ошибки, ошибки, ошибки. как можно проверять валидность дескриптора? (открывать порт на каждую команду а затем закрывать его - долго) |
|||
|
||||
Abyx |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 2 Всего: 10 |
GetLastError ?
|
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
GetLastError где? при очередной WriteFile\ReadFile просто возникнет Access Violation. или не возникнет, но чего сделает - непонятно...
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
не совсем ответ на вопрос, но может отслеживать usb-шные уведомления?
|
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
думал об этом, но тут просто вопрос архитектуры приложения.... не хотелось бы в класс железки это внедрять. но естественно, если API средств не найдется для проверки - естественно придется через них, и потом не факт что винда меня уведомит об отключении устройства раньше, чем я попытаюсь записать\считать так как процесс обмена с устройством в отдельном потоке. короче надо пробовать если иных способов нет
|
|||
|
||||
Abyx |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 2 Всего: 10 |
||||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
если система после отключения устройства успеет переназначить дескриптор\память для чегото другого - будет ошибка доступа, не успеет - не понятно что будет. на моих опытах - 100% ошибок доступа. только какой смысл представлять что случиться - главное что неслучиться того что было нужно а именно - записи\чтения
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Хэндл не становится невалидным из за того, что выдернули устройство. А вот работать с ним система может и отказаться, но не из за того, что он невалидный, а из за багов в драйвере
![]() Попробуйте SEH (__try __except) вокруг FileRead/FileWrite - может отчасти помочь |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |