Función FltSetCancelCompletion (fltkernel.h)

Un controlador de minifiltro llama a FltSetCancelCompletion para especificar una rutina de cancelación a la que se llamará si se cancela una operación de E/S determinada.

Sintaxis

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

Parámetros

[in] CallbackData

Puntero a la estructura de datos de devolución de llamada (FLT_CALLBACK_DATA) para la operación de E/S. La operación debe ser una operación de E/S basada en IRP y no debe ser una operación de E/S de paginación. Para determinar si una estructura de datos de devolución de llamada determinada representa una operación de E/S basada en IRP, use la macro FLT_IS_IRP_OPERATION . Este parámetro es obligatorio y no puede ser NULL.

[in] CanceledCallback

Puntero a una rutina de cancelación proporcionada por el autor de la llamada. El Administrador de filtros llama a esta rutina si se cancela la operación de E/S representada por CallbackData .

Esta rutina se declara de la siguiente manera:

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

CallbackData

Puntero a la estructura FLT_CALLBACK_DATA para la operación de E/S.

Valor devuelto

FltSetCancelCompletion devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado.

Comentarios

FltSetCancelCompletion especifica una rutina de cancelación para una operación de E/S basada en IRP que se va a publicar en una cola de trabajo.

Los controladores de minifiltro suelen llamar a FltSetCancelCompletion para una operación de E/S inmediatamente antes de llamar a FltQueueDeferredIoWorkItem para publicar la operación en una cola de trabajo.

No llame a FltSetCancelCompletion para cualquier operación de E/S que se publique en una cola de datos de devolución de llamada segura para cancelación mediante las rutinas FltCbdqXxx .

El Administrador de filtros llama a la rutina CanceledCallback sin mantener el bloqueo de giro de cancelación del sistema ni realizar ninguna otra sincronización. El propio controlador de minifiltro debe proporcionar cualquier sincronización necesaria.

Para cancelar una operación de E/S, llame a FltCancelIo.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
Archivo DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Consulte también

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem