Função FsRtlEnterFileSystem
A macro FsRtlEnterFileSystem desabilita temporariamente a entrega de chamadas normais de procedimento assíncrono no modo kernel (APC). ApCs especiais no modo kernel ainda são entregues.
Sintaxe
VOID FsRtlEnterFileSystem(
VOID
);
Parâmetros
Nenhum
Retornar valor
Essa função não retorna um valor.
Comentários
Cada rotina de ponto de entrada do driver do sistema de arquivos deve chamar FsRtlEnterFileSystem imediatamente antes de adquirir um recurso necessário para executar uma solicitação de E/S de arquivo e chamar FsRtlExitFileSystem imediatamente depois. Isso garante que a rotina não possa ser suspensa durante a execução e, portanto, bloqueie outras solicitações de E/S de arquivo.
Cada chamada bem-sucedida para FsRtlEnterFileSystem deve ser correspondida por uma chamada subsequente para FsRtlExitFileSystem.
Os drivers de filtro do sistema de arquivos podem desabilitar a entrega de APCs de kernel normais chamando FsRtlEnterFileSystem ou KeEnterCriticalRegion antes de IoCallDriver somente se FsRtlExitFileSystem ou KeLeaveCriticalRegion estiver na mesma rotina de expedição. Eles não devem chamar FsRtlEnterFileSystem ou KeEnterCriticalRegion antes de IoCallDriver e, em seguida, chamar FsRtlExitFileSystem ou KeLeaveCriticalRegion na rotina de conclusão do IRP. O Verificador de Driver tem uma regra para ajudar a capturar essa condição.
Os drivers de filtro do sistema de arquivos devem desabilitar APCs de kernel normais antes de adquirir qualquer recurso. Os drivers de filtro do sistema de arquivos adquirem recursos com as seguintes rotinas:
- ExAcquireResourceExclusive
- ExAcquireResourceExclusiveLite
- ExAcquireResourceShared
- ExAcquireResourceSharedLite
- ExAcquireSharedStarveExclusive
- ExAcquireSharedWaitForExclusive
Como alternativa a FsRtlEnterFileSystem, os drivers de minifiltro podem usar as rotinas FltAcquireResourceExclusive, FltAcquireResourceShared e FltReleaseResource , que lidam corretamente com APCs ao adquirir e liberar um recurso.
Requisitos
Tipo de Requisito | Requisito |
---|---|
parâmetro | Ntifs.h (inclua Ntifs.h) |
IRQL | <= APC_LEVEL |
Confira também
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive