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 |