Добрый день! Мы создаем прототип дедупера для Windows / LINUX, используя API-интерфейс для отображения файлов памяти в Windows и Linux. Наш дедупер начинает с последовательного сканирования всех записей базы данных для дедупликации. Поэтому мы передаем флаг FILE_FLAG_SEQUENTIAL_SCAN в Windows API CreateFile во время нашего начального последовательного сканирования записей базы данных, которые должны быть дедуплированы.
Как только мы закончим первую часть нашего процесса дедупликации, мы попытаемся использовать API отображения памяти Windows для случайного доступа к данным. На этом этапе, используя Windows C ++ API, возможно ли динамически перейти в режим FILE_FLAG_RANDOM_ACCESS?
In Linux, we are are able to do this with the following excerpt of code,
MapPtr = (char*)mmap((void *)BaseMapPtr ,mappedlength,PROT_READ,
MAP_PRIVATE, hFile,baseoff );
if (MapPtr == MAP_FAILED){
perror("mmap");
throw cException(ERR_MEMORYMAPPING,TempFileName);
}
madvise(MapPtr,mappedlength,MADV_RANDOM);
Выплачиваем ли мы штраф в Windows, используя FILE_FLAG_SEQUENTIAL_SCAN на этапе произвольного доступа нашего процесса дедупликации. Спасибо.