Las profundidades del I/O de Windows (6.ª entrega, final) — Cómo funcionan los minifiltros y la investigación de retrasos con Procmon

· Actualizado el: · · Windows, Win32, I/O, Minifiltros, Núcleo, Controladores de dispositivo, Seguridad, Investigación de fallos

Historial de revisiones (primera versión, publicada el 29 Jul 2026)
Primera publicación
Citar este artículo(DOI (archivo registrado): 10.5281/zenodo.22175386)

Los DOI siguientes remiten a versiones ya archivadas y pueden diferir del texto actual. Para citar el texto actual, utilice la URL de esta página.

Go Komura (2026). Las profundidades del I/O de Windows (6.ª entrega, final) — Cómo funcionan los minifiltros y la investigación de retrasos con Procmon. KomuraSoft LLC. https://comcomponent.com/es/blog/windows-minifilter-filter-drivers/

DOI (archivo registrado)
10.5281/zenodo.22175386
DOI (última versión registrada)
10.5281/zenodo.22175387

En un PC concreto, solo abrir un archivo lleva tiempo. En equipos con software antivirus, las compilaciones y las copias masivas de archivos se vuelven lentas. Por otro lado, al iniciar Process Monitor se ve un registro de operaciones de archivo aunque no se haya cambiado la propia aplicación.

La clave para entender ambas cosas es el controlador de filtro del sistema de archivos, que vigila y controla el I/O de archivos mientras está en curso. Windows ofrece un punto de extensión precisamente para eso.1

En esta entrega final de la serie «Las profundidades del I/O de Windows» tratamos el minifiltro, el modelo de implementación estándar actual. La primera mitad cubre el mecanismo; la segunda lo conecta con un procedimiento para, con fltmc y Procmon, averiguar en qué entorno y en qué operación se va lento. Incluso para desarrolladores de aplicaciones que no escriben controladores, debería servir de mapa para aislar problemas de rendimiento.

1. Primero la conclusión

Un minifiltro es un controlador que registra en el Filter Manager (FltMgr) incluido en Windows «qué operaciones trata y en qué etapa». FltMgr llama a los callbacks según ese registro y según una posición relativa llamada altitud. Desde la aplicación, la operación de archivo es la misma, pero el trabajo de los filtros que hay por el camino puede afectar al resultado y al tiempo que lleva.2

Dicho esto, «hay un filtro» y «ese filtro es la causa de la lentitud» son cosas distintas. fltmc es una herramienta para comprobar la configuración y Procmon, para observar las operaciones. Ninguna de las dos es una herramienta para afirmar la causa a partir de un listado o de un solo número.

Este artículo se lee en torno a las distinciones siguientes.

Qué se quiere comprobar Dónde mirar Lo que eso solo no dice
Qué filtros están cargados fltmc filters Si ese filtro trató la operación en cuestión
Qué está conectado al volumen de destino fltmc instances El tiempo que gastó cada filtro
Qué operaciones de archivo llevan tiempo Eventos de Procmon y Duration El componente que produjo todo el retraso
En qué gasta tiempo el análisis de Defender El analizador de rendimiento de Defender Problemas de rendimiento de otros productos o de la aplicación en conjunto

En el diagrama, una línea continua marca una relación que siempre se cumple y una línea discontinua una relación condicional (las condiciones están en la explicación de cada relación en la página de detalle). La lista completa de relaciones (34 en total, con evidencia y grado de certeza) y las definiciones de los conceptos principales están reunidas en la página de detalle del mapa de conocimiento (en japonés). Datos: JSON-LD / Turtle

2. Historia de los que se interponen — de los filtros heredados a FltMgr

Un controlador de filtro del sistema de archivos vigila y controla las peticiones dirigidas al sistema de archivos o a otro filtro. Se usa en antivirus, cifrado, copia de seguridad, etc., y no solo registra peticiones: también puede cambiar parámetros o denegar el acceso. «Interceptar» aquí no es una interrupción de hardware de la CPU. Significa intervenir en el camino de tratamiento del I/O.1

En el modelo heredado, el propio filtro conecta su objeto de dispositivo a la pila de dispositivos, pasa las peticiones hacia abajo y trata la finalización. El orden de conexión, la retirada segura y la coexistencia con otros filtros quedan en un alcance amplio a cargo de quien implementa.

