首页 > 解决方案 > 在 UWP C++ 应用程序中找不到 DeviceIOControl API

问题描述

我想转换与内核模式驱动程序(WDM 驱动程序)交互的现有应用程序代码。对于 IOCTL,我使用的是 DeviceIoControl API。

为了将我的应用程序移植到 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?

标签: windowsuwpioctldesktop-bridgewdm

解决方案


实际上,我们在 RS5 中将DeviceIoControl添加到了允许列表中。您需要先获得设备的 HANDLE,这需要进行两次更改

  • 调用 CreateFileFromApp 而不是 CreateFile
  • 正在打开的设备需要授予对应用容器的访问权限。如果您拥有驱动程序并且它是自定义设备接口,则可以使用自定义上限。

如果您正在访问框内定义的设备接口,则无法直接获得该设备的 HANDLE。如果您的 MSR 访问驱动程序是 pnp 驱动程序,您可以使用上述指南。


推荐阅读