UWP HID SendOutputReport 总是返回访问被拒绝,需要 ReadWrite 权限

9

我正在尝试使用HID类在UWP应用程序(C#.net)中读取Wii遥控器,类似于这个

然而,我似乎无法做太多事情,因为我无法获得可写的HID句柄,这是执行HID SendOutputReport所必需的(用于设备配置)。

我尝试了几种权限组合,使用当前清单中的权限可以很好地进行阅读,但我尚未能够进行写操作。

我还尝试通过更改选择器来查看是否有其他可能可用于写入的句柄,但不幸的是,没有找到任何内容。

任何见解都将非常感谢。

公共讨论。 类似问题

我正在使用的当前权限如下所示。

<Capabilities>
    <DeviceCapability Name="bluetooth" />    
    <DeviceCapability Name="humaninterfacedevice">
      <!-- Any generic gaming device  -->   
      <Device Id="any">
        <Function Type="usage:0004 *"/>
        <Function Type="usage:0005 *"/>
      </Device>
      <!--Wii Remote Device-->
      <Device Id="vidpid:057E 0306 bluetooth">
        <Function Type="usage:0005 *" />
        <Function Type="usage:0001 0005" />
        <Function Type="usage:0002 *" />
        <Function Type="usage:0003 *" />
        <Function Type="usage:0004 *" />
        <Function Type="usage:0006 *" />
        <!--<Function Type="usage:0007 *" />-->
        <Function Type="usage:0008 *" />
        <Function Type="usage:0009 *" />
        <Function Type="usage:000A *" />
        <Function Type="usage:000B *" />
        <Function Type="usage:000E *" />
        <Function Type="usage:000f *" />
        <Function Type="usage:0010 *" />
        <Function Type="usage:0011 *" />
        <Function Type="usage:0012 *" />
        <Function Type="usage:0013 *" />
        <Function Type="usage:0014 *" />
        <Function Type="usage:0015 *" />
        <Function Type="usage:0016 *" />
        <Function Type="usage:0017 *" />
        <Function Type="usage:0018 *" />
        <Function Type="usage:0019 *" />
        <Function Type="usage:001A *" />
        <Function Type="usage:001B *" />
        <Function Type="usage:001C *" />
        <Function Type="usage:001D *" />
        <Function Type="usage:001E *" />
        <Function Type="usage:001F *" />
        <Function Type="usage:0021 *" />
      </Device>
    </DeviceCapability>
  </Capabilities>

编辑:添加了类似的问题。

1个回答

2
我目前正在解决交换机控制器的同样问题。至少对于交换机控制器,它使用UsagePage0x01
查看粘贴这里的一些#defines。这个数字可以翻译为HID_USAGE_PAGE_GENERIC
根据MS文档,它限制了访问包括所需信息的某些页面。
因此,如果Wii遥控器与Joycon使用相同的页面,则情况不妙。
我仍然希望您能找到一个解决方案,我也需要一个。

Wiimote使用与Joycon相同的页面。我很确定Wiimote确实在0x04和0x05页面上,就像通用游戏控制器一样。这是Wiimote滥用HID规范吗(它从未被制定为符合规范)? - MoDu
1
@MoDu 很抱歉回复晚了,这几天没在我的电脑上。我再次检查了一下,使用选择器中的 UssagePage 0x04 或 0x05 没有结果,只有 0x01 可以工作。而且在你提供的 GitHub 存储库中,也使用了 ussagePage 0x01GetDeviceSelector(...) 的第一个参数是 UssagePage。第二个参数中使用的 5 是 ussage Id。 - lokimidgard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接