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 |