Não permitir uma operação de E/S rápida em uma rotina de retorno de chamada de pré-operação
Em determinadas circunstâncias, um driver de minifiltro pode optar por não permitir uma operação de E/S rápida em vez de concluí-la. Não permitir uma operação de E/S rápida impede que o caminho de E/S rápido seja usado para a operação.
Como concluir uma operação de E/S, não permitir uma operação de E/S rápida significa interromper o processamento nela e devolvê-la ao gerenciador de filtros. No entanto, não permitir uma operação de E/S rápida é diferente de concluí-la. Se um driver de minifiltro não permitir uma operação de E/S rápida emitida pelo gerente de E/S, o gerente de E/S poderá reemitir a mesma operação que uma operação baseada em IRP equivalente.
Quando a rotina de retorno de chamada de pré-operação de um driver de minifiltro não permite uma operação de E/S rápida, o gerenciador de filtros faz o seguinte:
Não envia a operação para drivers de minifiltro abaixo do driver de minifiltro atual, para filtros herdados ou para o sistema de arquivos.
Chama as rotinas de retorno de chamada de postoperation dos drivers de minifiltro acima do driver de minifiltro atual na pilha de instâncias do driver de minifiltro.
Não chama a rotina de retorno de chamada de postoperation do driver de minifiltro atual para a operação, se houver uma.
Um driver de minifiltro não permite uma operação de E/S rápida retornando FLT_PREOP_DISALLOW_FASTIO da rotina de retorno de chamada de pré-operação para a operação.
A rotina de retorno de chamada de pré-operação não deve definir o campo IoStatus.Status da estrutura de dados de retorno de chamada, pois o gerenciador de filtros define automaticamente esse campo como STATUS_FLT_DISALLOW_FAST_IO.
FLT_PREOP_DISALLOW_FASTIO só pode ser retornado para operações rápidas de E/S. Para determinar se uma operação é uma operação de E/S rápida, consulte FLT_IS_FASTIO_OPERATION.
Os drivers de minifiltro não podem retornar FLT_PREOP_DISALLOW_FASTIO para operações de IRP_MJ_SHUTDOWN, IRP_MJ_VOLUME_MOUNT ou IRP_MJ_VOLUME_DISMOUNT.