Указатели файлов
При открытии файла Windows связывает указатель файла с потоком по умолчанию. Этот указатель файла — это 64-разрядное значение смещения, указывающее следующее байтовое значение для чтения или расположения для получения следующего байта записи. При каждом открытии файла система помещает указатель на файл в начале файла, что равно нулю смещения. Каждая операция чтения и записи перемещает указатель на файл по числу байтов, которые считываются и записываются. Например, если указатель файла находится в начале файла и запрашивается операция чтения 5 байтов, указатель на файл будет расположен в смещение 5 сразу после операции чтения. По мере чтения или записи каждого байта система перемещает указатель на файл. Указатель на файл также можно изменить, вызвав функцию SetFilePointer.
Когда указатель на файл достигает конца файла, а приложение пытается считывать из файла, ошибка не возникает, но байты не считываются. Поэтому чтение нулевых байтов без ошибки означает, что приложение достигло конца файла. Запись нулевых байтов ничего не делает.
Приложение может усечь или расширить файл с помощью функции SetEndOfFile. Эта функция задает конец файла текущей позиции указателя файла.