Есть ли способ обойти ограничения UWP для определенных API? - PullRequest
0 голосов
/ 03 мая 2018

Я экспериментировал с созданием приложения Windows-10 C ++ UWP xaml.

Моя мотивация при выборе этой платформы состояла в том, чтобы избегать использования нескольких языков (C # для интерфейса WPF, C ++ - CLI для взаимодействия) и использовать C ++ только с некоторыми C ++ - CX.

Моя цель состояла в том, чтобы создать собственный инструмент для отладки драйвера PCI, а не создать какое-то высокозащищенное приложение Windows Store.

Мне показалось, что приложения UWP очень ограничены в использовании некоторых функций WIN API. Например, я не могу использовать свои статические библиотеки, потому что они используют CreateFile & DeviceIoControl. Я получаю сообщение об ошибке: error C3861: 'CreateFileA': identifier not found.

Даже если мне как-то удастся связать мои собственные библиотеки (скрыв использование этих функций в файлах .cpp), эти функции, похоже, не будут работать во время выполнения.

Есть ли способ обойти эти ограничения? Я только хочу использовать эту платформу для ее возможностей C ++ UI.

Ответы [ 2 ]

0 голосов
/ 21 июня 2018

Многие "старые" функции win32 все еще доступны или стали доступны в Windows 1803. Ориентация на API UWP, конечно, отличается от Win32 API. У Microsoft есть список официально поддерживаемых Win32 API по адресу: https://docs.microsoft.com/en-us/uwp/win32-and-com/win32-apis

CreateFileA отсутствует в этом списке, но CreateFile2 есть.

Для доступа к устройству UWP предоставляет функциональность в пространстве имен Windows.Devices.Custom

LoadLibrary \ GetProcAddress также может быть решением.

Большинство ограничений относятся только к приложениям UWP, загруженным в Магазин, а не к приложениям, загруженным бок о бок. Вы можете просто создать пакет и поместить его в общий сетевой ресурс или на http-сервер.

0 голосов
/ 03 мая 2018

Извините за плохие новости. Действительно, если вы не соответствуете указанным ограничениям, ваш выбор не является UWP. Вместо этого делайте WPF.

Приложения UWP предназначены для централизованного управления. Таким образом, вы можете распространять их через Store, ограничивать доступ к их файловой системе, управлять объемом памяти и временем жизни и т.д. бокс как суперзадер.

...