필터 관리자 개념
필터 관리자(FltMgr.sys)는 파일 시스템 필터 드라이버에 일반적으로 필요한 기능을 구현하고 노출하는 시스템 제공 커널 모드 드라이버입니다. 파일 시스템 필터 개발자는 FltMgr의 기능을 사용하여 레거시 파일 시스템 필터 드라이버보다 개발이 더 간단한 미니 필터 드라이버를 작성할 수 있습니다. 결과적으로 개발 프로세스가 단축되고 품질이 높고 강력한 드라이버가 생성됩니다.
FltMgr 은 Windows와 함께 설치되지만 미니 필터 드라이버가 로드될 때만 활성화됩니다. 대상 볼륨의 파일 시스템 스택에 연결됩니다. 미니 필터 드라이버는 미니 필터 드라이버가 필터링하도록 선택한 I/O 작업에 대해 FltMgr에 등록하여 파일 시스템 스택에 간접적으로 연결합니다.
미니 필터는 특정 순서로 연결됩니다. 운영 체제는 부하 순서 그룹 및 고도별로 첨부 파일의 순서를 결정합니다. 특정 볼륨의 특정 고도에서 미니 필터 드라이버의 첨부 파일을 미니 필터 드라이버의 인스턴스라고 합니다.
미니 필터의 고도:
- 미니 필터 드라이버의 인스턴스가 항상 다른 미니 필터 드라이버 인스턴스를 기준으로 적절한 위치에 로드되는지 확인합니다.
- FltMgr이 I/O를 처리하기 위해 미니 필터 드라이버를 호출하는 순서를 결정합니다.
다음 그림에서는 필터 관리자와 세 개의 미니 필터 드라이버가 있는 간소화된 I/O 스택을 보여줍니다.
미니 필터 드라이버는 IRP 기반 I/O 작업과 빠른 I/O 및 FSFilter(파일 시스템 필터) 콜백 작업을 필터링할 수 있습니다. 필터링하도록 선택한 각 I/O 작업에 대해 미니 필터는 사전 운용 콜백 루틴, 사후 콜백 루틴 또는 둘 다를 등록할 수 있습니다. FltMgr이 I/O 작업을 처리할 때 해당 작업에 등록된 각 미니 필터 드라이버에 대한 적절한 콜백 루틴을 호출합니다. 해당 콜백 루틴이 반환 되면 FltMgr 은 작업에 등록된 다음 미니 필터 드라이버에 적절한 콜백 루틴을 호출합니다.
예를 들어 이 그림에 있는 세 개의 미니 필터 드라이버가 모두 동일한 I/O 작업에 등록되어 있다고 가정합니다. 이 상황에서는 다음을 수행합니다.
- FltMgr은 I/O 작업을 수신할 때 가장 높은 고도에서 가장 낮은(A, B, C) 순서로 미니 필터 사전 운용 콜백 루틴을 호출합니다. 그런 다음 FltMgr 은 추가 처리를 위해 I/O 요청을 다음 하위 드라이버로 전달합니다.
- FltMgr이 완료를 위해 I/O 요청을 받으면 각 미니 필터 드라이버의 작동 후 콜백 루틴을 최저에서 최고(C, B, A)로 역순으로 호출합니다.
레거시 필터 드라이버 와의 상호 운용성을 위해 FltMgr 은 둘 이상의 위치에 있는 파일 시스템 I/O 스택에 필터 디바이스 개체를 연결할 수 있습니다. FltMgr의 각 필터 디바이스 개체를 프레임이라고 합니다. 레거시 필터 드라이버의 관점에서 각 필터 관리자 프레임은 또 다른 레거시 필터 드라이버일 뿐입니다.
각 필터 관리자 프레임은 고도의 범위를 나타냅니다. FlgMgr은 기존 프레임을 조정하거나 새 프레임을 만들어 미니 필터 드라이버가 올바른 위치에 연결할 수 있도록 할 수 있습니다.
FltMgr 은 연결된 두 레거시 필터 사이에 필터 관리자 프레임이 이미 없으면 미니 필터를 연결할 수 없습니다. 미니 필터를 레거시 필터 위에 연결하려는 경우 두 번째 연결된 레거시 필터의 존재 여부에 따라 아래에 연결할 수 있습니다. 레거시 필터 아래에 연결하려는 미니 필터를 대신 해당 레거시 필터 위에 연결할 수 있습니다.
Important
항상 레거시 필터와 미니 필터의 상호 운용성을 확인하거나 레거시 필터를 미니 필터로 바꾸는 것이 좋습니다. 자세한 내용은 레거시 필터 드라이버 포팅에 대한 지침을 참조 하세요.
미니 필터 드라이버가 언로드되고 다시 로드되는 경우 시스템은 언로드된 동일한 프레임의 동일한 고도에서 다시 로드합니다.
다음 그림에서는 두 개의 필터 관리자 프레임, 미니 필터 드라이버 인스턴스 및 레거시 필터 드라이버가 있는 간소화된 I/O 스택을 보여 줍니다.