Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
LAren
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
#1

Остановка USB устройств - C++

11.09.2009, 14:52. Просмотров 2093. Ответов 10
Метки нет (Все метки)

Здраствуйте. Стоит задача: необходимо написать программу на С++, которая позволяет отследить все процессы и все что с ними связано, которые в данный момент времени мешают безопасному извлечению устройства USB. Отследить процессы запущенные непосредственно с флешки нетрудно, а что делать с видеофайлами, текстовыми документами, открытым Total Commander не знаю.

Может кто-нибудь из сведущих людей подскажет что происходит, когда идет попытка остановки устройства? Что делает Windows и в какой последовательности? Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2009, 14:52     Остановка USB устройств
Посмотрите здесь:

Получение списка usb устройств - C++ Builder
При компиляции выдает кучу ошибок о том что не верные символы. Аналогичный код на более младшей версии работает. (Стоит Builder 2010) ...

Программное подключение usb устройств - Visual C++
Столкнулся с такой проблемой. Пишу функцию ChangeDeviceState(DWORD A_STATE), которой в качестве параметра передаю либо DICS_DISABLE, либо...

Обнаружение USB устройств с последующим их безопасным извлечением - C++
Интересует вопрос об обнаружении съёмных накопителей (usb-flash), с последующим копированием на них и извлечением, прошу в гугл не...

Остановка цикла - Visual C++
Здравствуйте. Как в консольном приложении остановить цикл например на 3сек, но так, чтобы программа не остановилась.

временная остановка)))) - C++
меня интересует такой вопрос: в Си есть какая-нибудь функция, которая останавливает выполнение программы на некоторое время??? (например,...

Остановка вектора - C++
Здравствуйте! Помогите пожалуйста реализовать в ниже приведенном коде, как остановить функцию readlong как только появиться точка или...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LAren
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
13.09.2009, 23:27  [ТС]     Остановка USB устройств #2
пока решения не нашел. помогите пожалуйста
Nikita2009
103 / 102 / 6
Регистрация: 12.09.2009
Сообщений: 453
13.09.2009, 23:53     Остановка USB устройств #3
Ты не можешь вытянуть безопасно флешку или что???
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.09.2009, 00:24     Остановка USB устройств #4
LAren, вперед на MSDN за изучением Api функций. Бьюсь об заклад, ты подыщишь там что-то.
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
14.09.2009, 00:33     Остановка USB устройств #5
Более того, другие уже поискали. И написали USB Safely Remove.
LAren
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
14.09.2009, 15:33  [ТС]     Остановка USB устройств #6
про USB Safely Remove я знаю, но брать готовую прогу нельзя, преподаватель не поймет

попробую переформулировать вопрос немного по другому: подскажите какие функции использовать чтобы у каждого процесса посмотреть с какими файлами он связан. В msdn смог найти только функцию GetModuleFileName но она не позволяет отследить все файлы с которыми работает процесс (например видеоплеер: показывает что работает из установленного каталога, а то что сам видеофайл читается с флешки не показывает). Может быть так кто-нибудь что-нибудь сможет подсказать.
Alexandoros
227 / 65 / 4
Регистрация: 02.06.2009
Сообщений: 280
16.09.2009, 13:39     Остановка USB устройств #7
http://www.wasm.ru/article.php?article=lockfileswork
По ссылке есть описание метода перечисления хендлов.

Алгоритм приблизительно таков -
1) Создаеш список всех файлов на флешке.
2) Просматриваеш все открытые в системе хендлы и сравниваеш со списком файлов
3) Прибиваеш процессы открывшие файлы на флешке или закрываеш хендлы в этих процессах.
LAren
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
16.09.2009, 14:11  [ТС]     Остановка USB устройств #8
спасибо, сейчас буду пробовать
LAren
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
16.09.2009, 18:27  [ТС]     Остановка USB устройств #9
с файлами понятно, но остается проблема с TotalCommander. Когда в нем отображается флешка, как "словить тотал за руку", что он просматривает флешку?

появилась идея попробовать следить за портом USB устройства. Получить список всех USB портов, потом проверить воткнута ли в данный порт флешка, и смотреть за всеми обращениями к порту. Тогда можно было бы всю программу свести только к этому и не было бы необходимости отдельно строить список процессов, писать различные функции для процессов непосредственно запущенных с флешки и для всех файлов. Реализуемо ли это?
Alexandoros
227 / 65 / 4
Регистрация: 02.06.2009
Сообщений: 280
16.09.2009, 18:38     Остановка USB устройств #10
как "словить тотал за руку", что он просматривает флешку?
Смотри хендл файла в имени которого есть подстрока h:\, где h - имя флешевого диска.

появилась идея попробовать следить за портом USB устройства. Получить список всех USB портов, потом проверить воткнута ли в данный порт флешка, и смотреть за всеми обращениями к порту. Тогда можно было бы всю программу свести только к этому и не было бы необходимости отдельно строить список процессов, писать различные функции для процессов непосредственно запущенных с флешки и для всех файлов. Реализуемо ли это?
С хендлами и проще и красивше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2009, 20:44     Остановка USB устройств
Еще ссылки по теме:

Остановка действий - C++
Можно ли как нибудь остановить выполнения программы на некоторое время?

Остановка потока - C++ WinAPI
Есть программа, которая при клике левой кнопкой мыши создает поток, который выводит на экран координаты + переменную i. Как сделать, чтобы...

Остановка программы - C++ Linux
Здравствуйте, подскажите пожалуйста, как остановить программу на определенное время. К примеру сработал оператор if и программа должна...

Остановка SetTimer - C++ WinAPI
Ребята, не могу остановить SetTimer. В шапке класса UINT_PTR hTimer; Стартую в классе hTimer =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
LAren
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
16.09.2009, 20:44  [ТС]     Остановка USB устройств #11
Alexandoros, спасибо Вам за совет. Буду разбираться.

PS нашел исходный код программы FileMon, может быть получится взять оттуда какие-нибудь куски кода
Yandex
Объявления
16.09.2009, 20:44     Остановка USB устройств
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru