2011-04-19 47 views
0

凡究竟地址空間會被阻塞的MMF創建和映射在Windows CE的MMF的過程映射文件存儲器的一部分。是在創建MMF期間還是在視圖被映射的時候?只有在虛擬地址空間中有x的連續空間(在創建期間指定)時,創建是否會成功?映射在Windows CE

其次,是有可能的文件的一部分映射在WIN CE就像我們在Win32做。如果我創建一個帶有0x8000字節的MMF並映射該文件的視圖,該偏移爲0x5000且大小爲0x7000,則映射失敗。它說INVALID_PARAMETER。儘管當視圖的偏移量和大小之和小於0x8000時允許映射。它是否始終從文件的開始映射?

回答

1

在Windows移動6.x的(CE 5.0),存儲器映射文件存儲在上述Large Memory Area 0x42000000在虛擬地址空間中。

是的,你需要連續空間成功地分配MMF。

0x5000處+ 0x7000 = 0xC000時。這大於0x8000字節的分配空間。

-PaulH

編輯 此外,偏移系統的分配粒度的must be a multiple。使用GetSystemInfo來查找該值。在一臺設備上,例如,它是0xa11字節。

+0

但指令應該讀0x7000字節偏離0x5000處文件開始,讀取並存儲在分配給MMF的空間,爲0x8000右以下0x7000?在這種情況下,由於0x7000小於0x8000,爲什麼它會失敗? – 2011-04-25 09:31:21

+0

「哪裏」,我的意思是創造MMF的階段。不是位置。或者它應該是「什麼時候」。它在CreateMMF調用或MapViewOfFile調用期間分配嗎? – 2011-04-25 09:32:17

+0

你的分配粒度是多少? (請參閱我的編輯) – PaulH 2011-04-25 14:43:26