通过Python访问在.NET中创建的内存映射文件

1 投票
1 回答
1553 浏览
提问于 2025-04-16 01:21

我用 .net 4 的 MemoryMappedFile.CreateNew(mapName, capacity) 创建了一个内存映射文件。

我可以通过 mapName 从 cpython 访问这个内存映射文件吗?

我试着这样做了。

import mmap
map = mmap.mmap(-1, 0, mapName, 1)

但是它返回了一个 WindowsError [错误 87],说参数不正确。

我正在使用 Windows Vista。

1 个回答

1

我对C#完全没有经验,但我会尽量回答你的问题。

CreateNew应该是用来创建一个不在文件系统中的文件映射。需要注意的是,这种方式并不支持跨平台。在Windows系统上,mmap.mmap的tagname参数可以让你映射这些带标签的映射。因为这个映射不是由文件支持的,所以fileno用-1是对的。长度为0会获取整个映射。问题在于访问权限。有提到如果不提供访问参数,在Windows上会得到写入映射,你可以试着实验一下这个。

如果这些都不行,可以考虑使用一个有文件支持的内存映射,这样更通用,也更常见。C#的MemoryMappedFile类提供了CreateFromFile方法来实现这个。

撰写回答