DeviceIOControl API не найден в приложении UWP C ++ - PullRequest
0 голосов
/ 04 октября 2018

Я хочу преобразовать свой существующий код приложения, который взаимодействует с драйвером режима ядра (драйвер WDM).Для IOCTL я использую API-интерфейсы DeviceIoControl.

Для переноса моего приложения в UWP я использую эту ссылку: https://docs.microsoft.com/en-us/cpp/porting/how-to-use-existing-cpp-code-in-a-universal-windows-platform-app?view=vs-2017.

После применения изменений в свойствах проекта, как указано вссылка, я получаю ошибку, так как идентификатор DeviceIoControl не найден.Это проблема, с которой я сталкиваюсь.Есть ли какой-нибудь пример приложения / API вместо DeviceIoControl?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

На самом деле, мы добавили DeviceIoControl в список разрешений в RS5.Сначала необходимо получить РУЧКУ для устройства, для чего потребуется два изменения

  • Вызов CreateFileFromApp вместо CreateFile
  • Открываемому устройству необходимо предоставить доступ к контейнеру приложения.Если у вас есть драйвер и это пользовательский интерфейс устройства, вы можете использовать пользовательский колпачок.

Если вы получаете доступ к встроенному интерфейсу устройства, вы не можете получить прямую РУЧКУ кустройство.Если ваш драйвер доступа MSR является драйвером pnp, вы можете воспользоваться приведенными выше инструкциями.

0 голосов
/ 04 октября 2018

Вы не можете использовать DeviceIOControl из приложений UWP.Вы можете увидеть список поддерживаемых Win32 и COM API, и это не один из них.Приложения UWP имеют более ограниченную модель безопасности, чтобы их было сложнее использовать в качестве вектора вредоносного ПО, поэтому вы не можете взаимодействовать с произвольными драйверами режима ядра.

Существует особый сценарий, в котором вы можете включить настраиваемую возможность ииспользуйте Windows.Devices.Custom API.См. Образец CustomCapability .Это предназначено для поддержки аппаратного обеспечения в целом.См. Приложение поддержки оборудования (HSA): шаги для разработчиков драйверов .

...