2008-09-17 8 views
29

Как удалить USB-накопитель с помощью API Win32? Я много работаю над встроенными системами, и на одном из них мне приходится копировать свои программы на USB-накопитель и вставлять его в целевое оборудование.Безопасное удаление USB-накопителя с использованием API Win32?

Поскольку я в основном работаю на консоли, я не люблю использовать мышь и щелкаю по маленькой иконке панели задач сто раз в день.

Я хотел бы написать небольшую программу, чтобы сделать именно это, поэтому я могу поместить ее в свои make-файлы, но я не нашел никакого вызова API, который делает то же самое.

Любые идеи?

ответ

17

Вы можете использовать функцию CM_Request_Device_Eject(), а также некоторые другие возможности. Проконсультируйтесь со следующими проектами и статьями:

DevEject: Простой. http://www.withopf.com/tools/deveject/

Полезный CodeProject статья: http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx

+0

Perfect .. Вы даже привязаны к утилите для выполнения этой работы. Большое спасибо. – 2008-09-17 17:39:29

4

Похоже, что Sync позволяет указать -e для извлечения съемных дисков. Хотя вы не API win32, вы могли бы просто позвонить sync -e [drive_letter] из своего файла makefile.

+0

Но как узнать, какая буква диска была добавлена ​​для USB-накопителя? Я также хочу удалить USB-накопители на основе томов, таких как Do not allow USB volume более 5GG и т. Д. – 2010-10-18 09:41:34

0

Вот решение в Delphi, которое я изменил и поместил в службу для использования на очень крупном предприятии. Перейдите по ссылке: link text

Ищите «scapi (Setup & Config Manager API)» и загрузите его. Там будет демонстрационная программа под названием USBView, которая поможет вам. Если у вас есть Delphi, это также включает компонент TUSBDeviceTree, который вы можете использовать для сбора информации о USB-устройстве, когда.

С уважением