Не удается получить доступ к USB-устройству в приложении Магазина Windows

Хорошо, сначала я укажу, что я совершенно новичок в разработке приложений для Windows, и это хорошо, поскольку я пытаюсь разработать приложение для Магазина Windows для ПК, чтобы использовать сканер PrimeSense, подключенный через USB. Я задал более конкретный вопрос об этом здесь .

На этот раз у меня более общий вопрос, который больше связан с разработкой приложений для Магазина Windows. Я использую VS2013 Express и компилирую для Win32.

Когда я компилирую свое приложение для VS2012 и запускаю его как исполняемый файл, я могу прекрасно подключиться к сканеру. Но я не могу сделать то же самое с VS2013 и запустить его как приложение Store.

Я знаю, что устройство подключено, драйверы обновлены, а все dll-файлы помещены в каталог Widnows System 32. Я также добавил все возможности в манифест приложения, а также добавил следующие возможности устройства.

 <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 в игре есть некоторая специфика уровня ОС, которая не позволяет мне подключиться к устройству. Как я уже сказал, я компилирую для Win32.

Есть ли шанс, что драйверы не будут работать для приложения Магазина Windows. Есть ли какие-то дополнительные вещи, которые я должен сделать в логике приложения Магазина Windows, которые я не делаю и которые необходимы для подключения USB-устройства? Извините, но я совершенно новичок в разработке приложений для Магазина Windows.

Спасибо.


person MobileCushion    schedule 23.06.2014    source источник
comment
Пожалуйста, подтвердите, что в вашем заголовке запрашивается приложение для магазина Windows, но в середине вы говорите, что настольное приложение VS2013 не найдет сканер. я немного смущен. Вы имеете в виду, что приложение VS2013 Store не найдет сканер?   -  person Nasenbaer    schedule 30.06.2014
comment
Да, я имел в виду приложение VS2013 Store. Спасибо что подметил это.   -  person MobileCushion    schedule 02.07.2014


Ответы (1)


Вы не можете сделать это из приложений метро.

Обычно вы создаете дескриптор этого USB-устройства, вызывая CreateFile с этим путем диспетчера объектов. как файл для «создания». CreateFile равно запрещено в городских приложениях — "настольные приложения только" - и его "замена", CreateFile2, специально не позволяет открывать объекты диспетчера объектов.

Кроме того, в документации для CreateFile2 указано, что в приложениях метро эта функция может открывать только файлы и каталоги (а не такие вещи, как каналы, почтовые ящики, консоли и т. д.).

См. также эта запись в social.msdn

Если я что-то не пропустил, я не думаю, что это возможно.

person antiduh    schedule 02.07.2014
comment
Хорошо, я полагаю, что сейчас это невозможно сделать... Надеюсь, в будущем произойдут изменения. Благодарность - person MobileCushion; 03.07.2014
comment
@MobileCushion - К сожалению, я не думаю, что это изменится. Модель Microsoft с приложениями для магазинов Metro/Windows является более ограниченной и «безопасной». Потенциально есть один обходной путь: если вам разрешено устанавливать настольную программу вместе с вашим метро-приложением, вы можете заставить настольную программу передавать данные на USB-устройство из вашего метро-приложения. Но я не знаю, как бы вы распределили это. - person antiduh; 03.07.2014