2013-10-12 2 views
0

Я пытаюсь использовать функцию, которая требует DWORD.Ошибка вызова MapViewOfFile

Эти функции:

dwFileOffsetHigh [в]

высокого порядка 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 байт, а не 64 КБ. – tmighty

Смежные вопросы