FsRtlEnterFileSystem 함수
FsRtlEnterFileSystem 매크로는 APC(일반 커널 모드 비동기 프로시저 호출)의 배달을 일시적으로 사용하지 않도록 설정합니다. 특수 커널 모드 APC는 여전히 배달됩니다.
구문
VOID FsRtlEnterFileSystem(
VOID
);
매개 변수
없음
반환 값
이 함수는 값을 반환하지 않습니다.
설명
모든 파일 시스템 드라이버 진입점 루틴은 파일 I/O 요청을 수행하는 데 필요한 리소스를 획득하기 직전에 FsRtlEnterFileSystem 을 호출하고 그 직후 FsRtlExitFileSystem 을 호출해야 합니다. 이렇게 하면 실행 중 루틴을 일시 중단할 수 없으므로 다른 파일 I/O 요청을 차단할 수 있습니다.
FsRtlEnterFileSystem에 대한 모든 성공적인 호출은 FsRtlExitFileSystem에 대한 후속 호출과 일치해야 합니다.
파일 시스템 필터 드라이버는 FsRtlExitFileSystem 또는 KeLeaveCriticalRegion이 동일한 디스패치 루틴에 있는 경우에만 IoCallDriver 이전에 FsRtlEnterFileSystem 또는 KeEnterCriticalRegion을 호출하여 일반 커널 APC 배달을 사용하지 않도록 설정할 수 있습니다. IoCallDriver 이전에 FsRtlEnterFileSystem 또는 KeEnterCriticalRegion을 호출한 다음 IRP의 완료 루틴에서 FsRtlExitFileSystem 또는 KeLeaveCriticalRegion을 호출하면 안 됩니다. 드라이버 검증 도구에는 이 조건을 catch하는 데 도움이 되는 규칙이 있습니다.
파일 시스템 필터 드라이버는 리소스를 획득하기 전에 일반 커널 APC를 사용하지 않도록 설정해야 합니다. 파일 시스템 필터 드라이버는 다음 루틴을 사용하여 리소스를 획득합니다.
- ExAcquireResourceExclusive
- ExAcquireResourceExclusiveLite
- ExAcquireResourceShared
- ExAcquireResourceSharedLite
- ExAcquireSharedStarveExclusive
- ExAcquireSharedWaitForExclusive
FsRtlEnterFileSystem의 대안으로 미니필터 드라이버는 FltAcquireResourceExclusive, FltAcquireResourceShared 및 FltReleaseResource 루틴을 사용할 수 있습니다. 이 루틴은 리소스를 획득하고 해제할 때 APC를 제대로 처리합니다.
요구 사항
요구 사항 유형 | 요구 사항 |
---|---|
헤더 | Ntifs.h ( Ntifs.h 포함) |
IRQL | <= APC_LEVEL |
추가 정보
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive