Поделиться через


Функция FsRtlEnterFileSystem

Макрос FsRtlEnterFileSystem временно отключает доставку обычных вызовов асинхронных процедур (APC) в режиме ядра. Специальные APC в режиме ядра по-прежнему доставляются.

Синтаксис

VOID FsRtlEnterFileSystem(
   VOID
);

Параметры

None

Возвращаемое значение

Эта функция не возвращает значение.

Комментарии

Каждая подпрограмма точки входа драйвера файловой системы должна вызывать FsRtlEnterFileSystem непосредственно перед получением ресурса, необходимого для выполнения запроса ввода-вывода файла, и сразу же после этого вызвать FsRtlExitFileSystem . Это гарантирует, что подпрограмма не может быть приостановлена во время выполнения и, таким образом, блокирует другие запросы файлового ввода-вывода.

Каждый успешный вызов FsRtlEnterFileSystem должен соответствовать последующему вызову FsRtlExitFileSystem.

Драйверы фильтров файловой системы могут отключать доставку обычных APC ядра, вызывая FsRtlEnterFileSystem или KeEnterCriticalRegion до IoCallDriver , только если FsRtlExitFileSystem или KeLeaveCriticalRegion находится в той же процедуре диспетчеризации. Они не должны вызывать FsRtlEnterFileSystem или KeEnterCriticalRegion до IoCallDriver , а затем вызывать FsRtlExitFileSystem или KeLeaveCriticalRegion в процедуре завершения IRP. Средство проверки драйверов имеет правило, которое помогает перехватывать это условие.

Драйверы фильтров файловой системы должны отключать обычные APC ядра перед получением какого-либо ресурса. Драйверы фильтров файловой системы получают ресурсы со следующими подпрограммами:

В качестве альтернативы FsRtlEnterFileSystem драйверы минифильтра могут использовать подпрограммы FltAcquireResourceExclusive, FltAcquireResourceShared и FltReleaseResource , которые правильно обрабатывают APC при получении и освобождении ресурса.

Требования

Тип требования Требование
Заголовок Ntifs.h (включая Ntifs.h)
IRQL <= APC_LEVEL

См. также раздел

ExAcquireResourceExclusive

ExAcquireResourceExclusiveLite

ExAcquireResourceShared

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExAcquireSharedStarveExclusive

ExReleaseResource

ExReleaseResourceLite

ExTryToAcquireFastMutex

FltAcquireResourceExclusive

FltAcquireResourceShared

FltReleaseResource

FsRtlExitFileSystem

IoCallDriver

KeEnterCriticalRegion

KeRaiseIrqlToDpcLevel