我们有一个在C++应用程序中被P/调用的UWP。dll使用CreateFile函数打开一个通用串行总线设备。
hDevice = CreateFile("\\\\.\\EZUSB_FX2", GENERIC_WRITE, 0, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0, NULL);所有的工作都很好,除了我们的应用必须是侧面加载的。
接下来,我们已经用兼容的函数替换了C++动态链接库中大多数不兼容的函数。
但是,在使用CreateFile2打开设备时,会失败,并显示错误代码ERROR_NOT_SUPPORTED_IN_APPCONTAINER
hDevice = CreateFile2(L"\\\\.\\EZUSB_FX2", GENERIC_WRITE, 0, OPEN_EXISTING, NULL);在UWP中通过Win32调用打开设备的推荐方式是什么?
发布于 2019-03-20 15:55:55
从documentation派生,
从Windows应用商店应用程序调用时,CreateFile2将得到简化。您只能打开ApplicationData.LocalFolder或Package.InstalledLocation目录中的文件或目录。您不能打开命名管道或邮件槽或创建加密文件(FILE_ATTRIBUTE_ENCRYPTED)。
这就是你得到这个错误的原因。如果你想在你的usb设备上创建文件,更好的方法是使用UWP RemovableDevices api。有关更多详细信息,请参阅此tutorial。如果你坚持使用desktopbridge api,也许你需要考虑一下win32技术。
https://stackoverflow.com/questions/55245781
复制相似问题