estructura MARK_HANDLE_INFO (winioctl.h)

Contiene información que se usa para marcar un archivo o directorio especificados y su registro del diario de cambios de números de secuencias actualizadas (USN) con datos sobre los cambios. Lo usa el código de control FSCTL_MARK_HANDLE .

Sintaxis

typedef struct _MARK_HANDLE_INFO {
  union {
    DWORD UsnSourceInfo;
    DWORD CopyNumber;
  } DUMMYUNIONNAME;
  DWORD  UsnSourceInfo;
  HANDLE VolumeHandle;
  DWORD  HandleInfo;
} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;

Miembros

DUMMYUNIONNAME

DUMMYUNIONNAME.UsnSourceInfo

DUMMYUNIONNAME.CopyNumber

UsnSourceInfo

Tipo de cambios que se están realizando.

La operación no modifica el archivo o directorio externamente desde el punto de vista de la aplicación que la creó.

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, como un filtro antivirus.

Se definen los valores siguientes.

Valor Significado
USN_SOURCE_DATA_MANAGEMENT
0x00000001
La operación proporciona información sobre un cambio en el archivo o directorio realizado por el sistema operativo.

Un uso típico es cuando el almacenamiento remoto mueve datos de un almacenamiento externo a otro local. El almacenamiento remoto es el software de administración de almacenamiento jerárquico. Este movimiento suele agregar como mínimo la marca USN_REASON_DATA_OVERWRITE a un registro USN. Sin embargo, los datos no han cambiado desde el punto de vista del usuario. Al señalar USN_SOURCE_DATA_MANAGEMENT en el miembro SourceInfo de la estructura USN_RECORD que contiene el registro, puede determinar que, aunque se realiza una operación de escritura en el elemento, los datos no han cambiado.

USN_SOURCE_AUXILIARY_DATA
0x00000002
La operación agrega un flujo de datos privado a un archivo o directorio.

Un ejemplo podría ser un detector de virus que agrega información de suma de comprobación. A medida que el detector de virus modifica el elemento, el sistema genera registros USN. USN_SOURCE_AUXILIARY_DATA indica que las modificaciones no cambiaron los datos de la aplicación.

USN_SOURCE_REPLICATION_MANAGEMENT
0x00000004
La operación crea o actualiza el contenido de un archivo replicado.

Por ejemplo, el servicio de replicación de archivos establece esta marca cuando crea o actualiza un archivo en un directorio replicado.

USN_SOURCE_CLIENT_REPLICATION_MANAGEMENT
0x00000008
La replicación se realiza en sistemas cliente desde la nube o los servidores.

VolumeHandle

Identificador de volumen al volumen donde reside el archivo o directorio. Para obtener más información sobre cómo obtener un identificador de volumen, vea la sección Comentarios.

Este identificador es necesario para comprobar los privilegios de esta operación.

El autor de la llamada debe tener el privilegio SE_MANAGE_VOLUME_NAME . Para obtener más información, consulte Privilegios.

HandleInfo

Marca que especifica información adicional sobre el archivo o directorio identificado por el valor de identificador en el miembro VolumeHandle .

Valor Significado
MARK_HANDLE_PROTECT_CLUSTERS
0x00000001
El archivo se marca como no se puede desfragmentar hasta que se cierra el identificador.

Una vez que se cierra un identificador marcado MARK_HANDLE_PROTECT_CLUSTERS , no hay ninguna garantía de que los clústeres del archivo no se muevan.

MARK_HANDLE_TXF_SYSTEM_LOG
0x00000004
El archivo se marca como no se puede desfragmentar hasta que se cierra el identificador.

Windows Server 2003: Esta marca no se admite hasta Windows Server 2003 con SP1.

Windows XP: Esta marca no se admite.

MARK_HANDLE_NOT_TXF_SYSTEM_LOG
0x00000008
El archivo se marca como no se puede desfragmentar hasta que se cierra el identificador.

Windows Server 2003: Esta marca no se admite hasta Windows Server 2003 con SP1.

Windows XP: Esta marca no se admite.

