Función FsRtlExitFileSystem
La macro FsRtlExitFileSystem vuelve a habilitar la entrega de las API normales en modo kernel que una llamada anterior a FsRtlEnterFileSystem está deshabilitada.
Sintaxis
VOID FsRtlExitFileSystem(
VOID
);
Parámetros
None
Valor devuelto
Esta función no devuelve un valor.
Comentarios
Cada rutina de punto de entrada del controlador del sistema de archivos debe llamar a FsRtlEnterFileSystem inmediatamente antes de adquirir un recurso necesario para realizar una solicitud de E/S de archivo y llamar a FsRtlExitFileSystem inmediatamente después. Esto garantiza que la rutina no se puede suspender mientras se ejecuta y, por tanto, bloquea otras solicitudes de E/S de archivos.
Cada llamada correcta a FsRtlEnterFileSystem debe coincidir con una llamada posterior a FsRtlExitFileSystem.
A diferencia de los sistemas de archivos locales y los redireccionadores de red, los controladores de filtro del sistema de archivos nunca deben deshabilitar la entrega de LAS API de kernel normales (mediante una llamada a FsRtlEnterFileSystem o KeEnterCriticalRegion o mediante la generación a IRQL APC_LEVEL) a través de una llamada a IoCallDriver.
La única vez que un controlador de filtro del sistema de archivos debe deshabilitar las API de kernel normales es inmediatamente antes de llamar a ExAcquireResourceExclusive, ExAcquireResourceExclusiveLite, ExAcquireResourceShared,ExAcquireResourceSharedLite o ExAcquireSharedStarveExclusive. Después de que el controlador de filtro llame a ExReleaseResource o ExReleaseResourceLite, debe volver a habilitar inmediatamente la entrega de las API de kernel normales. Como alternativa a FsRtlEnterFileSystem, los controladores de minifiltro pueden usar las rutinas FltAcquireResourceExclusive, FltAcquireResourceShared y FltReleaseResource , que controlan correctamente las API al adquirir y liberar un recurso.
No es necesario deshabilitar las API de kernel normales antes de llamar a ExAcquireSharedWaitForExclusive porque esta rutina llama a KeRaiseIrqlToDpcLevel, que deshabilita las API de kernel normales y especiales. Tampoco es necesario hacerlo antes de llamar a ExAcquireFastMutex o ExAcquireResourceExclusive, ya que estas rutinas deshabilitan las API normales del kernel.
Requisitos
Tipo de requisito | Requisito |
---|---|
Encabezado | Ntifs.h (incluya Ntifs.h) |
IRQL | <= APC_LEVEL |
Consulte también
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive