estrutura USN_RECORD_V4 (winioctl.h)
Contém as informações de um registro do diário de alterações USN (números de sequência de atualização) versão 4.0. Os registros das versões 2.0 e 3.0 são definidos pelo USN_RECORD_V2 (também chamado de estruturas USN_RECORD) e USN_RECORD_V3, respectivamente.
Sintaxe
typedef struct {
USN_RECORD_COMMON_HEADER Header;
FILE_ID_128 FileReferenceNumber;
FILE_ID_128 ParentFileReferenceNumber;
USN Usn;
DWORD Reason;
DWORD SourceInfo;
DWORD RemainingExtents;
WORD NumberOfExtents;
WORD ExtentSize;
USN_RECORD_EXTENT Extents[1];
} USN_RECORD_V4, *PUSN_RECORD_V4;
Membros
Header
Uma estrutura USN_RECORD_COMMON_HEADER que descreve o comprimento do registro, a versão principal e a versão secundária do registro.
FileReferenceNumber
O número ordinal de 128 bits do arquivo ou diretório para o qual esta anotação de registro é alterada.
Esse valor é um valor atribuído arbitrariamente que associa um registro de diário a um arquivo.
ParentFileReferenceNumber
O número ordinal de 128 bits do diretório em que o arquivo ou diretório associado a esse registro está localizado.
Esse valor é um valor atribuído arbitrariamente que associa um registro de diário a um diretório pai.
Usn
A USN deste registro.
Reason
Os sinalizadores que identificam os motivos das alterações acumuladas neste arquivo ou registro de diário de diretório desde que o arquivo ou diretório foi aberto.
Quando um arquivo ou diretório é fechado, um registro usn final é gerado com o sinalizador USN_REASON_CLOSE definido. A próxima alteração (por exemplo, após a próxima operação ou exclusão aberta) inicia um novo registro com um novo conjunto de sinalizadores de motivo.
Uma operação de renomeação ou movimentação gera dois registros USN, um que registra o diretório pai antigo para o item e outro que registra um novo pai.
A tabela a seguir identifica os possíveis sinalizadores.
SourceInfo
Informações adicionais sobre a origem da alteração, definidas pelo FSCTL_MARK_HANDLE da operação DeviceIoControl .
Quando um thread grava um novo registro USN, os sinalizadores de informações de origem no registro anterior continuam presentes somente se o thread também define esses sinalizadores. Portanto, a estrutura de informações de origem permite que os aplicativos filtrem registros USN definidos apenas por uma fonte conhecida, por exemplo, um filtro antivírus.
Um dos valores a seguir pode ser definido.
RemainingExtents
O número de extensões que permanecem após o registro de USN_RECORD_V4 atual. Vários registros da versão 4.0 podem ser necessários para descrever todas as extensões modificadas de um determinado arquivo. Quando o membro RemainingExtents é 0, o registro de USN_RECORD_V4 atual é o último registro USN_RECORD_V4 para o arquivo. A última entrada de USN_RECORD_V4 para um determinado arquivo é sempre seguida por um registro USN_RECORD_V3 com pelo menos o sinalizador USN_REASON_CLOSE definido.
NumberOfExtents
O número de extensões na entrada de USN_RECORD_V4 atual.
ExtentSize
O tamanho de cada estrutura USN_RECORD_EXTENT no membro Extents , em bytes.
Extents[1]
Uma matriz de estruturas USN_RECORD_EXTENT que representam as extensões na entrada USN_RECORD_V4 .
Comentários
Um registro USN_RECORD_V4 é gerado somente quando o rastreamento de intervalo é ativado e o tamanho do arquivo é igual ou maior que o valor do membro RangeTrackFileSizeThreshold . O usuário sempre recebe um ou mais registros USN_RECORD_V4 seguidos por um registro USN_RECORD_V3 .
Para fornecer uma compatibilidade de encaminhamento de caminho em clientes de diário de alterações, a Microsoft fornece um número de versão principal e secundário do software de diário de alterações na estrutura USN_RECORD_V4 . Seu código deve examinar esses valores, examinar sua própria compatibilidade com o software de diário de alterações e lidar normalmente com qualquer incompatibilidade, se necessário.
Uma alteração no número de versão secundária indica que os membros existentes da estrutura USN_RECORD_V4 ainda são válidos, mas que novos membros podem ter sido adicionados entre o penúltimo membro e o último, que é uma cadeia de caracteres de comprimento variável.
Para lidar com essa alteração normalmente, seu código não deve fazer nenhuma aritmética de ponteiro em tempo de compilação que dependa do local do último membro. Por exemplo, uma alteração no número de versão secundária torna a sizeof(USN_RECORD)
chamada não confiável. Em vez disso, dependa de cálculos em tempo de execução que usam o membro RecordLength .
Um aumento no número de versão principal do software de diário de alterações indica que a estrutura de USN_RECORD_V4 pode ter passado por grandes alterações e que a definição atual pode não ser confiável. Se o código detectar uma alteração no número de versão principal do software de diário de alteração, o código não deverá funcionar com o diário de alterações.
Para obter mais informações, consulte Criando, modificando e excluindo um Diário de alteração.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8.1 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 R2 [somente aplicativos da área de trabalho] |
Cabeçalho | winioctl.h (inclua Windows.h) |