다음을 통해 공유


사전 작업 콜백 루틴에서 I/O 작업 완료

I/O 작업을 완료 하려면 작업에 대한 처리를 중지하고 최종 NTSTATUS 값을 할당하고 필터 관리자에 반환하는 것을 의미합니다.

미니필터 드라이버가 I/O 작업을 완료하면 필터 관리자는 다음을 수행합니다.

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

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

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

미니필터 드라이버의 사전 운용 콜백 루틴 은 다음 단계를 수행하여 I/O 작업을 완료합니다.

  1. 콜백 데이터 구조의 IoStatus.Status 필드를 작업의 최종 NTSTATUS 값으로 설정합니다.

  2. FLT_PREOP_COMPLETE 반환합니다.

I/O 작업을 완료하는 사전 운용 콜백 루틴은 CompletionContext 출력 매개 변수에서 NULL이 아닌 완료 컨텍스트를 설정할 수 없습니다.

미니필터 드라이버는 다음 단계를 수행하여 이전에 보류된 I/O 작업에 대한 작업 루틴에서 작업을 완료할 수도 있습니다.

  1. 콜백 데이터 구조의 IoStatus.Status 필드를 작업의 최종 NTSTATUS 값으로 설정합니다.

  2. 작업 루틴이 FltCompletePendedPreOperation을 호출할 때 CallbackStatus 매개 변수에 FLT_PREOP_COMPLETE 전달합니다.

I/O 작업을 완료할 때 미니필터 드라이버는 콜백 데이터 구조의 IoStatus.Status 필드를 작업의 최종 NTSTATUS 값으로 설정해야 하지만 이 NTSTATUS 값은 STATUS_PENDING 또는 STATUS_FLT_DISALLOW_FAST_IO 수 없습니다. 정리 또는 닫기 작업의 경우 필드를 STATUS_SUCCESS 합니다. 이러한 작업은 다른 NTSTATUS 값으로 완료할 수 없습니다.

I/O 작업을 완료하는 것은 NTSTATUS 값에 따라 작업의 성공 또는 실패라고도 합니다.

  • I/O 작업을 성공 하려면 성공 또는 정보 NTSTATUS 값(예: STATUS_SUCCESS)으로 완료하는 것을 의미합니다.

  • I/O 작업에 실패 한다는 것은 오류 또는 경고 NTSTATUS 값(예: STATUS_INVALID_DEVICE_REQUEST 또는 STATUS_BUFFER_OVERFLOW)으로 완료하는 것을 의미합니다.

NTSTATUS 값은 ntstatus.h에 정의됩니다. 이러한 값은 성공, 정보, 경고 및 오류의 네 가지 범주로 구분됩니다. 이러한 값에 대한 자세한 내용은 NTSTATUS 값 사용을 참조하세요.