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