通过python访问.net上创建的内存映射文件

通过python访问.net上创建的内存映射文件,.net,python,memory-mapped-files,.net,Python,Memory Mapped Files,我使用MemoryMappedFile.CreateNewmapName创建了一个内存映射文件,容量为.net 4 我可以从cpython通过mapName访问此mmf吗 我试着像下面那样 import mmap map = mmap.mmap(-1, 0, mapName, 1) 但它返回WindowsError[error 87],表示参数不正确 我使用的是windows vista。我对C毫无经验,但我会尝试回答你的问题 CreateNew应该创建一个到不在文件系统中的文件的映射。请注意

我使用MemoryMappedFile.CreateNewmapName创建了一个内存映射文件,容量为.net 4

我可以从cpython通过mapName访问此mmf吗

我试着像下面那样

import mmap
map = mmap.mmap(-1, 0, mapName, 1)
但它返回WindowsError[error 87],表示参数不正确


我使用的是windows vista。

我对C毫无经验,但我会尝试回答你的问题

CreateNew应该创建一个到不在文件系统中的文件的映射。请注意,这在任何方面都不是跨平台的。在Windows上,mmap.mmap的标记名参数应允许您映射这些标记的映射。由于映射不受文件支持,fileno的-1也是正确的。长度为0将获得整个映射。因此,问题在于访问。有人提到,不提供access参数将在Windows上提供直写映射,您可以尝试使用它


如果所有其他方法都失败了,试着退回到使用文件备份内存映射,它更具可移植性,也更常见。C MemoryMappedFile类为此提供了CreateFromFile方法。

我认为您严重混淆了内存映射。@Matt,我也认为我混淆了。但是我使用上面的.net函数在系统内存中创建了一个mmf,并从另一个进程和另一个.net应用程序高效地访问它。所以,我猜也可以从python访问系统内存,因为共享数据是一个普通的旧数据。。它仍然无法使用不同的访问选项,但我发现这个“非文件备份”是windows唯一的功能。我的意思是,尝试根本不提供访问参数。这似乎是doco的建议。你找到解决办法了吗?