MARK_HANDLE_REALTIME
0x00000020
El archivo está marcado para el comportamiento de lectura en tiempo real, independientemente del tipo de archivo real. Los archivos marcados con esta marca deben abrirse para E /S sin búfer.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Esta marca no se admite.

MARK_HANDLE_NOT_REALTIME
0x00000040
El archivo marcado previamente para el comportamiento de lectura en tiempo real mediante la marca MARK_HANDLE_REALTIME se puede desmarcar mediante esta marca, quitando el comportamiento en tiempo real. Los archivos marcados con esta marca deben abrirse para E /S sin búfer.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Esta marca no se admite.

MARK_HANDLE_READ_COPY
0x00000080
Indica el número de copia especificado en el miembro CopyNumber que se debe usar para las lecturas. Los archivos marcados con esta marca deben abrirse para E /S sin búfer.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Esta marca no se admite hasta Windows 8 y Windows Server 2012.

MARK_HANDLE_NOT_READ_COPY
0x00000100
El archivo marcado previamente para el comportamiento de lectura y copia mediante la marca MARK_HANDLE_READ_COPY se puede desmarcar mediante esta marca, quitando el comportamiento de lectura y copia. Los archivos marcados con esta marca deben abrirse para E /S sin búfer.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Esta marca no se admite hasta Windows 8 y Windows Server 2012.

MARK_HANDLE_RETURN_PURGE_FAILURE
0x00000400
Al mezclar la E/S asignada o almacenada en caché con E/S no almacenada en caché, el sistema intenta, cuando se emite una E/S no almacenada en caché, para purgar las asignaciones de memoria del intervalo de E/S no almacenada en caché. Si estas purgas producen un error en el sistema normalmente no devuelve el error al autor de la llamada, lo que puede provocar un estado dañado (por lo que la documentación indica que no lo hace). Esta marca indica al sistema que devuelva errores de purga para el identificador especificado para que la aplicación pueda controlar mejor esta situación.

Esta marca no se admite hasta Windows 8 y Windows Server 2012.

MARK_HANDLE_DISABLE_FILE_METADATA_OPTIMIZATION
0x00001000
Un archivo muy fragmentado en NTFS usa varios registros MFT para describir todas las extensiones de un archivo. Esta lista de registros MFT secundarios (también conocidos como registros FRS) se controla mediante una estructura conocida como lista de atributos. Una lista de atributos está limitada a un tamaño de 128 0000. Cuando el tamaño de una lista de atributos alcanza un determinado umbral NTFS desencadenará una compactación en segundo plano en las extensiones, por lo que se usará el número mínimo de registros FRS secundarios. Esta marca deshabilita esta característica de compactación frS para el archivo especificado.

Esta marca no se admite hasta Windows 10.

MARK_HANDLE_ENABLE_USN_SOURCE_ON_PAGING_IO
0x00002000
Indica a NTFS que establezca el valor UsnSourceInfo especificado en escrituras de paginación en el Journal usn. Tradicionalmente, esto no se hacía en las escrituras de paginación, ya que el sistema no sabía qué subproceso realizó los cambios especificados. Se trata de una invalidación. Esto solo funciona si el FileObject que usa el administrador de memoria tiene este estado asociado.

Esta marca no se admite hasta Windows 10.

MARK_HANDLE_SKIP_COHERENCY_SYNC_DISALLOW_WRITES
0x00004000
Al establecer esta marca, se indica al sistema que no se permiten escrituras en este archivo. Si una aplicación intenta abrir el archivo para el acceso de escritura, se produce un error en la operación con STATUS_ACCESS_DENIED. Si se ve un error en una escritura, se produce un error en la operación con STATUS_MARKED_TO_DISALLOW_WRITES

Esta marca no se admite hasta Windows 10.

Comentarios

Para recuperar un identificador de un volumen, llame a CreateFile con el parámetro lpFileName establecido en una cadena con el siguiente formato:

"\.\X:"

En la cadena anterior, X es la letra que identifica la unidad en la que aparece el volumen.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado winioctl.h (incluya Windows.h)

Consulte también

FSCTL_MARK_HANDLE

USN_RECORD