Извлечь USB-диск

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Извлечь USB-диск

Сообщение Shurrik » 29.04.2011 (Пт) 15:29

Проблема в общем простая: надо программно отключить флєшку. Сама система XP это делает как-то коряво, особенно когда используются более одной флэшки или есть диски SATA. Есть разные программки, которые это делают, а я хочу свою. Вопрос этот в интернете поднимается довольно часто, вот только ответа на VB я так и не нашел. Хотя по ходу узнал много интересного про WMI. Для тех кто интересуется - читайте файл "system32\wbem\cimwin32.mfl" на русском.
Нашел один пример на C++, но конвертировать никак не могу. Может кто подскажет или примерчик на VB или конвертор с С++ (желательно проверенный и работающий). В интернете полно всяких конверторов, но ни одного работающего мне так и не попалось. Вообще с каждым годом найти нужную информацию становится все труднее и труднее, то битые ссылки, то архивы непонятно с чем, то программы, которые не работают.
Но будем смотреть на жизнь веселее. Все с майсими празниками!
Колесо: Хочешь жить? Умей вертеться.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Извлечь USB-диск

Сообщение FireFenix » 02.05.2011 (Пн) 18:26

Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Re: Извлечь USB-диск

Сообщение Shurrik » 05.05.2011 (Чт) 11:31

Большое спасибо за ссылки. Очень помогло, программу перевел и она работает. Но способ очень запутанный, текст огромный, до сих пор до конца понять смысл не могу. Хотя извлечение происходит вызовом всего одной АПИ-функцией, с одним задаваемым параметром.
Код: Выделить всё
CM_Request_Device_Eject_NoUi(device.InstanceHandle, IntPtr.Zero, Nothing, 0, 0)

И несколько сотен строк кода, чтобы получить этот манипулятор устройства. Мне кажется, что его можно получить через WMI. Сейчас рою в єтом направлении. Если найду, то обязательно выложу рабочий код.
Колесо: Хочешь жить? Умей вертеться.

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Re: Извлечь USB-диск

Сообщение BasiС » 27.05.2011 (Пт) 11:41

Рекомендую почитать статью: http://pblog.ru/?p=105
Там всё толково описано, в том числе и про безопасное извлечение.
С помощью этой статьи + msdn у меня получилось написать свой диспетчер устройств Windows.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 47

    TopList