|
7 | 7 |
|
8 | 8 | ## -description |
9 | 9 |
|
10 | | -This namespace defines Windows Runtime classes that a UWP app can use to communicate with [WinUSB](/en-us/windows-hardware/drivers/usbcon/automatic-installation-of-winusb) devices. These devices are handled by the inbox `winusb.sys` driver and are identified by a specific [Microsoft OS Descriptor](/en-us/windows-hardware/drivers/usbcon/microsoft-defined-usb-descriptors). |
| 10 | +This namespace defines Windows Runtime classes that a UWP app can use to communicate with [WinUSB](/windows-hardware/drivers/usbcon/automatic-installation-of-winusb) devices. These devices are handled by the inbox `winusb.sys` driver and are identified by a specific [Microsoft OS Descriptor](/windows-hardware/drivers/usbcon/microsoft-defined-usb-descriptors). |
11 | 11 |
|
12 | 12 | A valid WinUSB device will have a compatible id of `USB\MS_COMP_WINUSB` |
13 | 13 |
|
@@ -38,20 +38,20 @@ A UWP app that accesses a USB device must include specific device capability dat |
38 | 38 |
|
39 | 39 | **Before Windows 10, version 1809 (October 2018 Update)** |
40 | 40 |
|
41 | | -Since 1809, the **VendorId**/**ProductId** and **function-type** no longer need to be specified and will be ignored on newer systems. If targeting systems below 1809, then see [legacy USB device capabilities](/en-us/windows-hardware/drivers/usbcon/updating-the-app-manifest-with-usb-device-capabilities). |
| 41 | +Since 1809, the **VendorId**/**ProductId** and **function-type** no longer need to be specified and will be ignored on newer systems. If targeting systems below 1809, then see [legacy USB device capabilities](/windows-hardware/drivers/usbcon/updating-the-app-manifest-with-usb-device-capabilities). |
42 | 42 |
|
43 | 43 | ## Troubleshooting |
44 | 44 |
|
45 | 45 | + Verify the USB capability (```usb```) is in the application manifest. |
46 | 46 | + Verify the user has granted permission for the application to utilize USB devices. |
47 | 47 | + Validate the device type is not one designated as inaccessible. |
48 | | -+ Machine-internal devices (`DEVPKEY_Device_InLocalMachineContainer == TRUE`) are generally *not* accessible unless running on a SKU with [embedded mode](/en-us/windows/iot-core/develop-your-app/EmbeddedMode) and `lowLevelDevices` capability. |
49 | | -+ Devices with stacks that contain upper/lower filter drivers are generally *not* accessible. These are sometimes added by 3rd parties to enable additional functionality for [custom hardware](/en-us/windows-hardware/drivers/install/inf-addreg-directive). |
| 48 | ++ Machine-internal devices (`DEVPKEY_Device_InLocalMachineContainer == TRUE`) are generally *not* accessible unless running on a SKU with [embedded mode](/windows/iot-core/develop-your-app/EmbeddedMode) and `lowLevelDevices` capability. |
| 49 | ++ Devices with stacks that contain upper/lower filter drivers are generally *not* accessible. These are sometimes added by 3rd parties to enable additional functionality for [custom hardware](/windows-hardware/drivers/install/inf-addreg-directive). |
50 | 50 | + Device restriction is partially determined by `winusb.sys` during device enumeration, which may set the device interface property `DEVPKEY_DeviceInterface_Restricted` to `TRUE` on the WinUSB Device Interface `GUID_DEVINTERFACE_WINUSB_WINRT` based on the presence of device/class filters. |
51 | | - + The presence of device [UpperFilter](/en-us/windows-hardware/drivers/install/devpkey-device-upperfilters)/[LowerFilter](/en-us/windows-hardware/drivers/install/devpkey-device-lowerfilters) drivers can be determined using DeviceManager by looking for `UpperFilters` and `LowerFilters` properties. |
52 | | - + The presence of WinUSB class [UpperFilter](/en-us/windows-hardware/drivers/install/devpkey-deviceclass-upperfilters)/[LowerFilter](/en-us/windows-hardware/drivers/install/devpkey-deviceclass-lowerfilters) drivers can be determined using DeviceManager by looking for `Class upper filters` and `Class lower filters` properties. |
53 | | - + Device Interface properties can be inspected by calling [`CM_Get_Device_Interface_Property`](/en-us/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_propertyw) where `pszDeviceInterface` is the same string as would be passed to [FromIdAsync](usbdevice_fromidasync_1322863552.md). |
54 | | -+ These restrictions can be bypassed when making a custom device by working with the driver-developer to create a [Hardware Support App](/en-us/windows-hardware/drivers/devapps/hardware-support-app--hsa--steps-for-app-developers) |
| 51 | + + The presence of device [UpperFilter](/windows-hardware/drivers/install/devpkey-device-upperfilters)/[LowerFilter](/windows-hardware/drivers/install/devpkey-device-lowerfilters) drivers can be determined using DeviceManager by looking for `UpperFilters` and `LowerFilters` properties. |
| 52 | + + The presence of WinUSB class [UpperFilter](/windows-hardware/drivers/install/devpkey-deviceclass-upperfilters)/[LowerFilter](/windows-hardware/drivers/install/devpkey-deviceclass-lowerfilters) drivers can be determined using DeviceManager by looking for `Class upper filters` and `Class lower filters` properties. |
| 53 | + + Device Interface properties can be inspected by calling [`CM_Get_Device_Interface_Property`](/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_device_interface_propertyw) where `pszDeviceInterface` is the same string as would be passed to [FromIdAsync](usbdevice_fromidasync_1322863552.md). |
| 54 | ++ These restrictions can be bypassed when making a custom device by working with the driver-developer to create a [Hardware Support App](/windows-hardware/drivers/devapps/hardware-support-app--hsa--steps-for-app-developers) |
55 | 55 |
|
56 | 56 | ## -remarks |
57 | 57 |
|
|
0 commit comments