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 |