Función FsRtlEnterFileSystem
La macro FsRtlEnterFileSystem deshabilita temporalmente la entrega de llamadas de procedimiento asincrónico (APC) del modo kernel normal. Las API de modo kernel especiales se siguen entregando.
Sintaxis
VOID FsRtlEnterFileSystem(
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.
Los controladores de filtro del sistema de archivos pueden deshabilitar la entrega de las API de kernel normales llamando a FsRtlEnterFileSystem o KeEnterCriticalRegion antes de IoCallDriver solo si FsRtlExitFileSystem o KeLeaveCriticalRegion se encuentra en la misma rutina de envío. No deben llamar a FsRtlEnterFileSystem o KeEnterCriticalRegion antes de IoCallDriver y, a continuación, llamar a FsRtlExitFileSystem o KeLeaveCriticalRegion en la rutina de finalización del IRP. El Comprobador de controladores tiene una regla para ayudar a detectar esta condición.
Los controladores de filtro del sistema de archivos deben deshabilitar las API de kernel normales antes de adquirir cualquier recurso. Los controladores de filtro del sistema de archivos adquieren recursos con las siguientes rutinas:
- ExAcquireResourceExclusive
- ExAcquireResourceExclusiveLite
- ExAcquireResourceShared
- ExAcquireResourceSharedLite
- ExAcquireSharedStarveExclusive
- ExAcquireSharedWaitForExclusive
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.
Requisitos
Tipo de requisito | Requisito |
---|---|
Encabezado | Ntifs.h (incluya Ntifs.h) |
IRQL | <= APC_LEVEL |
Consulte también
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive