struttura USN_RECORD_V4 (winioctl.h)
Contiene le informazioni per un record del journal di modifica usn (Update Sequence Number) versione 4.0. I record della versione 2.0 e 3.0 sono definiti rispettivamente dalle strutture USN_RECORD_V2 (dette anche USN_RECORD) e USN_RECORD_V3 .
Sintassi
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;
Members
Header
Struttura USN_RECORD_COMMON_HEADER che descrive la lunghezza del record, la versione principale e la versione secondaria per il record.
FileReferenceNumber
Numero ordinale a 128 bit del file o della directory per cui viene modificato questo record.
Questo valore è un valore assegnato arbitrariamente che associa un record journal a un file.
ParentFileReferenceNumber
Numero ordinale a 128 bit della directory in cui si trova il file o la directory associata a questo record.
Questo valore è un valore assegnato arbitrariamente che associa un record journal a una directory padre.
Usn
USN di questo record.
Reason
Flag che identificano i motivi delle modifiche accumulate in questo file o record del journal di directory dall'apertura del file o della directory.
Quando un file o una directory viene chiuso, viene generato un record USN finale con il flag USN_REASON_CLOSE impostato. La modifica successiva, ad esempio dopo l'operazione di apertura o l'eliminazione successiva, avvia un nuovo record con un nuovo set di flag motivo.
Un'operazione di ridenominazione o spostamento genera due record USN, uno che registra la directory padre precedente per l'elemento e uno che registra un nuovo elemento padre.
Nella tabella seguente vengono identificati i flag possibili.
SourceInfo
Informazioni aggiuntive sull'origine della modifica, impostate dal FSCTL_MARK_HANDLE dell'operazione DeviceIoControl .
Quando un thread scrive un nuovo record USN, i flag di informazioni di origine nel record precedente continuano a essere presenti solo se il thread imposta anche tali flag. Pertanto, la struttura delle informazioni di origine consente alle applicazioni di filtrare i record USN impostati solo da un'origine nota, ad esempio un filtro antivirus.
È possibile impostare uno dei valori seguenti.
RemainingExtents
Numero di extent che rimangono dopo il record di USN_RECORD_V4 corrente. Per descrivere tutti gli extent modificati per un determinato file, possono essere necessari più record versione 4.0. Quando il membro RemainingExtents è 0, il record USN_RECORD_V4 corrente è l'ultimo record USN_RECORD_V4 per il file. L'ultima voce USN_RECORD_V4 per un determinato file è sempre seguita da un record USN_RECORD_V3 con almeno il flag USN_REASON_CLOSE impostato.
NumberOfExtents
Numero di extent nella voce di USN_RECORD_V4 corrente.
ExtentSize
Dimensione di ogni struttura USN_RECORD_EXTENT nel membro Extents , in byte.
Extents[1]
Matrice di strutture USN_RECORD_EXTENT che rappresentano gli extent nella voce USN_RECORD_V4 .
Commenti
Un record USN_RECORD_V4 viene restituito solo quando viene attivato il rilevamento dell'intervallo e le dimensioni del file sono uguali o maggiori del valore del membro RangeTrackFileSizeThreshold . L'utente riceve sempre uno o più record USN_RECORD_V4 seguiti da un record USN_RECORD_V3 .
Per garantire una compatibilità di avanzamento del percorso nei client del journal delle modifiche, Microsoft fornisce un numero di versione principale e secondario del software change journal nella struttura USN_RECORD_V4 . Il codice deve esaminare questi valori, esaminare la propria compatibilità con il software change journal e gestire normalmente eventuali incompatibilità, se necessario.
Una modifica nel numero di versione secondaria indica che i membri della struttura USN_RECORD_V4 esistenti sono ancora validi, ma che i nuovi membri potrebbero essere stati aggiunti tra il penultimo membro e l'ultimo, ovvero una stringa a lunghezza variabile.
Per gestire questa modifica normalmente, il codice non deve eseguire alcuna aritmetica del puntatore in fase di compilazione che si basa sulla posizione dell'ultimo membro. Ad esempio, una modifica nel numero di versione secondaria rende la sizeof(USN_RECORD)
chiamata inaffidabile. Si basano invece sui calcoli in fase di esecuzione che usano il membro RecordLength .
Un aumento del numero di versione principale del software del journal delle modifiche indica che la struttura USN_RECORD_V4 potrebbe aver subito modifiche importanti e che la definizione corrente potrebbe non essere affidabile. Se il codice rileva una modifica nel numero di versione principale del software change journal, il codice non deve funzionare con il journal delle modifiche.
Per altre informazioni, vedere Creazione, modifica ed eliminazione di una modifica Journal.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8.1 [solo app desktop] |
Server minimo supportato | Windows Server 2012 R2 [solo app desktop] |
Intestazione | winioctl.h (include Windows.h) |