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 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 |