En el modelo de minifiltro, en cambio, FltMgr asume el trabajo común, como la conexión a la pila, y cada controlador registra solo los callbacks de las operaciones que necesita. Un minifiltro sigue siendo un controlador en modo kernel, y el objeto de controlador no desaparece. Lo que cambia es el mecanismo para participar en la pila del sistema de archivos.3

Modelo heredado y modelo de minifiltroDiagrama que compara el modelo heredado, en el que el propio filtro se conecta a la pila, y el de minifiltro, en el que se registra el tratamiento en FltMgr.Modelo heredadoModelo de minifiltroCómo participar en el I/O de archivosEl propio filtro se conectaRegistrar el tratamiento en FltMgrImplementar conexión y finalizaciónFltMgr se ocupa del trabajo común

Figura 1: Comparación entre el modelo en el que el propio filtro se conecta a la pila y el modelo en el que se registra el tratamiento en FltMgr.

La figura muestra una configuración en la que FltMgr se conecta a la pila en lugar del minifiltro. En la práctica, para coexistir con filtros heredados, FltMgr a veces se conecta en varias posiciones como varios marcos (frames). La coexistencia tiene restricciones de colocación, y pasar a minifiltro no resuelve por sí solo todos los problemas de compatibilidad.2

FltMgr reduce la inestabilidad de la posición según el orden de carga y también ayuda a la descarga en caliente. Sin embargo, solo se puede retirar un controlador que implemente el callback correspondiente y permita la descarga. No es una garantía de que, durante una investigación, se pueda quitar cualquier filtro.3

3. Cómo se mueve un minifiltro — callbacks pre/post

Un minifiltro registra como destino, por ejemplo, las operaciones de apertura y creación correspondientes a IRP_MJ_CREATE, o las de escritura correspondientes a IRP_MJ_WRITE. El callback pre es el tratamiento antes de pasar hacia abajo; el callback post, el de la etapa en que el resultado vuelve desde abajo. Se pueden registrar ambos, o solo el lado que hace falta.2

La figura siguiente es el caso en que A y B tratan ambos la misma operación, pasan la petición hacia abajo en pre y piden la llamada a post.

Orden de los callbacks cuando se pasa hacia abajo y se recibe la finalizaciónSi A y B registran la operación de destino, la pasan hacia abajo y piden post, pre se llama desde la altitud más alta y post en el orden inverso.Sistema de archivosFiltro B (bajo)Filtro A (alto)FltMgrSistema de archivosFiltro B (bajo)Filtro A (alto)FltMgrpreprePasar hacia abajoResultado del tratamientopostpost

Figura 2: En un ida y vuelta habitual, pre va de la altitud más alta a la más baja y post en el orden inverso. No todas las peticiones recorren este ida y vuelta.

El valor de retorno de pre decide el tratamiento posterior. Los representativos se ordenan así.45

Valor de retorno de pre Significado
FLT_PREOP_SUCCESS_NO_CALLBACK Seguir hacia abajo y no pedir el propio post
FLT_PREOP_SUCCESS_WITH_CALLBACK Seguir hacia abajo y pedir también el propio post al completar
FLT_PREOP_COMPLETE Completar con el resultado que uno indica. Rechazar es un ejemplo
FLT_PREOP_PENDING Dejar en espera la operación basada en IRP correspondiente y reanudar o completar más tarde

Si un filtro completa la petición en pre, esa petición no sigue hacia los filtros ni el sistema de archivos que están más abajo. Tampoco se llama el post del filtro que devolvió FLT_PREOP_COMPLETE; la finalización vuelve al lado superior que ya había recibido la petición y pedido post. Por tanto, es importante no pensar que «como está registrado, se llaman siempre pre y post».4

Además, dejar en espera no es solo añadir tiempo de espera. El controlador que lo hace tiene la responsabilidad de reanudar o completar la petición de forma adecuada. En la implementación también se tratan restricciones de tipo de operación, IRQL, vida del búfer, cancelación, etc. La tabla de este artículo es un mapa del tratamiento, no un procedimiento de implementación tal cual.5

