У меня есть программа, которая создает файл карты, она в состоянии сделать этот вызов просто отлично, m_hMap = CreateFileMapping(m_hFile,0,dwProtect,0,m_dwMapSize,NULL);
, но при последующем вызове функции MapViewOfFile(m_hMap,dwViewAccess,0,0,0)
, Я получаю код ошибки 8, который равен ERROR_NOT_ENOUGH_MEMORY, или строку ошибки «ошибка Недостаточно памяти для обработки этой команды».
Так что я не совсем понимаю, что MapViewOfFile делает для меня, и как исправить ситуацию.
некоторые цифры …
m_dwMapSize = 453427200
dwProtect = PAGE_READWRITE;
dwViewAccess = FILE_MAP_ALL_ACCESS;
Я думаю, что моя страница 65536
или 2 ^ 16
В случае очень большого файла и его чтения рекомендуется прочитать его небольшими частями, а затем обработать каждый фрагмент. А функция MapViewOfFile используется для отображения фрагмента в памяти.
смотреть на http://msdn.microsoft.com/en-us/library/windows/desktop/aa366761(v=vs.85).aspx нужно смещение, чтобы правильно выполнять свою работу, т. е. если вы хотите прочитать очень большой файл по частям. Главным образом из-за фрагментации и связанных с этим причин очень большой запрос памяти не удается.
Других решений пока нет …