FSCTL_SET_PURGE_FAILURE_MODE IOCTL (ntifs.h)
El Administrador de filtros usa el código de control FSCTL_SET_PURGE_FAILURE_MODE para sincronizar las operaciones durante la duración de una sección creada para el examen de datos. Los filtros nunca deben emitir este código de control.
Código principal
Búfer de entrada
Estructura SET_PURGE_FAILURE_MODE_INPUT .
Longitud del búfer de entrada
Tamaño en bytes de SET_PURGE_FAILURE_MODE_INPUT.
Búfer de salida
None
Longitud del búfer de salida
N/D
Búfer de entrada y salida
None
Longitud del búfer de entrada y salida
N/D
Bloque de estado
Reservado para uso del sistema.
Comentarios
El Administrador de filtros usa este código de control con IRP_MJ_FILE_SYSTEM_CONTROL llamadas para entre corchetes la duración de la sección. Estas llamadas sirven para indicar a un sistema de archivos (y, rara vez, minifiltros) que se comporten de la siguiente manera si no puede purgar las memorias caché del Administrador de caché.
Para cada FSCTL_SET_PURGE_FAILURE_MODE emitido con SET_PURGE_FAILURE_MODE_ENABLED establecido, se emitirá un FSCTL_SET_PURGE_FAILURE_MODE con el conjunto de SET_PURGE_FAILURE_MODE_DISABLED. Aunque hay un SET_PURGE_FAILURE_MODE_ENABLED pendiente, el Administrador de filtros responde de la siguiente manera a ciertos estados de error para determinados tipos de operaciones (consulte la tabla siguiente):
• Pends la operación, agilizando el cierre de la sección (siempre que sea posible) • Vuelve a poner en cola la operación al minifiltro o al sistema de archivos que emitió el error.
Para desencadenar el Administrador de filtros para responder en consecuencia, el sistema de archivos (o filtro) responde a un error al purgar una sección de las siguientes maneras:
Operación | Estado de devolución requerido |
---|---|
IRP_MJ_CREATE (operaciones destructivas) | STATUS_USER_MAPPED_FILE |
IRP_MJ_WRITE (solo operaciones sin búfer) | STATUS_PURGE_FAILED |
IRP_MJ_SET_INFORMATION | STATUS_PURGE_FAILED |
Estos estados solo deben devolverse mientras haya un SET_PURGE_FAILURE_MODE_ENABLED pendiente (sin equilibrio SET_PURGE_FAILURE_MODE_DISABLED recibido). En todos los demás casos, los estados de error se devolverán a la aplicación.
Para cualquier otra operación (por ejemplo, una escritura almacenada en caché), si el sistema de archivos (o filtro) no puede purgar una sección mientras hay un FSCTL_SET_PURGE_FAILURE_MODE pendiente, es responsable de la operación pendiente y de volver a emitirla cuando el recuento de FSCTL_SET_PURGE_FAILURE_MODE pendientes cae a cero. Si el sistema de archivos (o filtro) simplemente devuelve un estado de error (incluidos los enumerados anteriormente), ese estado se devolverá a la aplicación.
El estado del error se procesa por completo en el Administrador de filtros, como es la puesta en cola de la operación con errores. Esto significa que ninguno de ellos es visible para los filtros, lo que tiene las siguientes implicaciones importantes:
- Las herramientas de supervisión del sistema de archivos como El Monitor de procesos no notificarán estas operaciones.
- Si se necesita un filtro superior para que la operación reedida se realice correctamente, se producirá un error en la operación requeued. En esta situación, se requieren escritores de filtros para asegurarse de que este segundo filtro devuelve el estado de error.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 |
Encabezado | ntifs.h |