Compartir a través de


Acerca de los marcadores de posición

Un marcador de posición del sistema de archivos es un archivo que es una representación para el contenido real de un archivo o un directorio que reside en otro lugar. Esta optimización permite que el contenido real de un archivo o directorio resida en otro lugar y se capture a petición. El contenido real incluye metadatos, datos de archivo y entradas de directorio.

Los marcadores de posición pueden ser archivos o directorios. Pueden contener una parte de los metadatos de directorio o archivo real o una parte de los datos de archivo real o entradas del directorio. Los archivos de marcador de posición se marcan como archivos dispersos con el conjunto de bits de FILE_ATTRIBUTE_SPARSE_FILE.

Normalmente, un marcador de posición es un punto de reanálisis que un minifiltro del sistema de archivos posee y administra. El minifiltro propietario es el habilitador de virtualización y permite que un marcador de posición tenga un aspecto y se comporte como un archivo o directorio normales en el sistema de archivos. Estos controladores de virtualización interceptan las solicitudes de E/S en sus marcadores de posición y facilitan un comportamiento similar al sistema de archivos. ProjFs y Cloud Files son dos ejemplos de plataformas de virtualización en Windows que usan marcadores de posición.

Los minifiltros que poseen los marcadores de posición pueden controlar adecuadamente estas solicitudes de E/S para satisfacer la E/S. Por ejemplo, si una aplicación intenta leer un archivo de marcador de posición deshidratado, el minifiltro proporciona los datos del archivo para satisfacer la solicitud de E/S.

Los minifiltros propietarios solo pueden proporcionar la virtualización para las solicitudes de E/S que se originan por encima de ellos, ya sea desde el modo de usuario o desde componentes que están por encima de ellos en la pila de E/S.

Los minifiltros que no poseen el marcador de posición tienen la capacidad de emitir operaciones de E/S destinadas a filtros debajo de ellos mediante API como FltReadFile, FltWriteFile, etc. Si un minifiltro no propietario emitiera una solicitud de E/S dirigida a un archivo de marcador de posición debajo del minifiltro propietario, el minifiltro propietario no podría satisfacer correctamente la solicitud de E/S.

Por ejemplo, si un filtro emite un fltReadFile de destino a un archivo de marcador de posición deshidratado que el minifiltro propietario no ve, el filtro de destino podría obtener un bloque de ceros (0s) en lugar de los datos reales porque el marcador de posición podría ser un archivo disperso. Si el sistema almacena en caché una lectura que capturó un bloque de 0s, esta lectura contamina la memoria caché que podría dañar los datos de archivo si el sistema vacía la caché contaminada en el disco. Por lo tanto, es imperativo que los minifiltros controlen adecuadamente los marcadores de posición.