Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2012, 14:23   #1
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию Как получить хэндл usb-накопителя

Прошу помощи в получении хэндла usb-накопителя. Очень много нашел как найти хэндл с помощью функции createfile, но думаю это не совсем то. Например есть флэшка, после подключения которой к usb-порту проводник показывает сразу несколько логических дисков (обычно это бывают накопители с шифрованием). Если воспользоваться функцией createfile, то как я понял можно получить хэндлы логических дисков а не самого накопителя. Если кто может помочь буду очень благодарен)
Aleks_www вне форума Ответить с цитированием
Старый 05.05.2012, 14:47   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А цель сего деяния??? УСБ не так прост как может показаться на самом деле.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.05.2012, 14:57   #3
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
А цель сего деяния??? УСБ не так прост как может показаться на самом деле.
Цель отключить usb накопитель при помощи функции cm_request_device_eject.

Нашел кучу примеров по этому вопросу, но везде почему то сначала строится дерево устройств и только потом из него выбирается конкретный тип устройств для отключения. Вот я решил попробовать выключить флэшку просто зная ее идентификатор в системе.
Aleks_www вне форума Ответить с цитированием
Старый 05.05.2012, 15:06   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Aleks_www Посмотреть сообщение
Цель отключить usb накопитель при помощи функции cm_request_device_eject.

Нашел кучу примеров по этому вопросу, но везде почему то сначала строится дерево устройств и только потом из него выбирается конкретный тип устройств для отключения. Вот я решил попробовать выключить флэшку просто зная ее идентификатор в системе.
А почему не сделать также как все?? К чему самодеятельность, если уже есть готовые примеры?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.05.2012, 16:01   #5
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
А почему не сделать также как все?? К чему самодеятельность, если уже есть готовые примеры?
Я сделал как написано вот здесь, но меня не устраивает скорость отключения накопителя если он содержит логические диски. Я думаю это как раз из-за перечисления всех устройств до нахождения нужного из гуайда. Вот хочу попробовать по другому
Кстати без смодеятельности вообще не стоит пытаться что то программировать))

Последний раз редактировалось Aleks_www; 05.05.2012 в 16:43.
Aleks_www вне форума Ответить с цитированием
Старый 05.05.2012, 20:52   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Aleks_www Посмотреть сообщение
меня не устраивает скорость отключения накопителя если он содержит логические диски. Я думаю это как раз из-за перечисления всех устройств до нахождения нужного из гуайда.
В Windows есть средства измерения времени, поэтому нечего "думать", надо проверять.
Цитата:
Вот хочу попробовать по другому
Кстати без смодеятельности вообще не стоит пытаться что то программировать))
Программирование - род занятий, не имеющий ничего общего с изобретательством велосипеда.
s-andriano вне форума Ответить с цитированием
Старый 05.05.2012, 21:11   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Aleks_www Посмотреть сообщение
но меня не устраивает скорость отключения накопителя если он содержит логические диски. Я думаю это как раз из-за перечисления всех устройств до нахождения нужного из гуайда.
Отключение устройства осуществляет система. И она делает это более чем правильно. Не думаю что вам удастся обмануть ее и придумать более быстрый алгоритм чем у создателей ОС Windows.
Перечисление всех устройств указанного GUID происходит мгновенно. А вот физически отключить диск может занять время, особенно если у вас включено кэширование записи. Это нормально.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 06.05.2012, 00:07   #8
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
В Windows есть средства измерения времени, поэтому нечего "думать", надо проверять.Программирование - род занятий, не имеющий ничего общего с изобретательством велосипеда.
Велосипед тоже можно прокачать). (проапгрейдить))

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Отключение устройства осуществляет система. И она делает это более чем правильно. Не думаю что вам удастся обмануть ее и придумать более быстрый алгоритм чем у создателей ОС Windows.
Перечисление всех устройств указанного GUID происходит мгновенно. А вот физически отключить диск может занять время, особенно если у вас включено кэширование записи. Это нормально.
Кэширование это частный случай. Его можно включить или отключить. И влияет оно на безопасное извлечение если был запущен ппроцесс связанный с накопителем.

Последний раз редактировалось Aleks_www; 06.05.2012 в 00:09.
Aleks_www вне форума Ответить с цитированием
Старый 07.05.2012, 19:04   #9
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Как я понял вариантов кроме createfile нет?))
Aleks_www вне форума Ответить с цитированием
Старый 08.05.2012, 00:34   #10
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Aleks_www Посмотреть сообщение
Как я понял вариантов кроме createfile нет?))
Видимо да.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какое имя у окна Оперы? [ Получить хэндл ] malor Visual C++ 2 30.03.2012 00:23
получить хэндл окна по координатам Slippy Win Api 1 24.08.2011 07:47
Создание autorun.inf для USB накопителя _PROGRAMM_ Помощь студентам 9 03.03.2011 20:37
Эмулятор устройства USB flash-накопителя Hottabych Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 14.01.2011 20:40
Как определить заводской номер устройства usb накопителя? defen Помощь студентам 5 24.12.2010 03:14