为什么CreateFile需要永远?

时间:2013-04-23 13:39:08

标签: c# windows winapi

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

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

感谢。

2 个答案:

答案 0 :(得分: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一直都是params。

答案 1 :(得分:1)

永远的采取似乎与主要形式线程存在某种冲突。

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