Função CcCoherencyFlushAndPurgeCache (ntifs.h)

A rotina CcCoherencyFlushAndPurgeCache libera ou libera e limpa o cache para garantir a coerência do cache.

Sintaxe

void CcCoherencyFlushAndPurgeCache(
  [in]           PSECTION_OBJECT_POINTERS SectionObjectPointer,
  [in, optional] PLARGE_INTEGER           FileOffset,
  [in]           ULONG                    Length,
  [out]          PIO_STATUS_BLOCK         IoStatus,
  [in, optional] ULONG                    Flags
);

Parâmetros

[in] SectionObjectPointer

Um ponteiro para uma estrutura SECTION_OBJECT_POINTERS que contém os ponteiros de objeto de seção do objeto de arquivo.

[in, optional] FileOffset

Um ponteiro para uma variável que especifica o deslocamento de bytes inicial para liberação ou para liberar e limpar.

[in] Length

O comprimento em bytes dos dados a serem liberados ou para liberar e limpar, começando em FileOffset. Esse parâmetro será ignorado se um ponteiro NULL for passado para FileOffset.

[out] IoStatus

Um ponteiro para uma estrutura de IO_STATUS_BLOCK alocada pelo chamador que recebe a status de conclusão final e informações sobre a operação.

[in, optional] Flags

Uma máscara de bits dos seguintes sinalizadores que especificam como a operação deve ser executada:

Valor Significado
CC_FLUSH_AND_PURGE_NO_PURGE Libere, mas não limpe o cache. Isso é útil para liberações de coerência de leitura.
CC_FLUSH_AND_PURGE_GATHER_DIRTY_BITS Reservado para uso do sistema; não use.
CC_FLUSH_AND_PURGE_WRITEABLE_VIEWS_NOTSEEN O chamador pode definir esse sinalizador quando não houver mapeamentos para o arquivo fora do gerenciador de cache, a fim de ignorar a operação cara dos conjuntos de trabalho do processo de corte.

Retornar valor

Nenhum

Comentários

Use CcCoherencyFlushAndPurgeCache quando possível, em vez de uma sequência de chamadas de liberação e limpeza explícita, pois ela invalidará exibições mapeadas pelo usuário para evitar a corrupção de dados. CcCoherencyFlushAndPurgeCache garante a coerência do cache; como tal, não há nenhuma opção para fazer uma limpeza somente por meio dessa função.

O arquivo deve ser adquirido exclusivamente antes de você chamar CcCoherencyFlushAndPurgeCache.

Você pode liberar ou liberar e limpar qualquer intervalo de bytes dentro de um arquivo usando os parâmetros FileOffset e Length . Ou você pode liberar ou liberar e limpar um arquivo inteiro se passar um ponteiro NULL para o parâmetro FileOffset .

Uma chamada para CcCoherencyFlushAndPurgeCache é uma operação síncrona (bloqueio), não uma operação assíncrona (sem bloqueio).

Um valor IoStatus-Status> de STATUS_CACHE_PAGE_LOCKED indica que a invalidação de página falhou. Lembre-se de que a invalidação de página pode falhar mesmo se você passar CC_FLUSH_AND_PURGE_NO_PURGE no parâmetro Flags . Observe que STATUS_CACHE_PAGE_LOCKED é um status de sucesso (ou seja, testá-lo com a macro NT_SUCCESS retornaria TRUE).

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h, FltKernel.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Confira também

CcFlushCache

CcPurgeCacheSection