Compartilhar via


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 opaca para a instância do driver de minifiltro de chamada. Esse parâmetro é necessário e não pode ser NULL.

FileObject

[in] Ponteiro do 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. Esta operação é equivalente a fltFlushBuffers.
FLT_FLUSH_TYPE_FLUSH_AND_PURGE Igual a 0 (FltFlushBuffers), exceto que o cache também é limpo após a liberação ser concluída.
FLT_FLUSH_TYPE_FILE_DATA_ONLY Se o arquivo estiver em um sistema de arquivos NTFS, somente os dados do 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 do 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 do arquivo no cache de arquivos serão gravados. Nenhum metadados foi 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 .

Valor de retorno

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.

Observações

Um driver de minifiltro pode chamar fltFlushBuffers2 para emitir uma solicitação de IRP_MJ_FLUSH_BUFFERS para o 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 de 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
de cliente com suporte mínimo Windows 10, versão 1903
cabeçalho fltkernel.h

Consulte também

FltFlushBuffers

FltPropagateIrpExtension

IRP_MJ_FLUSH_BUFFERS