Ponteiros de arquivo
Quando um arquivo é aberto, o Windows associa um ponteiro de arquivo ao fluxo padrão. Esse ponteiro de arquivo é um valor de deslocamento de 64 bits que especifica o próximo byte a ser lido ou o local para receber o próximo byte gravado. Sempre que um arquivo é aberto, o sistema coloca o ponteiro de arquivo no início do arquivo, que é o deslocamento zero. Cada operação de leitura e gravação avança o ponteiro do arquivo pelo número de bytes que estão sendo lidos e gravados. Por exemplo, se o ponteiro de arquivo estiver no início do arquivo e uma operação de leitura de 5 bytes for solicitada, o ponteiro do arquivo estará localizado no deslocamento 5 imediatamente após a operação de leitura. À medida que cada byte é lido ou gravado, o sistema avança o ponteiro do arquivo. O ponteiro de arquivo também pode ser reposicionado chamando a funçãoSetFilePointer.
Quando o ponteiro de arquivo atinge o final de um arquivo e o aplicativo tenta ler do arquivo, nenhum erro ocorre, mas nenhum bytes é lido. Portanto, ler zero bytes sem um erro significa que o aplicativo chegou ao final do arquivo. Escrever zero bytes não faz nada.
Um aplicativo pode truncar ou estender um arquivo usando a funçãoSetEndOfFile. Essa função define o final do arquivo para a posição atual do ponteiro de arquivo.