IRP-Based operações de E/S que obedecem aos sinalizadores de objeto do dispositivo
O método de buffer para as seguintes operações de E/S baseadas em IRP é determinado pelo valor do membro Flags da estrutura DEVICE_OBJECT para o volume do sistema de arquivos:
IRP_MJ_DIRECTORY_CONTROL
IRP_MJ_QUERY_EA
IRP_MJ_QUERY_QUOTA
IRP_MJ_READ
IRP_MJ_SET_EA
IRP_MJ_SET_QUOTA
IRP_MJ_WRITE
Os sinalizadores DO_BUFFERED_IO e DO_DIRECT_IO no membro Flags são usados da seguinte maneira:
Se o sinalizador DO_BUFFERED_IO estiver definido, a operação usará E/S em buffer.
Se o sinalizador DO_DIRECT_IO estiver definido e o sinalizador DO_BUFFERED_IO não estiver definido, a operação usará E/S direta.
Se nenhum sinalizador for definido, a operação não usará E/S direta nem buffer.
Para obter mais informações sobre sinalizadores de objeto do dispositivo, consulte DEVICE_OBJECT e Inicializando um objeto device.
Observe que IRP_MJ_READ e IRP_MJ_WRITE podem ser operações de E/S rápidas ou baseadas em IRP. Quando eles são baseados em IRP, o método de buffer é determinado pelos sinalizadores de objeto do dispositivo, conforme descrito acima. Quando essas operações são rápidas de E/S, elas sempre não usam E/S direta nem buffer. Para obter mais informações sobre operações de E/S que podem ser operações de E/S rápidas ou baseadas em IRP, consulte Operações que podem ser IRP-Based ou E/S rápida.