Função CcSetFileSizesEx (ntifs.h)
A rotina CcSetFileSizesEx atualiza os mapas de cache e o objeto de seção de um arquivo armazenado em cache cujo tamanho foi alterado.
Sintaxe
NTSTATUS CcSetFileSizesEx(
PFILE_OBJECT FileObject,
PCC_FILE_SIZES FileSizes
);
Parâmetros
FileObject
[in] Ponteiro para um objeto de arquivo para o arquivo armazenado em cache.
FileSizes
[in] Ponteiro para uma estrutura de CC_FILE_SIZES que contém as novas informações de tamanho de arquivo.
Valor de retorno
CcSetFileSizesEx retornará STATUS_SUCCESS se o tamanho do arquivo tiver sido alterado com êxito e, se for necessário limpar, a limpeza foi bem-sucedida. Caso contrário, ele retorna um código NSTATUS sem êxito, como STATUS_INSUFFICIENT_RESOURCES, e pode gerar uma exceção de status.
Em relação à geração de uma exceção de status no erro:
Se a operação causar ccSetFileSizesEx liberar e/ou limpar o arquivo, CcSetFileSizesEx não gerará erros; ele apenas retorna o código NTSTATUS não bem-sucedido apropriado da operação de liberação ou limpeza.
Se a operação fizer CcSetFileSizesEx estender a seção, ccSetFileSizesEx gerará qualquer erro que ocorrer durante essa extensão.
Observações
Os sistemas de arquivos devem chamar CcSetFileSizesEx para atualizar as estruturas de dados do gerenciador de cache sempre que uma das seguintes alterações for feita em um arquivo armazenado em cache:
Seu tamanho de alocação é aumentado.
Seu comprimento de dados válido é reduzido.
Seu comprimento de dados válido é aumentado por uma operação de E/S não armazenada em cache.
Seu tamanho de arquivo é aumentado ou reduzido.
Se a operação causar ccSetFileSizesEx estender a seção e ocorrer uma falha, CcSetFileSizesEx gerará uma exceção de status para essa falha específica. Por exemplo, se ocorrer uma falha de alocação de pool, CcSetFileSizesEx gerará uma exceção STATUS_INSUFFICIENT_RESOURCES. Portanto, para obter controle se ocorrer uma falha, o driver deverá encapsular a chamada para CcSetFileSizesEx em uma instrução try-except ou try-finally.
O sistema de arquivos deve garantir que o mapa de cache seja válido e permanecerá assim durante essa chamada.
Para armazenar em cache um arquivo, use CcInitializeCacheMap.
Para obter o tamanho do arquivo armazenado em cache, passe FileObject para ccGetFileSizePointer.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | ntifs.h |