3.1 El Fast I/O también entra, pero eso no significa que «se vea todo el I/O»

FltMgr no trata solo el I/O basado en IRP: también incluye Fast I/O y las operaciones de callback de filtro del sistema de archivos (FSFilter). Es un error entender que «como no usa IRP, el minifiltro no lo ve». A la inversa, tampoco es exacto que todo acceso se convierta necesariamente en un IRP y recorra la misma secuencia de callbacks.2

El alcance de lo que se puede observar cambia con el volumen al que está conectado, las operaciones registradas, las condiciones de exclusión al registrar y si la petición se completa más arriba. Tampoco cada acceso a memoria a un archivo asignado en memoria se registra como un evento de I/O de archivo. Los filtros heredados también tienen un mecanismo para tratar Fast I/O; el propio soporte de Fast I/O no es una función exclusiva de los minifiltros.36

4. Altitud — la «elevación» que decide el orden

Si varios filtros intervienen en la misma operación, hay que decidir en qué orden se tratan. Esa posición relativa la especifica la altitud (altitude). Cuanto mayor es el número, más lejos del sistema de archivos; cuanto menor, más cerca. No es la prioridad del subproceso ni un número que represente el rendimiento o la importancia del producto.7

El ajuste se escribe en la definición de instancia del controlador, y lo que realmente se conecta a un volumen es una instancia. La misma definición se aplica a varios volúmenes, así que no se emite una altitud distinta por volumen. Un mismo controlador puede tener varias definiciones, pero asignar varias altitudes no es un uso habitual.7

Los grupos de orden de carga por uso y las bandas de números están definidos así.

Bandas de altitud de minifiltro por usoCuanto mayor es el número, más lejos del sistema de archivos está la posición relativa. La figura es un extracto de algunos grupos y no cubre de la más alta a la más baja.Lado de número mayorActivity Monitor: 360000-389999Undelete: 340000-349999Anti-Virus: 320000-329999Replication: 300000-309999Continuous Backup: 280000-289999Hacia grupos de uso más abajo

Figura 3: Extracto de las bandas de altitud por uso. En la práctica también hay bandas por encima de Activity Monitor, y un filtro de vigilancia no queda siempre en lo más alto de toda la pila.

La primera altitud se solicita a Microsoft. Si en el mismo grupo de orden de carga ya se tiene asignado un valor entero, también existe el mecanismo de crear una altitud con parte decimal a partir de ese valor y comunicársela a Microsoft. No significa que un desarrollador sin un valor entero previo pueda usar un número cualquiera a su gusto.7

En desarrollo, según Request a Filter Altitude Identifier, se envía a fsfcomm@microsoft.com un correo de texto ASCII con el asunto Filter altitude request. Se rellenan el nombre de la empresa, un contacto de la empresa de uso a largo plazo, el nombre del producto y la URL, la descripción, el nombre de archivo del controlador, el tipo de filtro, el tipo de inicio, el grupo y el número deseados, etc. La guía oficial indica prever 30 días laborables de tramitación, y no está garantizado obtener el número pedido. Es un punto a confirmar en la fase de planificación del desarrollo y la distribución.8

5. Presentación de los habitantes — su PC visto con fltmc

Cuando se entiende el mecanismo, se comprueba la configuración real. Abra un símbolo del sistema como administrador y ejecute los siguientes comandos de lectura.910

:: Lista de filtros del sistema de archivos cargados
fltmc filters

:: Estado de conexión de filtros y volúmenes
fltmc instances

:: Lista de volúmenes
fltmc volumes

fltmc filters es la misma lista que fltmc sin argumentos. Lo que sigue es un ejemplo explicativo de cómo leer las columnas, no un resultado de medición de esta máquina. Las altitudes usan valores de asignación publicados; la composición de las filas y el número de instancias son ilustrativos.11

Filter Name                     Num Instances    Altitude    Frame
------------------------------  -------------  ------------  -----
bindflt                                 1        409800         0
cldflt                                  1        409500         0
WdFilter                                4        328010         0
luafv                                   1        135000         0
FileInfo                                4         45000         0
Columna Cómo leerla
Filter Name Nombre del filtro. No tiene por qué coincidir con el nombre del producto
Num Instances Número de instancias conectadas. No siempre coincide con el número de volúmenes distintos
Altitude Posición relativa respecto a otros filtros. El detalle también se comprueba por instancia
Frame Número de marco de FltMgr. <Legacy> indica un filtro heredado

