Função CcInitializeCacheMap (ntifs.h)
Os sistemas de arquivos chamam a rotina de ccInitializeCacheMap
Sintaxe
void CcInitializeCacheMap(
[in] PFILE_OBJECT FileObject,
[in] PCC_FILE_SIZES FileSizes,
[in] BOOLEAN PinAccess,
[in] PCACHE_MANAGER_CALLBACKS Callbacks,
[in] PVOID LazyWriteContext
);
Parâmetros
[in] FileObject
Ponteiro para um objeto de arquivo para o arquivo.
[in] FileSizes
Ponteiro para uma estrutura de CC_FILE_SIZES que contém AllocationSize, FileSizee ValidDataLength para o arquivo. Essa estrutura é definida da seguinte maneira:
typedef struct _CC_FILE_SIZES {
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
} CC_FILE_SIZES, *PCC_FILE_SIZES;
Membro | Significado |
---|---|
AllocationSize | Novo tamanho do objeto de seção para o arquivo. Ignorado se menor ou igual ao tamanho da seção atual. |
FileSize | Novo tamanho do arquivo para o arquivo. |
ValidDataLength | Novo comprimento de dados válido para o arquivo. |
[in] PinAccess
Defina como
[in] Callbacks
Ponteiro para uma estrutura alocada do pool nãopagado, contendo pontos de entrada de rotinas de retorno de chamada de leitura e write-behind fornecidas pelo chamador. Essa estrutura e seus membros são definidos da seguinte maneira:
typedef struct _CACHE_MANAGER_CALLBACKS {
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
typedef
BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_LAZY_WRITE) (
IN PVOID Context
);
typedef
BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
IN PVOID Context,
IN BOOLEAN Wait
);
typedef
VOID (*PRELEASE_FROM_READ_AHEAD) (
IN PVOID Context
);
[in] LazyWriteContext
Ponteiro para informações de contexto a serem passadas para as rotinas de retorno de chamada especificadas em retornos de chamada.
Valor de retorno
Nenhum
Observações
CcInitializeCacheMap cria as estruturas de dados necessárias para o cache de dados de arquivo.
Se ocorrer alguma falha, CcInitializeCacheMap gerará uma exceção de status para essa falha específica. Por exemplo, se ocorrer uma falha de alocação de pool, CcInitializeCacheMap gerará uma exceção STATUS_INSUFFICIENT_RESOURCES. Portanto, para obter controle se ocorrer uma falha, o driver deverá encapsular a chamada para CcInitializeCacheMap em uma instrução try-except ou try-finally.
Os sistemas de arquivos devem chamar CcInitializeCacheMap armazenar em cache um arquivo antes de usar qualquer outra rotina do gerenciador de cache no arquivo, a menos que o arquivo tenha sido criado com o cache de dados desabilitado. Na maioria dos sistemas de arquivos, o cache de arquivos é habilitado por padrão, mas pode ser desabilitado definindo o sinalizador FILE_NO_INTERMEDIATE_BUFFERING para verdadeiro nas opções de criação de arquivo.
Depois de chamar CcInitializeCacheMap, o sistema de arquivos pode chamar CcSetAdditionalCacheAttributes para desabilitar a leitura antecipada ou o write-behind, se desejado.
Ao fechar um arquivo, todos os sistemas de arquivos que dão suporte ao cache de arquivos devem chamar ccUninitializeCacheMap nesse arquivo, quer o arquivo seja armazenado em cache ou não. Mesmo que o arquivo tenha sido criado com o cache desabilitado, o sistema de arquivos ainda deverá chamar CcUninitializeCacheMap.
A macro CcIsFileCached determina se um arquivo é armazenado em cache ou não.
BOOLEAN CcIsFileCached(
[in] PFILE_OBJECT FileObject
);
Parâmetros
FileObject[in] [in]
Ponteiro para um objeto de arquivo para o arquivo.
Valor de retorno
Retorna verdadeiro se o arquivo estiver armazenado em cache, false caso contrário.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (inclua Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |