Compartir a través de


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

ExAcquireFastMutex

ExAcquireResourceExclusive

ExAcquireResourceExclusiveLite

ExAcquireResourceShared

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExAcquireSharedStarveExclusive

ExReleaseResource

ExReleaseResourceLite

ExTryToAcquireFastMutex

FltAcquireResourceExclusive

FltAcquireResourceShared

FltReleaseResource

FsRtlEnterFileSystem

IoCallDriver

KeLeaveCriticalRegion

KeRaiseIrqlToDpcLevel