estructura USN_RECORD_V4 (winioctl.h)
Contiene la información de un registro de la versión 4.0 del diario de cambios de números de secuencias actualizadas (USN). Los registros de la versión 2.0 y 3.0 se definen mediante las estructuras de USN_RECORD_V2 (también denominado USN_RECORD) y de USN_RECORD_V3 respectivamente.
Sintaxis
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;
Miembros
Header
Estructura USN_RECORD_COMMON_HEADER que describe la longitud del registro, la versión principal y la versión secundaria del registro.
FileReferenceNumber
Número ordinal de 128 bits del archivo o directorio para el que cambia este registro.
Este valor es un valor asignado arbitrariamente que asocia un registro de diario a un archivo.
ParentFileReferenceNumber
Número ordinal de 128 bits del directorio donde se encuentra el archivo o directorio asociado a este registro.
Este valor es un valor asignado arbitrariamente que asocia un registro de diario a un directorio primario.
Usn
USN de este registro.
Reason
Marcas que identifican los motivos de los cambios que se han acumulado en este registro de diario de archivos o directorios desde que se abrió el archivo o directorio.
Cuando se cierra un archivo o directorio, se genera un registro USN final con la marca USN_REASON_CLOSE establecida. El siguiente cambio (por ejemplo, después de la siguiente operación de apertura o eliminación) inicia un nuevo registro con un nuevo conjunto de marcas de motivo.
Una operación de cambio de nombre o movimiento genera dos registros USN, uno que registra el directorio primario anterior para el elemento y otro que registra un nuevo elemento primario.
En la tabla siguiente se identifican las marcas posibles.
SourceInfo
Información adicional sobre el origen del cambio, establecido por el FSCTL_MARK_HANDLE de la operación DeviceIoControl .
Cuando un subproceso escribe un nuevo registro USN, las marcas de información de origen del registro anterior siguen estando presentes solo si el subproceso también establece esas marcas. Por lo tanto, la estructura de información de origen permite que las aplicaciones filtren los registros USN establecidos solo por un origen conocido, por ejemplo, un filtro antivirus.
Se puede establecer uno de los siguientes valores.
RemainingExtents
Número de extensiones que permanecen después del registro de USN_RECORD_V4 actual. Es posible que se necesiten varios registros de la versión 4.0 para describir todas las extensiones modificadas de un archivo determinado. Cuando el miembro RemainingExtents es 0, el registro de USN_RECORD_V4 actual es el último registro USN_RECORD_V4 para el archivo. La última entrada USN_RECORD_V4 para un archivo determinado siempre va seguida de un registro de USN_RECORD_V3 con al menos la marca USN_REASON_CLOSE establecida.
NumberOfExtents
Número de extensiones en la entrada actual USN_RECORD_V4 .
ExtentSize
Tamaño de cada estructura de USN_RECORD_EXTENT en el miembro Extents , en bytes.
Extents[1]
Matriz de estructuras de USN_RECORD_EXTENT que representan las extensiones de la entrada USN_RECORD_V4 .
Comentarios
Un registro de USN_RECORD_V4 solo se genera cuando se activa el seguimiento de intervalos y el tamaño del archivo es igual o mayor que el valor del miembro RangeTrackFileSizeThreshold . El usuario siempre recibe uno o varios registros USN_RECORD_V4 seguidos de un registro USN_RECORD_V3 .
Para proporcionar una ruta de acceso de compatibilidad hacia delante en los clientes de diario de cambios, Microsoft proporciona un número de versión principal y secundaria del software de diario de cambios en la estructura de USN_RECORD_V4 . El código debe examinar estos valores, examinar su propia compatibilidad con el software de diario de cambios y controlar correctamente cualquier incompatibilidad si es necesario.
Un cambio en el número de versión secundaria indica que los miembros de estructura de USN_RECORD_V4 existentes siguen siendo válidos, pero es posible que se hayan agregado nuevos miembros entre el miembro penúltimo y el último, que es una cadena de longitud variable.
Para controlar este cambio correctamente, el código no debe realizar ninguna aritmética de puntero de tiempo de compilación que se base en la ubicación del último miembro. Por ejemplo, un cambio en el número de versión secundaria hace que la sizeof(USN_RECORD)
llamada no sea confiable. En su lugar, confíe en cálculos en tiempo de ejecución que usen el miembro RecordLength .
Un aumento en el número de versión principal del software de diario de cambios indica que la estructura de USN_RECORD_V4 puede haber sufrido cambios importantes y que la definición actual puede no ser confiable. Si el código detecta un cambio en el número de versión principal del software de diario de cambios, el código no debe funcionar con el diario de cambios.
Para obtener más información, vea Crear, modificar y eliminar un Journal de cambios.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8.1 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 R2 [solo aplicaciones de escritorio] |
Encabezado | winioctl.h (incluya Windows.h) |