2010-07-15 69 views
0

在.NET上創建的文件我提出使用MemoryMappedFile.CreateNew .NET的存儲器映射文件(MAPNAME,容量)4存取存儲器映射經由蟒

我可以由MAPNAME訪問此MMF從CPython的?

我嘗試了下面。

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

但它返回WindowsError [錯誤87]說參數不正確。

我正在使用Windows Vista。

+0

我認爲你已經嚴重混淆了內存映射。 – 2010-07-15 15:38:15

+0

@Matt,我也覺得我很困惑。但是我使用上面的.net函數在系統內存中創建了一個mmf文件,並有效地從另一個進程(另一個.net應用程序)訪問它。所以,我猜測它也可能從python訪問系統內存,bcz共享數據是一個普通的舊數據。 – 2010-07-15 15:47:53

回答

0

我對C#完全沒有經驗,但我會嘗試回答你的問題。

CreateNew應該創建一個映射到不駐留在文件系統中的文件。請注意,這不是以任何方式跨平臺的。在Windows上,mmap.mmap的標記名參數應允許您映射這些標記的映射。由於映射不是由文件支持的,fileno的-1也是正確的。長度爲0將獲得整個映射。然後問題在於訪問。有人提到,如果不提供訪問參數將在Windows上提供直寫式映射,那麼您可以試試這一點。

如果一切都失敗了,試着回到使用文件支持的內存映射,它更便攜,更常見。 C#MemoryMappedFile類爲此提供了CreateFromFile方法。

+0

thnx馬特..它仍然失敗,不同的訪問選項,但我得到這個'非文件支持'是僅限Windows功能。 – 2010-07-16 14:38:22

+0

我的意思是,儘量不要提供訪問參數。這似乎是多克建議的。 – 2010-07-16 15:21:49