无法创建设备文件WinEr:000000B7

时间:2017-08-26 16:41:39

标签: c# dll usb hid kernel32

我尝试使用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上)。我也尝试添加" \。\"走向一条没有帮助我的道路。

0 个答案:

没有答案