Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Найти Handle в системе / 9 сообщений из 9, страница 1 из 1
25.06.2014, 09:10
    #38679239
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
Здравствуйте.

Опишу свою задачу:
Есть железка. При подключении она возвращает handle(типа IntPtr). Если работу программы завершить некорректно, не освободить ресурсы железки, то при повторной попытке подключиться она уже реагировать не будет.
Есть мысль, что этот handle остается в системе. И железка висит.

Ну и вопрос. Можно ли, зная этот указатель на железку, как-то найти ее в системе?


И параллельный вопрос. Может ли винда очищать временно неиспользуемые хендлы? А то бывало, что железка работает, потом какое-то время(несколько минут) не используется, после чего уже не реагирует.

Почему хендлы? Потому что вся работа с железкой ведется через этот указатель, полученный при подключении. (все через SDK от производителя).
...
Рейтинг: 0 / 0
25.06.2014, 09:26
    #38679252
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
железка handle не возвращает.

Описано поведение кривого драйвера и SDK
...
Рейтинг: 0 / 0
25.06.2014, 09:38
    #38679277
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
Sky Dragon, винда автоматически освобождает все дескрипторы открытые процессом при его завершении так что значение handle будет бесполезным после этого. Я бы постарался сначала решить эту проблему на уровне программы. Попробуй обернуть дескриптор устройства в SafeHandle , если ты еще этого не делаешь.

Если не поможет, то можно вынести код общения с устройством в отдельный процесс и общаться с ним через WCF.

В качестве бредовой идеи можно попробовать перезапускать драйвер устройства. На stackoverflow есть пример - How can I manually load/unload a driver in Windows Vista?
...
Рейтинг: 0 / 0
25.06.2014, 10:08
    #38679324
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
Изопропил,

ок. Возвращает не железка, а метод подключения к железки, который работает с драйвером, а возможно, со службой, которая работает с драйвером.
Про кривое - не спорю. Но что есть, то есть... Китайцы ж :)


bazile,
про SafeHandler посмотрю. Но все же... получается, что на каком-то уровне железка думает, что с ней работают, а на самом деле уже нет.

Применение WCF ничего не поменяет. Вся логика работы с железкой туда перетечет. Но так же и дальше будет глюкать...
А до уровня драйверов спускаться бы не хотелось.. Проще перетыкать сканер в порт :)
...
Рейтинг: 0 / 0
25.06.2014, 10:53
    #38679396
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
Sky Dragon Проще перетыкать сканер в порт :)
уже чуть больше информации.
Кстати, глючить может и сама железка
...
Рейтинг: 0 / 0
25.06.2014, 11:02
    #38679405
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
Изопропил,

скорее дрова.
Сами железки и разных партий пробовали. Одна фигня.

Помимо физического переподключения в порт помогает удаление и повторная установка устройства. Ну собственно что и предложил Базиль.

Короче где-то висят какие-то ресурсы железки в системе... И вот кроме как хендла, полученного при первом подключении, больше ничего нет. Но видимо хендл не влияет на это.
...
Рейтинг: 0 / 0
25.06.2014, 11:31
    #38679452
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
Sky Dragon,
хендл, может и не удаляться при закрытии приложения, если ядро делит его с другим процессом.
...
Рейтинг: 0 / 0
25.06.2014, 11:32
    #38679455
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
имхо надо читать более подробно доки, есть ли они?
...
Рейтинг: 0 / 0
25.06.2014, 12:37
    #38679595
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти Handle в системе
Где-то в степи,

Вот и я об этом думаю. Но каким процессом, это уже вопрос... Может он там сам свой создает..

Доки есть. Но там чисто мануал по SDK. Ничего такого
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Найти Handle в системе / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]