Безопасное извлечение USB-накопителя с помощью Win32 API?
Как удалить USB-накопитель с помощью Win32 API? Я много работаю над встроенными системами, и по одному из них мне приходится копировать свои программы на USB-накопитель и вставлять их в целевое оборудование.
Так как я в основном работаю на консоли, мне не нравится использовать мышь и нажимать на значок маленькой панели задач сто раз в день.
Мне бы хотелось написать небольшую программу, чтобы сделать именно это, поэтому я могу поместить ее в свои make файлы, но я не нашел никакого вызова API, который делает то же самое.
Любые идеи?
Ответы
Ответ 1
Вы можете использовать функцию CM_Request_Device_Eject(), а также некоторые другие возможности.
Проконсультируйтесь со следующими проектами и статьями:
DevEject: Прямо.
http://www.withopf.com/tools/deveject/
Полезная статья CodeProject:
http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx
Ответ 2
См. статью базы знаний Майкрософт Q165721: http://support.microsoft.com/kb/165721 - включает полный исходный код C
Ответ 3
Похоже, Sync позволяет указать -e для извлечения съемных дисков. Хотя API win32 не является, вы могли бы просто вызвать sync -e [drive_letter]
из вашего файла makefile.
Ответ 4
Эта статья и образец должны сделать трюк:
http://support.microsoft.com/default.aspx?scid=kb;en-us;165721
Ответ 5
Ниже приведена статья статьи о съемных носителях. Найдите DismountNtmsMedia
.
Ответ 6
Вот решение в Delphi, которое я изменил и поместил в службу для использования на очень крупном предприятии. Перейдите к: текст ссылки
Найдите "scapi (Setup and Config Manager API)" и загрузите его. Там будет демонстрационная программа под названием USBView, которая поможет вам. Если у вас есть Delphi, это также включает компонент TUSBDeviceTree, который вы можете использовать для сбора информации о USB-устройстве, когда.
Привет