Так или иначе, вы должны вести этот учет самостоятельно, поскольку небуферизованные чтения должны быть выровнены.
Но лучший вопрос: почему вы думаете, что вам нужно это сделать? Вы пытались использовать std::ifstream
для чтения вашего файла? Современные процессоры и кэши имеют большое значение для сокрытия (или, по сути, исключения) дополнительной копии, которую вы, вероятно, думаете, выполняет буферизованный ввод-вывод.
Кроме того, если вы читаете последовательно, FILE_FLAG_NO_BUFFERING
запрещает механизм опережающего чтения ОС. Это почти наверняка будет стоить вам гораздо больше, чем вы получите, обходя буферы ОС.
Я подозреваю, что вы обнаружите, что самый простой код будет работать лучше всего для последовательного чтения больших файлов. Это в значительной степени так, что современные системы оптимизированы для каждого уровня ...