Compartilhar via


Função CcCoherencyFlushAndPurgeCache (ntifs.h)

O CcCoherencyFlushAndPurgeCache liberações de rotina 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 liberar 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 o 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 de cortar conjuntos de trabalho do processo.

Valor de retorno

Nenhum

Observações

Use ccCoherencyFlushAndPurgeCache quando possível, em vez de uma sequência de chamadas de liberação e limpeza explícita, pois invalidará exibições mapeadas pelo usuário para evitar 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 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 limpar um arquivo inteiro se passar um ponteiro de 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 de status dede 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 sinalizadores do . Observe que STATUS_CACHE_PAGE_LOCKED é um êxito status (ou seja, testá-lo com a macro NT_SUCCESS retornaria TRUE).

Requisitos

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

Consulte também

ccFlushCache

CcPurgeCacheSection