Função FltFlushBuffers2 (fltkernel.h)

Um driver de minifiltro chama FltFlushBuffers2 para enviar uma solicitação de liberação para o sistema de arquivos para um determinado arquivo.

Sintaxe

NTSTATUS FLTAPI FltFlushBuffers2(
  PFLT_INSTANCE      Instance,
  PFILE_OBJECT       FileObject,
  ULONG              FlushType,
  PFLT_CALLBACK_DATA CallbackData
);

Parâmetros

Instance

[in] Ponteiro de instância opaco para a instância do driver de minifiltro de chamada. Esse parâmetro é necessário e não pode ser NULL.

FileObject

[in] Ponteiro de objeto de arquivo para o arquivo ou volume a ser liberado. Esse parâmetro é necessário e não pode ser NULL.

FlushType

[in] Especifica o tipo de liberação que o sistema de arquivos deve fazer no arquivo. FlushType pode ser um dos seguintes:

Valor da operação FlushType Descrição
0 Se FileObject for para um arquivo, os dados do arquivo e os metadados no cache de arquivos serão gravados e o armazenamento subjacente será sincronizado para liberar seu cache. Se FileObject for para um volume, o sistema de arquivos fará com que os dados do arquivo e os metadados de todos os arquivos modificados no volume sejam gravados e o armazenamento subjacente seja sincronizado para liberar seu cache. Essa operação é equivalente a FltFlushBuffers.
FLT_FLUSH_TYPE_FLUSH_AND_PURGE O mesmo que 0 (FltFlushBuffers), exceto que o cache também é limpo após a conclusão da liberação.
FLT_FLUSH_TYPE_FILE_DATA_ONLY Se o arquivo estiver em um sistema de arquivos NTFS, somente os dados de arquivo no cache de arquivos serão gravados. Nenhum metadado é gravado e o armazenamento subjacente não é sincronizado para liberar seu cache. Esse sinalizador não será válido se FileObject for para um volume.
FLT_FLUSH_TYPE_NO_SYNC Se o arquivo estiver em um sistema de arquivos NTFS, os dados de arquivo e os metadados no cache de arquivos serão gravados. O armazenamento subjacente não será sincronizado para liberar seu cache. Esse sinalizador não será válido se FileObject for para um volume.
FLT_FLUSH_TYPE_DATA_SYNC_ONLY Se o arquivo estiver em um sistema de arquivos NTFS, os dados de arquivo no cache de arquivos serão gravados. Nenhum metadado é gravado. O armazenamento subjacente é sincronizado para liberar seu cache. Esse sinalizador não será válido se FileObject for para um volume ou diretório.

CallbackData

[in/optional] Ponteiro para a estrutura de FLT_CALLBACK_DATA opcional usada para propagar a extensão IRP do chamador. Consulte FltPropagateIrpExtension.

Retornar valor

FltFlushBuffers2 retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_MEDIA_WRITE_PROTECTED O arquivo reside em um volume protegido por gravação. Este é um código de erro.
STATUS_VOLUME_DISMOUNTED O arquivo reside em um volume que não está montado no momento. Este é um código de erro.

Comentários

Um driver de minifiltro pode chamar FltFlushBuffers2 para emitir uma solicitação IRP_MJ_FLUSH_BUFFERS ao sistema de arquivos para um determinado arquivo. A operação de liberação é síncrona e é emitida para as instâncias abaixo da Instância especificada.

Se o arquivo estiver em um sistema de arquivos NTFS, o minifiltro poderá controlar o tipo de liberação por meio do parâmetro FlushType .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1903
Cabeçalho fltkernel.h

Confira também

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS