我们在UWP应用程序中有P / Invoked的C ++ dll。该DLL使用CreateFile函数打开USB设备。
hDevice = CreateFile("\\\\.\\EZUSB_FX2", GENERIC_WRITE, 0, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0, NULL);
一切正常,除了我们的应用程序必须侧载。
展望未来,我们已将C ++ dll中的大多数不兼容函数替换为兼容函数。
但是,在使用CreateFile2打开设备时,它失败并显示错误代码ERROR_NOT_SUPPORTED_IN_APPCONTAINER
hDevice = CreateFile2(L"\\\\.\\EZUSB_FX2", GENERIC_WRITE, 0, OPEN_EXISTING, NULL);
在UWP中通过Win32调用打开设备的推荐方法是什么?
从Windows应用商店应用调用时,简化了CreateFile2。您只能打开ApplicationData.LocalFolder或Package.InstalledLocation目录中的文件或目录。您无法打开命名管道或邮箱或创建加密文件(FILE_ATTRIBUTE_ENCRYPTED)。
这就是你得到错误的原因。如果您想在USB设备中创建文件,更好的方法是使用UWP RemovableDevices
api。有关更多详细信息,请参阅此tutorial。如果你坚持使用win32 api,也许你需要考虑desktopbridge技术。