c – 找出哪个进程在USB设备句柄上具有独占锁定

前端之家收集整理的这篇文章主要介绍了c – 找出哪个进程在USB设备句柄上具有独占锁定前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用CreateFile()API读取/写入USB设备的库.该设备恰好实现了HID设备配置文件,因此它与Microsoft的HID类驱动程序兼容.

系统上安装的其他一些应用程序是在没有共享模式的情况下以读/写模式打开设备.这会阻止我的库(以及消耗它的任何东西)使用该设备.我认为这是与HID兼容的设备 – 其他驱动程序软件(鼠标,控制器,PHIDGETS等)可能不合作.

无论如何,设备文件路径的形式如下:

1: "\\?\hid#hpqremhiddevice&col01#5&21ff20e7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}".

2: "\\?\hid#vid_045e&pid_0023#7&34aa9ece&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}".

3: "\?\hid#vid_056a&pid_00b0&col01#6&5b05f29&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}".

我正在尝试使用代码打开它,例如:

//  First,open it with minimum permissions,this device may not be ours.
//  we'll re-open it later in read/write
hid_device_ref = CreateFile(
    device_path,GENERIC_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

我从SysInternals考虑过像FileMon或Process Monitor这样的工具.但我似乎无法报告上面列出的设备文件句柄上的用法.

解决方法

您是否尝试过sysinternals中名为 handle的工具?

无论如何,两个窗口都没有这样做(显示锁定设备的应用程序的名称):当您尝试弹出USB设备时,Windows只是说该设备当前正在使用中,现在无法删除.

猜你在找的C&C++相关文章