Ошибка вызова MapViewOfFile

0

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

Это спецификации:

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 );

Я не заботился о высоком или низком или низком, потому что я не понимал этого и просто надеялся, что это сработает.

Теперь, когда это не сработает, может кто-нибудь, возможно, рассказать мне, что я сделал не так, и что мне нужно сделать, чтобы сделать это правильно?

Теги:
winapi

1 ответ

3
Лучший ответ

Проблема не в высокой/низкой части, вы сделали это правильно. Проблема заключается в том, что "смещение должно быть кратным гранулярности распределения". Я не думаю, что это так.

Типичное значение для гранулярности распределения составляет 4096, хотя вы должны проверить, что именно в вашей системе, как говорится в цитате.

  • 0
    Это 64 килобайта.
  • 0
    Спасибо. Я проверю это.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню