다음을 통해 공유


FltCancelIo 함수(fltkernel.h)

FltCancelIo 루틴은 I/O 작업을 취소합니다.

통사론

BOOLEAN FLTAPI FltCancelIo(
  [in] PFLT_CALLBACK_DATA CallbackData
);

매개 변수

[in] CallbackData

I/O 작업의 콜백 데이터(FLT_CALLBACK_DATA) 구조체에 대한 포인터입니다.

반환 값

FltCancelIo I/O 작업이 성공적으로 취소된 경우 TRUE 반환합니다. 그렇지 않으면 false 반환됩니다.

발언

FltPerformAsynchronousIo 같은 루틴을 호출하여 I/O 작업을 시작하는 미니 필터 드라이버는 FltCancelIo호출하여 작업을 취소할 수 있습니다. 작업은 IRP 기반 I/O 작업이어야 하며, 현재 미니 필터 드라이버의 작업 큐에 게시해서는 안 되며 완료되지 않아야 합니다.

IRP에 취소 루틴이 있는 경우 FltCancelIo IRP의 취소 비트를 설정하고 취소 루틴을 호출합니다.

IRP에 취소 루틴이 없으므로 IRP를 취소할 수 없는 경우 FltCancelIo IRP의 취소 비트를 설정하고 false 반환합니다. IRP는 나중에 취소할 수 있게 되면 취소해야 합니다.

IRP 기반 I/O 작업을 시작하지 않은 미니 필터 드라이버가 FltCancelIo 호출하는 경우 결과를 예측할 수 없습니다. 예를 들어 취소 비트가 설정된 경우에도 성공 NTSTATUS 코드로 IRP가 완료될 수 있습니다.

FltCancelIo 다음 조건이 충족되면 FALSE 반환합니다.

  • 작업은 IRP 기반 I/O 작업이 아닙니다.
  • I/O 작업에 대해 취소 루틴이 지정되지 않았습니다.
  • I/O 작업이 이미 취소되었습니다.
지정된 콜백 데이터 구조가 IRP 기반 I/O 작업을 나타내는지 여부를 확인하려면 FLT_IS_IRP_OPERATION 매크로를 사용합니다.

I/O 작업에 대한 취소 루틴을 지정하려면 FltSetCancelCompletion호출합니다.

I/O 작업에 대해 설정된 취소 루틴을 지우려면 FltClearCancelCompletion호출합니다.

요구 사항

요구
대상 플랫폼 보편적
헤더 fltkernel.h(FltKernel.h 포함)
라이브러리 FltMgr.lib
IRQL <= DISPATCH_LEVEL

참고 항목

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

fltPerformAsynchronousIo

fltReadFile

FltSetCancelCompletion

fltWriteFile