Função FltSetCancelCompletion (fltkernel.h)

Um driver de minifiltro chama FltSetCancelCompletion para especificar uma rotina de cancelamento a ser chamada se uma determinada operação de E/S for cancelada.

Sintaxe

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

Parâmetros

[in] CallbackData

Ponteiro para a estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) para a operação de E/S. A operação deve ser uma operação de E/S baseada em IRP e não deve ser uma operação de E/S de paginação. Para determinar se uma determinada estrutura de dados de retorno de chamada representa uma operação de E/S baseada em IRP, use a macro FLT_IS_IRP_OPERATION . Esse parâmetro é necessário e não pode ser NULL.

[in] CanceledCallback

Ponteiro para uma rotina de cancelamento fornecida pelo chamador. O Gerenciador de Filtros chamará essa rotina se a operação de E/S representada por CallbackData for cancelada.

Essa rotina é declarada da seguinte maneira:

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

Callbackdata

Ponteiro para a estrutura FLT_CALLBACK_DATA para a operação de E/S.

Retornar valor

FltSetCancelCompletion retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado.

Comentários

FltSetCancelCompletion especifica uma rotina de cancelamento para uma operação de E/S baseada em IRP que deve ser postada em uma fila de trabalho.

Os drivers de minifiltro geralmente chamam FltSetCancelCompletion para uma operação de E/S imediatamente antes de chamar FltQueueDeferredIoWorkItem para postar a operação em uma fila de trabalho.

Não chame FltSetCancelCompletion para qualquer operação de E/S que deve ser postada em uma fila de dados de retorno de chamada cancel-safe usando as rotinas FltCbdqXxx .

O Gerenciador de Filtros chama a rotina CanceledCallback sem manter o sistema cancelando o bloqueio de rotação ou executando qualquer outra sincronização. Qualquer sincronização necessária deve ser fornecida pelo próprio driver de minifiltro.

Para cancelar uma operação de E/S, chame FltCancelIo.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Confira também

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem