Compartilhar via


Função FltCancelIo (fltkernel.h)

A rotina fltCancelIo cancela uma operação de E/S.

Sintaxe

BOOLEAN FLTAPI FltCancelIo(
  [in] PFLT_CALLBACK_DATA CallbackData
);

Parâmetros

[in] CallbackData

Ponteiro para a estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) para a operação de E/S.

Retornar valor

FltCancelIo retornará TRUE se a operação de E/S tiver sido cancelada com êxito. Caso contrário, retornará FALSE.

Comentários

Um driver de minifiltro que inicia uma operação de E/S chamando uma rotina como FltPerformAsynchronousIo pode cancelar a operação chamando FltCancelIo. A operação deve ser uma operação de E/S baseada em IRP, não deve ser postada atualmente na fila de trabalho do driver de minifiltro e não deve ter sido concluída.

Se o IRP tiver uma rotina de cancelamento, FltCancelIo definirá o bit de cancelamento do IRP e chamará a rotina de cancelamento.

Se o IRP não tiver uma rotina de cancelamento e, portanto, o IRP não for cancelável, FltCancelIo definirá o bit de cancelamento do IRP e retornará FALSE. O IRP deve ser cancelado posteriormente quando se tornar cancelável.

Se um driver de minifiltro que não iniciou a operação de E/S baseada em IRP chamar FltCancelIo, os resultados serão imprevisíveis. Por exemplo, o IRP pode ser concluído com um código NTSTATUS bem-sucedido, mesmo que seu bit de cancelamento tenha sido definido.

FltCancelIo retornará FALSE se qualquer uma das seguintes condições for verdadeira:

  • A operação não é uma operação de E/S baseada em IRP.
  • Nenhuma rotina de cancelamento é especificada para a operação de E/S.
  • A operação de E/S já foi cancelada.
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.

Para especificar uma rotina de cancelamento para uma operação de E/S, chame FltSetCancelCompletion.

Para limpar uma rotina de cancelamento que foi definida para uma operação de E/S, chame FltClearCancelCompletion.

Requisitos

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

Confira também

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile