连接和断开USB programmaticaly“没有取消和REPLUG”

我需要以编程方式连接和断开USB。 也就是说,我已经插入了USB设备。 我需要使用C#,.NET应用程序传输文件。 应用程序将观察特定文件夹并将文件从该文件夹传输到USB驱动器。 我需要在文件传输后断开USB设备,并在需要时连接USB – 无需拔下插头即可重新插入。

有什么代码可以做或者有没有DLL文件?

主要内容:注意,注意: 不拔掉USB设备并重新插拔

如果您的目标是在不使用某个磁盘卷时使其不可用,则更合理的方法可能是使用卷管理API,例如使用IOCTL_VOLUME_OFFLINE控制代码。 (我假设您知道哪个驱动器号属于您的USB磁盘。)

或者,您可以使用CfgMgr / SetupAPI以编程方式禁用和启用卷设备 – 与右键单击“ 设备管理器”中的卷并选择“ 禁用将执行”相同。 (有关使用SetupAPI的信息,请查看随Windows WDK提供的DevCon示例代码,并参阅MSDN以获取SetupDiChangeState等function。)

后一个选项可能需要特权用户帐户。

我不太确定,但可以做到。 在Linux中,我遇到过某些情况,其中电源以编程方式与设备断开连接。 如果连接的USB设备出现太多错误,内核通常会这样做。 因此,即使在Windows中也应该可以这样做。 您可能需要编写自己的外部DLL来执行此操作。