我的程序中有一个线程试图CreateFile
锁定 USB 设备,但是,有时它不会失败,而是需要永远。有没有其他人遇到过这个问题?有什么办法可以为这个功能设置超时吗?代码是这样的:
string file = @"\\.\" + DriveLetter[0] + ":";
handle = CreateFile(filename, GENERIC_READ, FILE_SHARE_WRITE, IntPtr.Zero, 0x3, 0, IntPtr.Zero);
谢谢。
您想锁定它以使其无法访问 - 作为设备 - 或“阻止”分离它(例如它是一支笔)?
编辑:对不起,我不允许添加评论:S
无论如何。如果锁定很重要,您可以使用 devcon 轻松完成:http: //support.microsoft.com/kb/311272
和示例代码: http:
//www.programmersheaven.com/mb/dotnet/337951/337951/ programatically-enable--disable-usb-port-using-cnet/
,以防您不想一直使用带参数的 exe。
永远的占用似乎与主窗体线程发生了某种冲突。
最终,我将包含CreateFile
操作的锁定函数移到了一个单独的线程,它不会与 UI 线程竞争,现在它工作正常。