Que un nombre esté en filters y que esté conectado al volumen donde está el archivo en cuestión se comprueban por separado. En una comparación de configuraciones, el punto es mirar hasta instances. Aunque se confirme el destino de conexión, eso no dice el registro de callbacks para esa operación ni el tratamiento que realmente se hizo.10

5.1 Filtros que se ven a menudo

WdFilter es el filtro de Microsoft Defender, con asignación 328010 en la banda Anti-Virus. cldflt es el filtro de archivos en la nube que sostiene Cloud Files API, con asignación 409500. En Files On-Demand de OneDrive, el marcador de posición local y el proveedor de sincronización se coordinan para obtener los datos necesarios. No significa que cada vez que se abre un archivo se descargue necesariamente el conjunto.1112

La vigilancia del sistema de archivos de Procmon también usa un minifiltro. Si se compara fltmc filters antes y después de iniciarlo, en algunos entornos se puede confirmar un controlador cuyo nombre empieza por PROCMON. No dé por fijos el número del final ni el momento de carga y descarga; compruebe el estado de su máquina.

Sin embargo, la vigilancia del Registro, de procesos y de subprocesos de Procmon no se realiza toda con un minifiltro del sistema de archivos. Además, una línea de Procmon no significa un acceso al disco físico. Observar operaciones de archivo y observar el comportamiento del dispositivo de almacenamiento son capas distintas.13

6. Dónde gasta tiempo el antivirus

Si la configuración espera el resultado del análisis a mitad de una operación de archivo, ese tiempo de espera entra en el tiempo hasta que la aplicación termina la operación. En una compilación que crea y actualiza muchos archivos pequeños, las comprobaciones de uno en uno también se acumulan. Dicho esto, no está decidido que en cada acceso se vuelva a leer el archivo entero; las condiciones y el momento del análisis varían según el producto y la configuración.14

Lo que sigue es un diagrama conceptual del caso en que la inspección posterior a la apertura se hace antes de devolver el resultado a la aplicación. No es un diagrama que garantice la implementación interna de un producto concreto ni el orden de tratamiento de todos los archivos.

Ejemplo de una configuración que espera el resultado del análisis para completar la aperturaIlustra una configuración de producto que inspecciona en post-create. No muestra la implementación de todos los productos ni garantiza un análisis en cada ocasión.Sistema de archivosMinifiltro AVAplicaciónSistema de archivosMinifiltro AVAplicaciónEn este ejemplo se espera el resultado de la inspección en post-createCancelar la apertura según las restriccionesNo se deshacen los cambios de creación o sobrescrituraalt[Si la inspección lo permite][Si hay que rechazar]Abrir el archivoComprobar las condiciones y pasar hacia abajoApertura establecidaResultado de éxitoResultado de error

Figura 4: Ejemplo de una configuración que espera el resultado de la inspección en post-create. Las condiciones y el momento reales de la inspección varían según el producto, y esto solo no basta para identificar la causa de un retraso.

En términos técnicos, existe el mecanismo de llamar a FltCancelFileOpen en el callback post de un create que tuvo éxito, establecer un estado de error y tratar la apertura como fallida. Sin embargo, no es una función que deshaga cambios en el archivo. No elimina un archivo recién creado ni restaura el contenido anterior a una sobrescritura, y la llamada tiene restricciones como hacerse antes de crear el identificador.15

6.1 Una exclusión no es «retirar el filtro»

Una exclusión reduce el destino del análisis al que se aplica esa configuración. No es un ajuste que retire el propio filtro de la pila, ni un ajuste que surta efecto de forma común en el EDR, la copia de seguridad o el filtro de cifrado de otro fabricante. Incluso dentro de la misma familia de productos, no hay que identificar la exclusión del antivirus con la de otras funciones de protección.14

Por tanto, si sigue lento tras excluir, lo que hay que pensar no es necesariamente que «el ajuste está roto». Queda margen para comprobar el destino de aplicación, la directiva de administración, otro filtro, el sistema de archivos, la red, la espera del lado de la aplicación, etc. A la inversa, aunque se acelere al excluir, ese resultado solo no llega a decir que no hay factores distintos del análisis.

