Função FltCancelIo (fltkernel.h)
A rotina de 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.
Valor de retorno
FltCancelIo retornará verdadeiro se a operação de E/S tiver sido cancelada com êxito. Caso contrário, ele retornará FALSE.
Observações
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 próprio 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 as chamadas de operação de E/S baseada em IRP FltCancelIo, os resultados serão imprevisíveis. Por exemplo, o IRP pode ser concluído com um código NTSTATUS de sucesso, mesmo que seu bit de cancelamento tenha sido definido.
FltCancelIo retornará FALSE se alguma 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 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 |
---|---|
da Plataforma de Destino | Universal |
cabeçalho | fltkernel.h (inclua FltKernel.h) |
biblioteca | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |