我尝试使用c#UsbLibrarry.dll从USB HID条形码扫描仪获取原始数据,但无法在某些计算机上创建设备文件。我使用相同的条形码扫描仪,而在其他PC上是相同的操作系统 - Win7,但我没有得到任何输入数据。 这是一些日志:
FindSpecifiedDevice(int vendor_id,int product_id): 3118 2311
返回新Guid HID 4d1e55b2-f16f-11cf-88cb-001111000030
Initialise(string strPath): ?\ \藏#vid_0c2e&安培; pid_0907#7和; 1e9fdc80&安培0安培; 0000#{4d1e55b2-F16F-11CF-88cb-001111000030}
GenerateWithWinError(string strMessage):失败 创建设备文件
HIDDeviceException(string strMessage):Msg:无法创建设备 文件WinEr:000000B7
在UsbLibrary.HIDDevice.Initialise(String strPath)中 c:\ Users \ user1 \ Desktop \ UsbLibrary \ HIDDevice.cs:第133行
at UsbLibrary.HIDDevice.FindDevice(Int32 nVid,Int32 nPid,Type oType)在c:\ Users \ user1 \ Desktop \ UsbLibrary \ HIDDevice.cs:第265行
HIDDeviceException(string strMessage): 消息:UsbLibrary.HIDDeviceException:消息:无法创建设备文件 温纳:000000B7
在UsbLibrary.HIDDevice.Initialise(String strPath)中 c:\ Users \ user1 \ Desktop \ UsbLibrary \ HIDDevice.cs:第133行
at UsbLibrary.HIDDevice.FindDevice(Int32 nVid,Int32 nPid,Type oType)在c:\ Users \ user1 \ Desktop \ UsbLibrary \ HIDDevice.cs:第265行
UsbLibrary.HIDDeviceException: 消息:UsbLibrary.HIDDeviceException:消息:无法创建设备文件 温纳:000000B7
在UsbLibrary.HIDDevice.Initialise(String strPath)中 c:\ Users \ user1 \ Desktop \ UsbLibrary \ HIDDevice.cs:第133行
at UsbLibrary.HIDDevice.FindDevice(Int32 nVid,Int32 nPid,Type oType)在c:\ Users \ user1 \ Desktop \ UsbLibrary \ HIDDevice.cs:第265行
at UsbLibrary.HIDDevice.FindDevice(Int32 nVid,Int32 nPid,Type oType)在c:\ Users \ user1 \ Desktop \ UsbLibrary \ HIDDevice.cs:第273行
at UsbLibrary.SpecifiedDevice.FindSpecifiedDevice(Int32 vendor_id, Int32 product_id)in c:\ Users \ user1 \ Desktop \ UsbLibrary \ SpecifiedDevice.cs:第44行
在UsbLibrary.UsbHidPort.CheckDevicePresent()中 c:\ Users \ user1 \ Desktop \ UsbLibrary \ UsbHidPort.cs:第234行
这是使用kernel32.dll创建文件的dll方法:
private void Initialise(string strPath)
{
this.m_hHandle = Win32Usb.CreateFile(strPath, GENERIC_READ, FILE_SHARE_READ, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
if (this.m_hHandle != Win32Usb.InvalidHandleValue)
{
IntPtr lpData;
if (!Win32Usb.HidD_GetPreparsedData(this.m_hHandle, out lpData))
throw HIDDeviceException.GenerateWithWinError("GetPreparsedData failed");
try
{
Win32Usb.HidCaps oCaps;
Win32Usb.HidP_GetCaps(lpData, out oCaps);
this.m_nInputReportLength = (int) oCaps.InputReportByteLength;
this.m_nOutputReportLength = (int) oCaps.OutputReportByteLength;
this.m_oFile = new FileStream(new SafeFileHandle(this.m_hHandle, false), FileAccess.ReadWrite, this.m_nInputReportLength, true);
this.BeginAsyncRead();
}
catch (Exception ex)
{
throw HIDDeviceException.GenerateWithWinError("Failed to get the detailed data from the hid.");
}
finally
{
Win32Usb.HidD_FreePreparsedData(ref lpData);
}
}
else
{
this.m_hHandle = IntPtr.Zero;
throw HIDDeviceException.GenerateWithWinError("Failed to create device file");
}
}
Windows在用户帐户下运行(在两台PC上)。我也尝试添加" \。\"走向一条没有帮助我的道路。