파일을 열면 Windows에서 파일 포인터 기본 스트림과 연결합니다. 이 파일 포인터는 읽을 다음 바이트 또는 쓴 다음 바이트를 받을 위치를 지정하는 64비트 오프셋 값입니다. 파일이 열릴 때마다 시스템은 파일의 시작 부분에 파일 포인터를 배치합니다( 오프셋 0). 각 읽기 및 쓰기 작업은 읽고 쓰는 바이트 수만큼 파일 포인터를 앞으로 이동합니다. 예를 들어 파일 포인터가 파일의 시작 부분에 있고 5바이트의 읽기 작업이 요청된 경우 파일 포인터는 읽기 작업 직후 오프셋 5에 배치됩니다. 각 바이트가 읽거나 쓰면 시스템에서 파일 포인터를 앞으로 이동합니다. SetFilePointer 함수를 호출하여 파일 포인터의 위치를 변경할 수도 있습니다.
파일 포인터가 파일 끝에 도달하고 애플리케이션이 파일에서 읽으려고 하면 오류가 발생하지 않지만 바이트는 읽지 않습니다. 따라서 오류 없이 0바이트를 읽는 것은 애플리케이션이 파일의 끝에 도달했음을 의미합니다. 0바이트 쓰기는 아무런 작업을 수행하지 않습니다.
애플리케이션은 SetEndOfFile 함수를 사용하여 파일을 자르거나 확장할 수 있습니다. 이 함수는 파일의 끝을 파일 포인터의 현재 위치로 설정합니다.