Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Ao criar ou abrir um arquivo, você pode fazer com que o gerenciador de E/S crie um ponteiro de posição de arquivo atual associado ao identificador de arquivo. Depois de ter feito isso, você pode ler e gravar dados na posição atual do arquivo, e o gerenciador de E/S atualizará automaticamente a posição pelo número de bytes que foram lidos ou gravados.
Por padrão, o gestor de entrada/saída não mantém um ponteiro de posição de arquivo atual. Esse padrão fornece eficiência, pois a manutenção correta da posição atual do arquivo exige que o gerenciador de E/S sincronize todas as operações de leitura e gravação no objeto de arquivo.
Para criar um "handle" que tenha um ponteiro associado à posição atual do ficheiro, especifique o direito de acesso SYNCHRONIZE no parâmetro DesiredAccess para ZwCreateFile, IoCreateFile ou ZwOpenFile, e FILE_SYNCHRONOUS_IO_ALERT ou FILE_SYNCHRONOUS_IO_NONALERT no parâmetro CreateOptions ou OpenOptions. Certifique-se de que você também não especifique o direito de acesso FILE_APPEND_DATA.
ZwReadFile e ZwWriteFile atualizam automaticamente o ponteiro de posição do arquivo atual para que ele aponte um pouco além dos dados afetados pela operação. Por exemplo, se você ler 20 bytes a partir do deslocamento de byte 101, ZwReadFile atualizará a posição atual do arquivo para 121.
Você pode examinar ou alterar a posição atual do arquivo chamando ZwQueryInformationFile ou ZwSetInformationFile, respectivamente. Em ambos os casos, defina o parâmetro FileInformationClass como FilePositionInformation.