다음을 통해 공유


사전 운용 콜백 루틴에서 빠른 I/O 작업 허용

특정 상황에서 미니필터 드라이버는 빠른 I/O 작업을 완료하는 대신 허용하지 않도록 선택할 수 있습니다. 빠른 I/O 작업을 허용하지 않는 경우 빠른 I/O 경로가 작업에 사용되지 않습니다.

I/O 작업을 완료하는 것과 마찬가지로 빠른 I/O 작업을 허용하지 않는 것은 I/O 작업을 중지하고 필터 관리자에게 반환하는 것을 의미합니다. 그러나 빠른 I/O 작업을 허용하지 않는 것은 완료와 다릅니다. 미니필터 드라이버가 I/O 관리자가 발급한 빠른 I/O 작업을 허용하지 않는 경우 I/O 관리자는 동일한 IRP 기반 작업과 동일한 작업을 재발행할 수 있습니다.

미니필터 드라이버의 사전 운용 콜백 루틴 이 빠른 I/O 작업을 허용하지 않는 경우 필터 관리자는 다음을 수행합니다.

  • 현재 미니필터 드라이버 아래의 미니필터 드라이버, 레거시 필터 또는 파일 시스템에 작업을 보내지 않습니다.

  • 미니필터 드라이버 instance 스택의 현재 미니필터 드라이버 위에 있는 미니필터 드라이버의 사후 콜백 루틴을 호출합니다.

  • 작업에 대한 현재 미니필터 드라이버의 사후 콜백 루틴(있는 경우)을 호출하지 않습니다.

미니필터 드라이버는 작업에 대한 사전 작업 콜백 루틴에서 FLT_PREOP_DISALLOW_FASTIO 반환하여 빠른 I/O 작업을 허용하지 않습니다.

필터 관리자가 이 필드를 자동으로 STATUS_FLT_DISALLOW_FAST_IO 설정하므로 사전 운용 콜백 루틴은 콜백 데이터 구조의 IoStatus.Status 필드를 설정해서는 안 됩니다.

FLT_PREOP_DISALLOW_FASTIO 빠른 I/O 작업에 대해서만 반환할 수 있습니다. 작업이 빠른 I/O 작업인지 확인하려면 FLT_IS_FASTIO_OPERATION.

미니필터 드라이버는 IRP_MJ_SHUTDOWN, IRP_MJ_VOLUME_MOUNT 또는 IRP_MJ_VOLUME_DISMOUNT 작업에 대한 FLT_PREOP_DISALLOW_FASTIO 반환할 수 없습니다.