Greg Gorman
Greg Gorman

Reputation: 306

Windows 8.1 Store App HidDevice.FromIdAsync returns null

Similar to: http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/2cb65387-aad8-444d-a462-c44f3111a877/action?threadDisplayName=win81-hid-device-returning-null

I'm trying to access an HID Device for OCR and Mag Stripe reading, the Desko mini MPR. It's venpid is 0x0744 0x001D and it has three interfaces, [usage page usage id] 0x0001 0x0002, 0x0001 0x0006, and 0xFFA0 0x0001.

Like the linked issue, FindAllAsync returns a DeviceInformation, HidDevice.FromIdAsync returns null, and DeviceAccessInformation.CurrentStatus throws ElementNotFound. I understand usage page 0x0001 is blocked but I expect 0xFFA0 to get access.

For device capability, I've tried:

<m2:DeviceCapability Name="humaninterfacedevice">
  <!--Desko Device-->
  <m2:Device Id="vidpid:0744 001D usb">
    <m2:Function Type="usage:0001 *"/>
  </m2:Device>
</m2:DeviceCapability>

and

<m2:DeviceCapability Name="humaninterfacedevice">
  !--Desko Device-->
  <m2:Device Id="vidpid:0744 001D usb">
    <m2:Function Type="usage:FFA0 0001"/>
  /m2:Device>
</m2:DeviceCapability>

and

<m2:DeviceCapability Name="humaninterfacedevice">
  <!--Desko Device-->
  <m2:Device Id="vidpid:0744 001D usb">
    <m2:Function Type="usage:FFA0 *"/>
  </m2:Device>
</m2:DeviceCapability>

none produce the desired result.

What can I do to access this device? Custom UMDF? Brokered Components? Get a new device - how do I know ahead of time it's compatible?

Upvotes: 1

Views: 1171

Answers (1)

Greg Gorman
Greg Gorman

Reputation: 306

Exhausting all other avenues and prior to attempting the insane - UMDF, or Brokered Components, I read through this debugging article again: Writing Apps for USB Devices

This time I paid careful attention to the drivers section. When looking at the drivers installed for my device I noticed Kaspersky's driver installed. So, for testing, I unstalled Kaspersky, rebooted and then removed all entries to the device in device manager and the registry (HKLM\System\CurrentControlSet\Control\DeviceClasses).

Then I plugged in the device, ran my test program and FromIdAsync worked using the expected usagePage FFA0 and usage 0001.

Upvotes: 2

Related Questions