FltCancelIo 함수(fltkernel.h)

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

구문

BOOLEAN FLTAPI FltCancelIo(
  [in] PFLT_CALLBACK_DATA CallbackData
);

매개 변수

[in] CallbackData

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

반환 값

I/O 작업이 성공적으로 취소된 경우 FltCancelIoTRUE를 반환합니다. 그렇지 않으면 FALSE를 반환합니다.

설명

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

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

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

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

다음 조건이 충족되면 FltCancelIoFALSE를 반환합니다.

  • 작업은 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