Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6

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

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

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

Может кто-нибудь из сведущих людей подскажет что происходит, когда идет попытка остановки устройства? Что делает Windows и в какой последовательности? Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2009, 14:52
Ответы с готовыми решениями:

Как можно читать состояние usb устройств из с++ ?
Как можно читать состояние usb устройств (флешка, клава, мышка и т. д. любого) из с++ ?

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

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

10
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
13.09.2009, 23:27  [ТС]
пока решения не нашел. помогите пожалуйста
0
 Аватар для Nikita2009
105 / 104 / 9
Регистрация: 12.09.2009
Сообщений: 452
13.09.2009, 23:53
Ты не можешь вытянуть безопасно флешку или что???
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
14.09.2009, 00:24
LAren, вперед на MSDN за изучением Api функций. Бьюсь об заклад, ты подыщишь там что-то.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
14.09.2009, 00:33
Более того, другие уже поискали. И написали USB Safely Remove.
0
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
14.09.2009, 15:33  [ТС]
про USB Safely Remove я знаю, но брать готовую прогу нельзя, преподаватель не поймет

попробую переформулировать вопрос немного по другому: подскажите какие функции использовать чтобы у каждого процесса посмотреть с какими файлами он связан. В msdn смог найти только функцию GetModuleFileName но она не позволяет отследить все файлы с которыми работает процесс (например видеоплеер: показывает что работает из установленного каталога, а то что сам видеофайл читается с флешки не показывает). Может быть так кто-нибудь что-нибудь сможет подсказать.
0
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
16.09.2009, 13:39
http://www.wasm.ru/article.php... kfileswork
По ссылке есть описание метода перечисления хендлов.

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

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

появилась идея попробовать следить за портом USB устройства. Получить список всех USB портов, потом проверить воткнута ли в данный порт флешка, и смотреть за всеми обращениями к порту. Тогда можно было бы всю программу свести только к этому и не было бы необходимости отдельно строить список процессов, писать различные функции для процессов непосредственно запущенных с флешки и для всех файлов. Реализуемо ли это?
С хендлами и проще и красивше.
0
0 / 0 / 0
Регистрация: 11.09.2009
Сообщений: 6
16.09.2009, 20:44  [ТС]
Alexandoros, спасибо Вам за совет. Буду разбираться.

PS нашел исходный код программы FileMon, может быть получится взять оттуда какие-нибудь куски кода
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2009, 20:44
Помогаю со студенческими работами здесь

Получить список USB устройств
Нужно получить список устройсст по классу гуида . Добавлено через 37 минут что бы в дальшейшем к устройству обращаться как к файлу

Реагирование программой на органы управления не стандартных USB устройств
Доброго времени суток. Хочу написать конфигуратор для своих целей, и мне кажется, что было бы удобно использовать для работы с ним...

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

Переодически перестают работать USB порты на материнке после подключения устройств к USB корпуса
Собственно проблема почти описана в заголовке. Довольно странная фигня. К материнке подключены клава и мышь. Происходит такое (не...

USB 2.0 и USB 3.0 - питание устройств
Извиняюсь, если не тот раздел форума. Выбрал этот, так как есть что-то общее с вопросом и люди тут присутствуют. 3.0 имеет питание...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru