USB自我断开

时间:2014-11-29 10:18:02

标签: delphi batch-file

我不熟悉USB,我不能(使用delphi)通过自我断开USB功能来改进我的软件。

程序已打开并从USB内存驱动器(例如F:/)运行,当它停止时我尝试自动弹出设备。

我还尝试运行一个运行禁用USB设备的程序的.bat文件。如果从本地驱动器(C:/)启动此.bat文件一切正常,但如果从USB记忆棒(F:/)启动此.bat文件则会失败。

这里是我获得信息的链接:

How can i remove a USB flash disk programmatically using delphi?

delphi中的任何建议?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是您正在执行的进程是从您正在弹出的驱动器运行的。可执行文件已锁定,可防止驱动器被弹出。

很明显你需要做什么。您必须确保驱动器上没有文件被锁定。这意味着您必须终止您的流程。然后,您需要另一个进程,从另一个驱动器运行,以执行弹出。执行以下操作:

  1. 从进程A,将可执行文件写入要弹出的驱动器以外的驱动器。例如,写入临时目录。
  2. 启动此其他可执行文件,进程B说,调用CreateProcess。将进程A的可继承句柄传递给命令行上的进程B.
  3. 进程A终止。
  4. 进程B等待,直到处理过程A的句柄发出信号,然后弹出驱动器。
  5. 进程B终止。