Una exclusión amplia o detener una función de protección no es el primer paso de investigación. Primero registre los registros y las condiciones de reproducción y, si hace falta un cambio, confirme el riesgo con el administrador y decida el alcance, el plazo y el procedimiento para volver atrás. El trato de un falso positivo también se cubre en «Si una aplicación Windows de desarrollo propio es tratada como virus».14

6.2 Dev Drive es una opción, con condiciones, para limitar el impacto del análisis

En un lugar de archivos de desarrollo, Dev Drive también entra en consideración. El modo de rendimiento de Microsoft Defender hace asíncrono el análisis de las aperturas de archivo a las que se aplica y limita el impacto en el rendimiento dejando la protección. Microsoft lo sitúa como una alternativa más segura a la exclusión de carpetas en uso de desarrollo.1617

Sin embargo, las premisas incluyen que sea un Dev Drive de confianza, que Defender funcione como antivirus principal y que la protección en tiempo real esté habilitada. No es que el mismo comportamiento se obtenga al indicar una carpeta NTFS habitual, ni que todos los productos antivirus pasen a un análisis asíncrono. En Dev Drive también se comprueba la directiva de conexión de filtros y la compatibilidad con los productos de seguridad y de copia de seguridad necesarios.1716

7. Investigar «solo ese entorno va lento»

En la investigación se avanza en este orden: identificar la operación lenta → comparar la configuración del volumen de destino → confirmar los candidatos con mediciones adicionales. Que sea siempre lento, solo la primera vez o solo a veces no es razón para sacar el filtro de los candidatos.

7.1 Primero alinee las condiciones de reproducción

Antes de comparar, registre la versión de la aplicación, el contenido de la operación, los archivos de entrada, el destino de guardado, el usuario de ejecución y las versiones del sistema operativo y del producto de seguridad. No mezcle en la comparación archivos locales y rutas UNC, ni archivos en la nube aún no obtenidos con archivos ya obtenidos en local.

Separe también la primera vez de las siguientes. Si cambian el estado de la caché, el avance de la sincronización o la presencia de otros procesos, el mismo trabajo puede llevar un tiempo distinto. Reproduzca varias veces y haga corresponder el tiempo transcurrido de la aplicación en conjunto con la franja en la que se tomó el rastro.

7.2 Encontrar la operación lenta con Procmon

Inicie Procmon como administrador, detenga la captura una vez y borre los eventos existentes. Si acota el destino, registra solo mientras reproduce la operación necesaria y luego detiene, resulta más fácil releerlo. Las operaciones básicas también se cubren en «Guía práctica de Process Monitor».13

  1. En Options > Select Columns… muestre Duration.
  2. En Filter > Filter… (Ctrl+L) indique el nombre de proceso o el PID de destino, pulse Add y aplique. Si un proceso hijo o un servicio es quien hace el I/O real, inclúyalos también en la investigación.
  3. Inicie la captura, reproduzca el síntoma y detenga. Compruebe juntos Operation, Path, Result y Duration y, si hace falta, acote el destino con una condición de filtro de Duration o con Tools > File Summary.

No dependa del procedimiento de «haga clic en el encabezado Duration de la lista de eventos para ordenar». En un problema en el que ocurren en masa operaciones cortas, extraer solo los Duration largos deja fuera candidatos de causa, así que compruebe también el recuento. Además, CreateFile aparece no solo en la creación nueva, sino también en la apertura de un archivo existente. Lea no solo el nombre de la operación, sino el detalle.1318

El Duration de aquí es el tiempo de la operación que Procmon observó como ese evento. No es el tiempo de ejecución de un minifiltro concreto. Puede incluir esperas del sistema de archivos inferior, del dispositivo, de la red, etc. Sumar los Duration de operaciones en paralelo no tiene por qué coincidir con el tiempo transcurrido de la aplicación en conjunto.

7.3 Convertir la diferencia de fltmc en «candidatos»

Tome fltmc filters y fltmc instances en el entorno rápido y en el lento, y compare los filtros conectados al destino de guardado en cuestión. Separe, como sigue, el hecho observado de su interpretación.

