Share via


사전 작업 및 사후 콜백 루틴 작성

DriverEntry 루틴에서 미니필터 드라이버는 필터링해야 하는 각 I/O 작업 유형에 대해 최대 하나의 사전 운용 콜백 루틴과 최대 하나의 사후 콜백 루틴을 등록할 수 있습니다.

레거시 파일 시스템 필터 드라이버와 달리 미니필터 드라이버는 필터링할 I/O 작업 유형을 선택할 수 있습니다. 미니필터 드라이버는 사후 콜백을 등록하지 않고 지정된 유형의 I/O 작업에 대한 사전 운용 콜백 루틴을 등록할 수 있으며 그 반대의 경우도 마찬가지입니다. 미니필터 드라이버는 사전 운용 또는 사후 콜백 루틴을 등록한 I/O 작업만 수신합니다.

사전 운용 콜백 루틴은 레거시 필터 드라이버 모델의 디스패치 루틴과 유사합니다. 필터 관리자는 I/O 작업을 처리할 때 이 유형의 I/O 작업에 대해 등록한 미니필터 드라이버 instance 스택에 있는 각 미니필터 드라이버의 사전 운용 콜백 루틴을 호출합니다. 스택에서 가장 높은 미니필터 드라이버( 즉, instance 고도가 가장 높은 드라이버)가 먼저 작업을 수신합니다. 해당 미니필터 드라이버가 작업 처리를 마치면 필터 관리자에 작업을 반환한 다음, 작업을 다음으로 높은 미니필터 드라이버에 전달합니다. 미니필터 드라이버 instance 스택의 모든 미니필터 드라이버가 I/O 작업을 처리한 경우(미니필터 드라이버가 I/O 작업을 완료하지 않는 한) 필터 관리자는 레거시 필터 및 파일 시스템에 작업을 보냅니다.

사후 콜백 루틴은 레거시 필터 드라이버 모델의 완료 루틴과 유사합니다. I/O 작업에 대한 완료 처리는 I/O 관리자가 작업에 대한 완료 루틴을 등록한 파일 시스템 및 레거시 필터에 작업을 전달하면 시작됩니다. 이러한 완료 루틴이 완료되면 필터 관리자는 작업에 대한 완료 처리를 수행합니다. 그런 다음 필터 관리자는 이 유형의 I/O 작업에 대해 등록한 미니필터 드라이버 instance 스택에 있는 각 미니필터 드라이버의 사후 콜백 루틴을 호출합니다. 스택의 아래쪽 미니필터 드라이버( 즉, instance 가장 낮은 고도를 가진 드라이버)가 먼저 작업을 수신합니다. 해당 미니필터 드라이버가 작업 처리를 완료하면 필터 관리자로 반환한 다음, 작업을 다음으로 가장 낮은 미니필터 드라이버에 전달하는 등의 작업을 수행합니다.

이 단원에는 다음이 포함됩니다.

사전 작업 및 사후 콜백 루틴 등록

미니필터 드라이버에서 I/O 작업 필터링

사전 운용 콜백 루틴 작성

사후 콜백 루틴 작성

I/O 작업에 대한 매개 변수 수정

I/O 작업에 대한 버퍼링 메서드 결정

I/O 작업에 대한 사용자 버퍼 액세스