Usando o identificador de diário de alteração

O sistema de arquivos NTFS associa um identificador de 64 bits sem sinal a cada diário de alterações. O diário é carimbado com esse identificador quando ele é criado. O sistema de arquivos carimba o diário com um novo identificador em que os registros usn (número de sequência de atualização) existentes são ou podem ser inutilizáveis.

Por exemplo, o sistema de arquivos NTFS restamps um diário de alterações com um novo identificador quando um volume é movido de uma versão do NTFS para outra e depois de volta. Essa movimentação pode ocorrer em um ambiente de inicialização dupla ou ao trabalhar com mídia removível.

Para obter o identificador do diário de alterações atual em um volume especificado, use o código de controle FSCTL_QUERY_USN_JOURNAL . Para executar essa e todas as outras operações de diário de alteração, você deve ter privilégios de administrador do sistema. Ou seja, você deve ser membro do grupo Administradores.

Quando um administrador exclui e recria o diário de alterações, por exemplo, quando o valor usn atual se aproxima do valor máximo possível de USN, os valores de USN começam novamente a partir de zero. Quando o sistema de arquivos NTFS carimba um diário com um novo identificador em vez de recriar o diário, ele não redefine o USN como zero, mas continua do USN atual. Em ambos os casos, todos os USNs existentes são menores do que quaisquer USNs futuros.

Quando precisar de informações sobre um conjunto específico de registros, use o código de controle FSCTL_QUERY_USN_JOURNAL para obter o identificador de diário de alteração. Em seguida, use o código de controle FSCTL_READ_USN_JOURNAL para ler os registros de diário de interesse. O sistema de arquivos NTFS retorna apenas registros válidos para o diário especificado pelo identificador.

Seu aplicativo precisa dos USNs dos registros e do identificador para ler o diário. Esse requisito fornece uma marcar de integridade para casos em que seu aplicativo deve ignorar os registros existentes no arquivo e onde os registros foram gravados em instâncias anteriores do diário para o mesmo volume.

Para obter os registros nos quais você está interessado, você deve começar no registro mais antigo (ou seja, com o USN mais baixo) e verificar para frente até localizar o primeiro registro de interesse.