Lo que se pudo observar Qué comprobar a continuación
Solo el entorno lento tiene un filtro concreto Conexión al volumen de destino, versión y directiva del producto
La misma configuración, pero solo uno es lento Destino del análisis, caché, ajustes del producto, condiciones de almacenamiento o de red
La apertura de una ruta concreta lleva tiempo Pila de la operación, obtención desde la nube o espera de red, resultado de diagnóstico del producto
Solo la primera vez, o de forma esporádica Inspección inicial, cambio del archivo, hora de sincronización o de copia de seguridad

Que el nombre de un filtro aparezca en la pila es una pista para investigar ese camino de tratamiento. Sin embargo, que el nombre figure no es, por sí solo, prueba de que ese controlador estuvo en ejecución largo rato. Si hace falta, tome también con Windows Performance Recorder/Analyzer la ejecución de CPU y las esperas, y coteje con la información de diagnóstico del producto.19

Si se sospecha de Defender, el analizador de rendimiento oficial permite comprobar los archivos y procesos con más carga de análisis. En PowerShell de administrador en un entorno compatible se inicia el registro, se reproduce el síntoma con otra operación y se detiene con Enter. Lo que sigue es un ejemplo que también crea la carpeta de destino del registro.20

$traceDirectory = Join-Path $env:TEMP 'DefenderPerformance'
New-Item -ItemType Directory -Path $traceDirectory -Force | Out-Null
$tracePath = Join-Path $traceDirectory ('scan-{0}.etl' -f (Get-Date -Format 'yyyyMMdd-HHmmss'))

# Reproducir la operación de destino durante el registro y detenerlo con Enter
New-MpPerformanceRecording -RecordTo $tracePath

# Comprobar los archivos con más impacto en el análisis
Get-MpPerformanceReport -Path $tracePath -TopFiles 10 -TopScansPerFile 5

Lo que muestra este informe es también información sobre el análisis de Defender. No pase tal cual a la lista de exclusiones las rutas que salen arriba; compruebe si se relacionan con la lentitud en la reproducción. El registro tomado puede incluir nombres de archivo o de usuario, así que preste atención también al destino de guardado y de compartición.

La comparación cambiando la configuración se hace después de reunir las evidencias hasta aquí. Probar fltmc unload en producción o reescribir la altitud para cambiar el orden no se toma como un trato habitual.

8. El cierre de la serie — el mapa de las seis entregas

En el conjunto de la serie hemos visto desde la llamada a la API de la aplicación hasta la resolución de nombres, la petición de I/O, la notificación de finalización, la caché y el sistema de archivos. El minifiltro de esta entrega está en la posición que vigila y controla las peticiones al sistema de archivos.

El punto de vista que trata cada entrega de la serie de I/O de WindowsDiagrama conceptual que relaciona el tema de cada entrega. No es un solo camino de ejecución, ni significa que todas las llamadas a API pasen por IRP, disco e IOCP.método de llamadaestructura del tratamiento de la peticiónvigilancia y control del I/O de archivossi sigue hacia abajocoordinación en I/O con caché habilitadamétodo de notificación de finalización correspondienteOperación de archivo de la aplicación2.ª entrega: I/O síncrono y asíncrono1.ª entrega: el administrador de I/O e IRP6.ª entrega: FltMgr y minifiltros5.ª entrega: estructura interna de NTFS4.ª entrega: el administrador de caché3.ª entrega: IOCP y el tratamiento tras la finalización

Figura 5: Diagrama conceptual de la relación entre las entregas de la serie. No todo el I/O pasa por todas las cajas, y hay caminos que completan sin acceso a un dispositivo ni interrupción. IOCP es también el mecanismo de notificación de finalización que se usa con el identificador y el ajuste de notificación correspondientes.

La figura no es un rastro de ejecución único. El camino cambia en Fast I/O, en peticiones que se pueden tratar en caché y en peticiones que completan sin pasar hacia abajo. No hacer corresponder uno a uno la llamada a la API, la operación del sistema de archivos, el IRP y el acceso al disco físico es el punto de atención al unir las entregas.2

9. Resumen — al cierre de la serie

