다음을 통해 공유


FsRtlExitFileSystem 함수

FsRtlExitFileSystem 매크로를 사용하면 FsRtlEnterFileSystem에 대한 이전 호출이 비활성화된 일반 커널 모드 APC를 다시 전달할 수 있습니다.

구문

VOID FsRtlExitFileSystem(
   VOID 
);

매개 변수

없음

반환 값

이 함수는 값을 반환하지 않습니다.

설명

모든 파일 시스템 드라이버 진입점 루틴은 파일 I/O 요청을 수행하는 데 필요한 리소스를 획득하기 직전에 FsRtlEnterFileSystem 을 호출하고 그 직후 FsRtlExitFileSystem 을 호출해야 합니다. 이렇게 하면 실행하는 동안 루틴을 일시 중단할 수 없으므로 다른 파일 I/O 요청을 차단할 수 있습니다.

FsRtlEnterFileSystem에 대한 모든 성공적인 호출은 FsRtlExitFileSystem에 대한 후속 호출과 일치해야 합니다.

로컬 파일 시스템 및 네트워크 리디렉터와 달리 파일 시스템 필터 드라이버는 IoCallDriver 호출에서 일반 커널 APC(FsRtlEnterFileSystem 또는 KeEnterCriticalRegion을 호출하거나 IRQL APC_LEVEL 발생)의 배달을 사용하지 않도록 설정해서는 안 됩니다.

파일 시스템 필터 드라이버가 일반 커널 APC를 사용하지 않도록 설정해야 하는 유일한 시간은 ExAcquireResourceExclusive, ExAcquireResourceExclusiveLite, ExAcquireResourceShared, ExAcquireResourceSharedLite 또는 ExAcquireSharedStarveExclusive를 호출하기 바로 전입니다. 필터 드라이버가 ExReleaseResource 또는 ExReleaseResourceLite를 호출한 후 일반 커널 APC의 배달을 즉시 다시 사용하도록 설정해야 합니다. FsRtlEnterFileSystem 대신 미니필터 드라이버는 FltAcquireResourceExclusive, FltAcquireResourceSharedFltReleaseResource 루틴을 사용하여 리소스를 획득하고 해제할 때 APC를 올바르게 처리할 수 있습니다.

ExAcquireSharedWaitForExclusive를 호출하기 전에 일반 커널 APC를 사용하지 않도록 설정할 필요는 없습니다. 이 루틴은 일반 및 특수 커널 APC를 모두 사용하지 않도록 설정하는 KeRaiseIrqlToDpcLevel을 호출하기 때문입니다. 이러한 루틴은 일반 커널 APC를 사용하지 않도록 설정하기 때문에 ExAcquireFastMutex 또는 ExAcquireResourceExclusive를 호출하기 전에 이 작업을 수행할 필요가 없습니다.

요구 사항

요구 사항 유형 요구 사항
헤더 Ntifs.h ( Ntifs.h 포함)
IRQL <= APC_LEVEL

추가 정보

ExAcquireFastMutex

ExAcquireResourceExclusive

ExAcquireResourceExclusiveLite

ExAcquireResourceShared

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExAcquireSharedStarveExclusive

ExReleaseResource

ExReleaseResourceLite

ExTryToAcquireFastMutex

FltAcquireResourceExclusive

FltAcquireResourceShared

FltReleaseResource

FsRtlEnterFileSystem

IoCallDriver

KeLeaveCriticalRegion

KeRaiseIrqlToDpcLevel