无法在Windows商店应用程序中访问USB设备

6

首先,我要指出我完全是初学者在Windows应用程序开发方面。这很好,因为我正在尝试为PC开发一个Windows Store应用程序,用于连接通过USB连接的PrimeSense扫描仪。我已经在这里提出了更具体的问题。

这一次我有一个更普遍的问题,与Windows Store应用程序开发更相关。我使用VS2013 Express并编译Win32。

当我将我的应用程序编译为VS2012并将其作为可执行文件运行时,我可以完美地连接到扫描仪。但我不能在VS2013中以存储应用程序的形式做同样的事情。

我知道设备已连接且驱动程序已更新,所有dll文件都放置在Widnows System 32目录中。 我还添加了所有功能到App清单,并添加了以下设备功能。

 <m2:DeviceCapability Name="usb">
  <!--OSRFX2 Device-->
  <m2:Device Id="vidpid:1d27 0609">
    <m2:Function Type="classId:ff * *" />
    <m2:Function Type="name:vendorSpecific" />
  </m2:Device>
</m2:DeviceCapability>

显然,vid和pid与设备的相应代码匹配。
当我尝试使用OpenNI连接扫描仪时,我收到的错误之一是:
Could not open to "\\?\usb#vid_1d27&pid_0609&mi_00#7&1601586a&0&0000#{c3b5f022-5a42-1980-1909-ea72095601b1}" USB Device not found

这个错误非常令人沮丧,因为我知道设备已经连接。所以我认为,在Windows Store应用程序方面,可能存在某些特定级别的问题,导致我无法连接到设备。正如我所说,我正在为Win32编译。
有没有可能驱动程序不适用于Windows Store应用程序?在Windows Store应用程序逻辑中是否需要进行一些额外的操作,而我没有做到,这些操作是连接USB设备所必需的?很抱歉,但我完全是新手,对Windows Store应用程序开发一窍不通。
谢谢。

1
请问您是否确认,您的标题要求 Windows 应用商店应用程序,但是在中间部分您却说“VS2013 桌面应用程序将无法找到扫描仪”。我有点困惑。您是指“VS2013 应用商店应用程序将无法找到扫描仪”吗? - Nasenbaer
是的,我指的是“VS2013商店应用程序”。谢谢你指出来。 - MobileCushion
1个回答

1

你无法从Metro应用程序中进行此操作。

通常,通过将该{{link1:对象管理器路径}}作为要“创建”的文件调用CreateFile来创建对该USB设备的句柄。在Metro应用程序中,{{link2:CreateFile}}不允许使用 - “仅限桌面应用程序”,而它的“替代品”CreateFile2则明确不允许打开对象管理器对象。

此外,CreateFile2的文档说明指出,在Metro应用程序中,此函数只能打开文件和目录(而不能打开诸如管道、邮槽、控制台等内容)。

请参阅社区论坛上的这篇文章

除非我错过了什么,我认为这是不可能的。


好吧,我想现在不可能做到那样...希望未来会有改变。谢谢。 - MobileCushion
@MobileCushion - 很遗憾,我认为这个问题不会有所改变。微软的模式与Metro / Windows Store应用程序是一种更受限制、更安全的模式。可能有一个解决方法——如果你被允许在Metro应用程序旁边安装桌面程序,你可以让桌面程序处理从你的Metro应用程序向USB设备传输数据的工作。但我不知道你该如何分发它。 - antiduh

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