Un minifiltro interviene en el I/O de archivos a través de los callbacks que prepara FltMgr. En un ida y vuelta habitual, pre va de la altitud más alta a la más baja y post en el orden inverso, pero el camino real cambia según lo registrado y según si se completa a mitad de camino.

Conocer este mecanismo permite explicar por qué en Procmon aparecen operaciones de archivo y por qué un producto de seguridad puede influir en el tiempo de acceso a archivos. Al mismo tiempo, se ve también el alcance de lo que se puede vigilar y lo que esa observación sola no dice.

Cuando «solo ese entorno va lento», acote la operación con Procmon, confirme el destino de conexión con fltmc instances y apóyelo con las funciones de diagnóstico del producto y comparaciones en condiciones alineadas. Las exclusiones y Dev Drive se eligen después, comprobando las condiciones de aplicación y el impacto en la protección. Con ese orden se puede avanzar en la investigación sin debilitar la protección solo por una conjetura.

La estructura tratada en la serie no sirve para afirmar una sola causa, sino como un mapa para decidir qué medir a continuación. Pensar por separado qué puede ocurrir bajo una línea de la aplicación es el primer paso para poner un fallo o un problema de rendimiento en una forma que se pueda reproducir y explicar.

Artículos relacionados

Áreas de consultoría relacionadas

En KomuraSoft LLC investigamos problemas de rendimiento y fallos de aplicaciones de negocio de Windows del tipo «solo en el PC del cliente las operaciones de archivo van lentas» o «el comportamiento cambió al introducir un producto de seguridad». También es objeto de investigación la etapa en la que no se sabe si la causa es un filtro, la aplicación, el sistema de archivos o la red.

Al ponerse en contacto, indique, en la medida en que se sepa, la operación que se vuelve lenta, el entorno en el que ocurre y en el que no, si se usa local, una carpeta compartida o la nube, y el producto de seguridad instalado. El modo de compartir registros o archivos que contengan información confidencial, consúltelo primero.

Referencias

  1. Microsoft Learn, About file system filter drivers. Sobre el papel y los usos de los filtros del sistema de archivos. ↩ ↩2

  2. Microsoft Learn, Filter Manager Concepts. Sobre FltMgr, las instancias, el orden pre/post, las operaciones de destino y la coexistencia con filtros heredados. ↩ ↩2 ↩3 ↩4 ↩5

  3. Microsoft Learn, Advantages of the Filter Manager Model. Sobre las ventajas del modelo de minifiltro y el mecanismo de tratar operaciones seleccionadas. ↩ ↩2 ↩3

  4. Microsoft Learn, PFLT_PRE_OPERATION_CALLBACK. Sobre los valores de retorno del callback pre y las restricciones de cada uno. ↩ ↩2

  5. Microsoft Learn, Processing I/O Operations. Sobre dejar en espera y reanudar el I/O, y la consideración del contexto de ejecución. ↩ ↩2

  6. Microsoft Learn, FAST_IO_DISPATCH structure. Sobre el camino de tratamiento de Fast I/O, incluido el modelo heredado. ↩

  7. Microsoft Learn, Load order groups and altitudes for minifilter drivers. Sobre la posición relativa, la definición de instancia, las bandas de números por uso y las altitudes decimales. ↩ ↩2 ↩3

  8. Microsoft Learn, Request a Filter Altitude Identifier. Sobre el método de solicitud, los datos necesarios y el plazo de tramitación. ↩

  9. Microsoft Learn, Blocking legacy file system filter drivers. Sobre las columnas de salida de fltmc y la indicación Legacy de la columna Frame. ↩

  10. Microsoft Learn, Tools for minifilter development and testing. Sobre la enumeración de filtros, instancias y volúmenes con fltmc y otras herramientas. ↩ ↩2

  11. Microsoft Learn, Allocated altitudes. Sobre la lista pública de nombres de filtro y altitudes asignadas. ↩ ↩2

  12. Microsoft Learn, Cloud Files API. Sobre la base de la sincronización en la nube que usa marcadores de posición. ↩

  13. Microsoft Learn, Process Monitor - Sysinternals. Sobre la vigilancia del sistema de archivos, el Registro, procesos y subprocesos, y la visualización de filtros y de la pila. ↩ ↩2 ↩3

  14. Microsoft Learn, Configure custom exclusions for Microsoft Defender Antivirus. Sobre el destino de las exclusiones y el impacto en la protección. ↩ ↩2 ↩3

  15. Microsoft Learn, FltCancelFileOpen. Sobre la cancelación de la apertura en post-create y la restricción de que no se deshacen los cambios del archivo. ↩

  16. Microsoft Learn, Set up a Dev Drive on Windows 11. Sobre el uso de Dev Drive, el ajuste de confianza, la conexión de filtros y las precauciones de seguridad. ↩ ↩2

  17. Microsoft Learn, Protect Dev Drive using performance mode. Sobre el Dev Drive de confianza, las condiciones de funcionamiento de Defender y el análisis asíncrono. ↩ ↩2

  18. Microsoft Learn, CreateFileW. Sobre el papel de la API, que incluye la apertura de un archivo existente y la creación nueva. ↩

  19. Microsoft Learn, Windows Performance Recorder. Sobre el registro del comportamiento del sistema y de las aplicaciones basado en ETW. ↩

  20. Microsoft Learn, Performance analyzer for Microsoft Defender Antivirus. Sobre el registro del análisis y el análisis de la carga por archivo y por proceso. ↩

Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.

Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.

