작업 후 콜백 루틴에서 I/O 작업 보류 중
미니필터 드라이버의 사후 콜백 루틴 은 다음 단계를 수행하여 I/O 작업을 보류할 수 있습니다.
FltAllocateDeferredIoWorkItem을 호출하여 I/O 작업에 대한 작업 항목을 할당합니다.
FltQueueDeferredIoWorkItem을 호출하여 I/O 작업을 시스템 작업 큐에 게시합니다.
FLT_POSTOP_MORE_PROCESSING_REQUIRED 반환합니다.
다음 조건이 충족되면 FltQueueDeferredIoWorkItem 에 대한 호출이 실패합니다.
작업은 IRP 기반 I/O 작업이 아닙니다.
작업은 페이징 I/O 작업입니다.
현재 스레드의 TopLevelIrp 필드가 NULL이 아닙니다. (이 필드의 값을 찾는 방법에 대한 자세한 내용은 IoGetTopLevelIrp을 참조하세요.)
I/O 작업의 대상 instance 삭제되고 있습니다. 필터 관리자는 Flags 입력 매개 변수의 FLTFL_POST_OPERATION_DRAINING 플래그를 사후 작업 콜백 루틴으로 설정하여 이 상황을 나타냅니다.
이 오류를 처리하려면 미니필터 드라이버를 준비해야 합니다. 미니필터 드라이버가 이러한 오류를 처리할 수 없는 경우 I/O 작업을 보류 하는 대신 FLT_PREOP_SYNCHRONIZE 반환 에 설명된 기술을 사용하는 것이 좋습니다.
미니필터 드라이버의 사후 콜백 루틴이 FLT_POSTOP_MORE_PROCESSING_REQUIRED 반환되면 미니필터 드라이버의 작업 루틴이 FltCompletePendedPostOperation 을 호출하여 작업 제어를 필터 관리자에 반환할 때까지 필터 관리자는 I/O 작업에 대한 추가 완료 처리를 수행하지 않습니다. 작업 루틴이 작업에 대한 콜백 데이터 구조의 IoStatus.Status 필드에 오류 NTSTATUS 값을 설정하더라도 필터 관리자는 이 상황에서 추가 처리를 수행하지 않습니다.
I/O 작업에 대한 완료 처리를 큐에서 제거하고 수행하는 작업 루틴은 FltCompletePendedPostOperation 을 호출하여 작업 제어를 필터 관리자에 반환해야 합니다.