Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um cliente CLFS (Common Log File System) acrescenta registos de log a uma área de marshalização em memória volátil, e o CLFS grava periodicamente esses registos em um armazenamento estável. Uma área de empacotamento é uma coleção de buffers de E/S de log, cada um dos quais pode conter vários registros de log. Os buffers de E/S de logs armazenam registos recentemente gravados num fluxo (mas possivelmente ainda não transferidos para armazenamento estável) e registos recentemente lidos do fluxo.
Você cria uma área de agrupamento chamando ClfsCreateMarshallingArea, momento em que deve-se especificar o tamanho dos buffers de E/S de log que a área de agrupamento usa e se esses buffers estão no pool de memória paginada ou não paginada. Todos os buffers de E/S de log em uma área de empacotamento têm o mesmo tamanho, e o CLFS garante que o tamanho seja um múltiplo do tamanho do setor no meio de armazenamento estável subjacente. Ou seja, o CLFS pega o tamanho solicitado e arredonda-o conforme necessário para tornar seus buffers de E/S compatíveis com o meio de armazenamento estável.
O CLFS aloca e libera buffers de E/S de log conforme necessário, mas você tem a opção de definir o número máximo de buffers de E/S que podem ser alocados de uma só vez. Você também tem a opção de fornecer suas próprias funções de alocação e desalocação de buffer.
Para especificar o número máximo de buffers de E/S de log que podem ser alocados simultaneamente para gravar registos de log, defina o parâmetro cMaxWriteBuffers da função ClfsCreateMarshallingArea. A limitação do número de buffers afeta a frequência de descargas para armazenamento estável; Com menos buffers, os registros de log devem ser gravados no armazenamento estável com mais frequência. Se você não precisar controlar a frequência de liberação, defina cMaxWriteBuffers como INFINITE (definido em Winbase.h).
Para especificar o número máximo de buffers de E/S de log que podem ser alocados de uma só vez para ler registros de log, defina o parâmetro cMaxReadBuffers da função ClfsCreateMarshallingArea . Se você não precisar controlar o número de buffers de leitura alocados, defina cMaxReadBuffers como INFINITE.
Se pretender realizar a sua própria alocação de memória para buffers de E/S de log, defina os parâmetros pfnAllocBuffer e pfnFreeBuffer da função ClfsCreateMarshallingArea de modo a que apontem para as suas próprias funções de alocação e desalocação. Em seguida, o CLFS chama suas funções para executar a alocação e desalocação de memória real sempre que precisar criar ou liberar buffers de E/S de log.
Em alguns casos, você pode querer reservar espaço em uma área de triagem com antecedência. Por exemplo, você pode saber que está prestes a escrever um conjunto de 10 registros de log e quer ter certeza de que há espaço suficiente na área de empacotamento para todo o conjunto. Para reservar espaço para os 10 registros, crie uma matriz de 10 elementos que contenha os tamanhos dos registros e, em seguida, passe a matriz para a função ClfsReserveAndAppendLog no parâmetro rgcbReservation . ClfsReserveAndAppendLog é uma função multiuso que reserva espaço numa área de coleta ou acrescenta registos de log a um fluxo, ou faz ambas as coisas de forma atómica. Definindo os parâmetros adequadamente, você pode chamar ClfsReserveAndAppendLog para reservar espaço para uso futuro sem realmente anexar nenhum registro ao fluxo.