Безопасно удалить USB-накопитель с помощью Win32 API?
Вопрос
Как мне удалить USB-накопитель с помощью Win32 API?Я много работаю над встроенными системами, и на одной из них мне приходится копировать свои программы на USB-накопитель и вставлять его в целевое оборудование.
Поскольку я в основном работаю на консоли, мне не нравится пользоваться мышью и кликать по маленькому значку на панели задач сто раз в день.
Я бы с удовольствием написал небольшую программу, которая делала бы именно это, чтобы я мог поместить ее в свои makefile, но я не нашел ни одного вызова API, который делал бы то же самое.
Есть какие-нибудь идеи?
Решение
Вы можете использовать функцию CM_Request_Device_Eject(), а также некоторые другие возможности.Ознакомьтесь со следующими проектами и статьями:
Разрабатывать:Прямолинейный.http://www.withopf.com/tools/deveject/
Полезная статья CodeProject:http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx
Другие советы
Это выглядит так Синхронизация позволяет указать -e для извлечения съемных дисков.Хотя это не win32 API, вы, вероятно, могли бы просто вызвать sync -e [drive_letter]
из вашего makefile.
Вот такой статья technet о съемных носителях информации.Ищите DismountNtmsMedia
.
Вот решение на Delphi, которое я модифицировал и внедрил в сервис для использования на очень крупном предприятии.Перейти к: текст ссылки
Найдите "scapi (Setup & Config Manager API)" и загрузите его.Там будет демонстрационная программа под названием USBView, которая поможет вам в этом.Если у вас есть Delphi, это также включает компонент TUSBDeviceTree, который вы можете использовать для сбора информации о USB-устройстве, когда.
С уважением