gpt4 book ai didi

c# - 内存映射文件是否支持 uwp 应用程序和 win32 进程之间的 ipc

转载 作者:行者123 更新时间:2023-12-03 11:10:10 25 4
gpt4 key购买 nike

官方文档没有正确说明 ipc via memory-mapped-files 在 uwp 中是否受支持。我正在研究 uwp 应用程序与其桌面扩展之间的 ipc 方案。虽然我可以使用 System.IO.MemoryMappedFiles 创建内存映射文件来自带有 codeGeneration 的 uwp 应用程序功能,但从 win32 进程打开失败并显示消息 Unable to find the specified file. . uwp是否支持通过内存映射文件进行ipc,如果是,正确的方法是什么?
Minimal reproduceable sample.
更新 1
Updated sample implementing answer from @Peter Torr - MSFT.
更新 2
Working sample in which memory-mapped-file created from uwp app can be read by win32 process.在由 win32 进程创建的 uwp 应用程序中读取内存映射文件仍然无法正常工作。

最佳答案

是的,它受支持,但如果您在 UWP 上下文中创建对象并从桌面上下文中打开它,则桌面进程需要显式使用命名对象的命名空间。
在您的 UWP 进程中,调用 GetAppContainerNamedObjectPath(nullptr, nullptr, ...) 确定该命名空间是什么,然后在末尾添加一个反斜杠和您的映射文件名。类似于 AppContainerNamedObjects\S-1-15-2-xxxxxxx\YourMappedName你应该只需要这样做一次,除非你改变你的包名(包括发布者哈希)。所以一旦你生成了它,你可以将值硬编码到你的桌面应用程序中,然后忘记它。
请注意,如果您以相反的方式执行此操作 - 桌面创建对象,而 UWP 打开它 - 那么您无需担心命名空间,但您必须修改访问控制,这比较棘手。

关于c# - 内存映射文件是否支持 uwp 应用程序和 win32 进程之间的 ipc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63247469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com