FltSetCancelCompletion 함수(fltkernel.h)

미니필터 드라이버는 FltSetCancelCompletion 을 호출하여 지정된 I/O 작업이 취소될 경우 호출할 취소 루틴을 지정합니다.

구문

NTSTATUS FLTAPI FltSetCancelCompletion(
  [in] PFLT_CALLBACK_DATA              CallbackData,
  [in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);

매개 변수

[in] CallbackData

I/O 작업에 대한 콜백 데이터(FLT_CALLBACK_DATA) 구조체에 대한 포인터입니다. 작업은 IRP 기반 I/O 작업이어야 하며 페이징 I/O 작업이 아니어야 합니다. 지정된 콜백 데이터 구조가 IRP 기반 I/O 작업을 나타내는지 여부를 확인하려면 FLT_IS_IRP_OPERATION 매크로를 사용합니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] CanceledCallback

호출자가 제공한 취소 루틴에 대한 포인터입니다. CallbackData로 표시되는 I/O 작업이 취소된 경우 필터 관리자는 이 루틴을 호출합니다.

이 루틴은 다음과 같이 선언됩니다.

typedef VOID
(*PFLT_COMPLETE_CANCELED_CALLBACK) (
      IN PFLT_CALLBACK_DATA CallbackData
      );

CallbackData

I/O 작업에 대한 FLT_CALLBACK_DATA 구조체에 대한 포인터입니다.

반환 값

FltSetCancelCompletion 은 STATUS_SUCCESS 또는 적절한 NTSTATUS 값을 반환합니다.

설명

FltSetCancelCompletion 은 작업 큐에 게시할 IRP 기반 I/O 작업에 대한 취소 루틴을 지정합니다.

미니필터 드라이버는 일반적으로 FltQueueDeferredIoWorkItem을 호출하기 직전에 I/O 작업에 대해 FltSetCancelCompletion을 호출하여 작업을 작업 큐에 게시합니다.

FltCbdqXxx 루틴을 사용하여 취소 안전 콜백 데이터 큐에 게시할 I/O 작업에 대해 FltSetCancelCompletion을 호출하지 마세요.

필터 관리자는 시스템 취소 스핀 잠금을 유지하거나 다른 동기화를 수행하지 않고 CanceledCallback 루틴을 호출합니다. 필요한 모든 동기화는 미니필터 드라이버 자체에서 제공해야 합니다.

I/O 작업을 취소하려면 FltCancelIo를 호출합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

추가 정보

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem