2013-10-12 76 views
0

我想使用一個需要DWORD的函數。錯誤調用MapViewOfFile

這些規格:

dwFileOffsetHigh [IN]

該文件的視圖開始偏移量的高次DWORD。 dwFileOffsetLow [in]

視圖開始處的文件偏移量的低位DWORD。 高偏移和低偏移的組合必須在文件映射中指定偏移量。它們還必須匹配系統粒度的內存分配 。也就是說,偏移量必須是分配粒度的倍數 。要獲得系統粒度的內存分配,請使用GetSystemInfo函數,該函數在SYSTEM_INFO結構的成員中填充 。

該函數失敗,我錯誤不正確的參數。

unsigned long lByteStart=200959959; 
unsigned long lByteLen=66964224; 

MapViewOfFile(*phMapping, FILE_MAP_READ, 0, lByteStart, lByteLen); 

我不關心高或低或低的,因爲我不明白,只是希望它會工作。

現在它不工作,有人可能會告訴我我做錯了什麼,我需要做什麼才能正確地做到這一點?

回答

3

問題不在於高/低部分,你是這麼做的。問題是'偏移量必須是分配粒度的倍數'。我不認爲你是。

分配粒度的典型值是4096,儘管您應該檢查它在系統上的含義,如引用所述。

+0

這是64千字節。 –

+0

謝謝。我會測試一下。 – tmighty

+0

粒度是65536字節,而不是64kb。 – tmighty