필터 관리자 개념

필터 관리자(FltMgr.sys)는 파일 시스템 필터 드라이버에 일반적으로 필요한 기능을 구현하고 노출하는 시스템 제공 커널 모드 드라이버입니다. 타사 파일 시스템 필터 개발자는 FltMgr의 기능을 사용하여 레거시 파일 시스템 필터 드라이버보다 개발이 더 간단한 "미니필터" 드라이버를 작성할 수 있습니다. 최종 결과는 단축된 개발 프로세스와 더 높은 품질의 더 강력한 드라이버입니다.

FltMgr 은 Windows와 함께 설치되지만 미니필터 드라이버가 로드될 때만 활성화됩니다. 대상 볼륨의 파일 시스템 스택에 연결됩니다. 미니필터 드라이버는 미니필터 드라이버가 필터링하도록 선택한 I/O 작업에 대해 FltMgr 에 등록하여 파일 시스템 스택에 간접적으로 연결합니다.

미니필터는 특정 순서로 연결됩니다. 운영 체제는 부하 순서 그룹 및 고도별 첨부 파일 순서를 결정합니다. 특정 볼륨의 특정 고도에서 미니필터 드라이버의 첨부 파일을 미니필터 드라이버의 instance라고 합니다.

미니필터의 고도:

  • 미니필터 드라이버의 instance 항상 다른 미니필터 드라이버 인스턴스를 기준으로 적절한 위치에 로드되도록 합니다.
  • FltMgr이 I/O를 처리하기 위해 미니필터 드라이버를 호출하는 순서를 결정합니다.

다음 그림에서는 필터 관리자와 3개의 미니필터 드라이버가 있는 간소화된 I/O 스택을 보여줍니다.

필터 관리자와 3개의 미니필터 드라이버가 있는 간소화된 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 은 이미 필터 관리자 프레임이 없는 한 연결된 두 레거시 필터 사이에 미니필터를 연결할 수 없습니다. 미니필터가 레거시 필터 위에 연결되도록 의도된 경우 두 번째 연결된 레거시 필터의 존재에 따라 아래에 연결할 수 있습니다. 레거시 필터 아래에 연결하려는 미니 필터는 대신 해당 레거시 필터 위에 연결할 수 있습니다.

중요

항상 레거시 필터와 미니필터의 상호 운용성을 확인하거나 레거시 필터를 미니필터로 바꾸는 것이 좋습니다. 자세한 내용은 레거시 필터 드라이버 포팅에 대한 지침을 참조하세요.

미니필터 드라이버가 언로드되고 다시 로드되는 경우 언로드된 동일한 프레임의 동일한 고도에서 다시 로드됩니다.

다음 그림에서는 두 개의 필터 관리자 프레임, 미니필터 드라이버 인스턴스 및 레거시 필터 드라이버가 있는 간소화된 I/O 스택을 보여 줍니다.

두 개의 필터 관리자 프레임, 미니필터 드라이버 인스턴스 및 레거시 필터 드라이버가 있는 간소화된 i/o 스택을 보여 주는 다이어그램