Thursday, March 3, 2011

Safe remove USB-Drive using Win32 API?

Anyone knows how to remove a USB drive using the win32 API? I do a lot of work on embedded systems and on one of these I have to copy my programs on a usb-stick an insert it into the target hardware.

Since I mostly work on the console I don't like to use the mouse and click on the small task-bar icon hundret times a day.

I'd love to write a little program to do exactly that so I can put it into my makefiles, but I haven't found any API call that does the same thing.

Any ideas?

From stackoverflow
  • It looks like Sync lets you specify -e to eject removable drives. While not a win32 API, you could probably just call sync -e [drive_letter] from your makefile.

    Aizaz : But how to know which drive letter has been added for USB drive? I also want to remove USB drives based on volumes like Do not allow USB volume more than 5GG etc.
  • This article and sample should do the trick: http://support.microsoft.com/default.aspx?scid=kb;en-us;165721

  • You can use the CM_Request_Device_Eject() function as well as possibly some other possibilities. Consult the following projects and articles:

    DevEject: Straightforward. http://www.withopf.com/tools/deveject/

    A useful CodeProject article: http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx

    Nils Pipenbrinck : Perfect.. You even linked to an utility to do the job. Thanks a lot.
    stephbu : MSDN reference @ http://msdn.microsoft.com/en-us/library/ms790831.aspx
  • Pls. change Save->Safe in the title

    Nils Pipenbrinck : thanks.. I always get these two wrong.
  • See Microsoft Knowledge Base article Q165721: http://support.microsoft.com/kb/165721 -- includes full C source code

  • Here is a technet article about removable storage media. Look for DismountNtmsMedia.

  • Here's a solution in Delphi, that I've modified and put into a service for use in a very large enterprise. Go to: link text

    Look for "scapi (Setup & Config Manager API)", and download it. There will be a demo program called USBView that will get you on your way. If you have Delphi, this also includes a TUSBDeviceTree component that you can use to gather information about a USB device when.

    Regards

0 comments:

Post a Comment