El artículo está directamente relacionado con los siguientes servicios.

Preguntas frecuentes

Preguntas habituales en las consultas sobre el tema del artículo.

¿En qué se diferencian un controlador de filtro del sistema de archivos y un minifiltro?
Un controlador de filtro del sistema de archivos es el término general para un controlador que vigila o controla el I/O de archivos. Un minifiltro es una de las formas de implementarlo: registra callbacks por operación en el Filter Manager (FltMgr) de Windows. La diferencia principal respecto al modelo heredado es que FltMgr se ocupa del trabajo común, como la conexión a la pila y el tratamiento de la finalización. La posición relativa entre minifiltros la decide la altitud. La descarga en caliente solo es posible si ese controlador la admite y permite que se le retire.
¿El antivirus analiza todos los accesos a archivos cada vez?
No necesariamente. Un minifiltro se llama según condiciones como los volúmenes a los que está conectado y las operaciones que registró. Qué analiza a partir de ahí depende de la directiva del producto, de si el archivo ha cambiado, de las exclusiones, etc. Tener un mecanismo que vigila el I/O de archivos no es lo mismo que volver a analizar el archivo entero en cada acceso.
¿Una exclusión del antivirus es un ajuste que retira el controlador de filtro?
Por lo general, no. Es un ajuste que omite, para el destino excluido, el análisis al que se aplica esa configuración. Tampoco desactiva de golpe el EDR, la copia de seguridad o el cifrado de otro fabricante. Lo que cubre una exclusión varía según el producto y la función de protección, y una exclusión amplia de carpeta debilita la protección. En una investigación de rendimiento, mida primero y cambie la configuración solo en el alcance mínimo acordado con el administrador.
¿Process Monitor basta por sí solo para identificar un controlador de filtro lento?
Procmon ayuda a encontrar operaciones lentas y las rutas implicadas, pero Duration no es el tiempo de proceso de un minifiltro concreto. Que el nombre de un controlador aparezca en una pila tampoco basta para afirmar la causa. Confirme la conexión al volumen en cuestión con fltmc y apóyelo con las funciones de diagnóstico del producto, rastros adicionales y comparaciones en condiciones alineadas. El registro de Procmon tampoco es un recuento exhaustivo de todos los accesos al disco físico.
Si la compilación es lenta, ¿moverla a un Dev Drive mejora siempre?
No siempre. El modo de rendimiento de Microsoft Defender tiene premisas como un Dev Drive de confianza, que Defender sea el antivirus principal y que la protección en tiempo real esté habilitada. Hace asíncrono el análisis de las aperturas de archivo a las que se aplica para limitar el impacto, pero no es una función que resuelva el comportamiento de productos de otros fabricantes ni otros cuellos de botella como la CPU o la red.

Perfil del autor

Página de presentación del autor del artículo.

Go Komura

Representante de KomuraSoft LLC

Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.

Volver al blog