1

我的程序中有一个线程试图CreateFile锁定 USB 设备,但是,有时它不会失败,而是需要永远。有没有其他人遇到过这个问题?有什么办法可以为这个功能设置超时吗?代码是这样的:

string file = @"\\.\" + DriveLetter[0] + ":";
handle = CreateFile(filename, GENERIC_READ, FILE_SHARE_WRITE, IntPtr.Zero, 0x3, 0, IntPtr.Zero);

谢谢。

4

2 回答 2

1

您想锁定它以使其无法访问 - 作为设备 - 或“阻止”分离它(例如它是一支笔)?
编辑:对不起,我不允许添加评论:S
无论如何。如果锁定很重要,您可以使用 devcon 轻松完成:http: //support.microsoft.com/kb/311272
和示例代码: http:
//www.programmersheaven.com/mb/dotnet/337951/337951/ programatically-enable--disable-usb-port-using-cnet/
,以防您不想一直使用带参数的 exe。

于 2013-04-23T14:30:00.480 回答
1

永远的占用似乎与主窗体线程发生了某种冲突。

最终,我将包含CreateFile操作的锁定函数移到了一个单独的线程,它不会与 UI 线程竞争,现在它工作正常。

于 2013-04-23T21:44:16.220 回答