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 |