Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um cliente CLFS (Common Log File System) acrescenta registros de log a uma área de marshalização na memória volátil, e o CLFS grava periodicamente esses registros no armazenamento estável. Uma área de marshalling é uma coleção de buffers de E/S de log, e cada um deles pode conter vários registros de log. Os buffers de E/S de log contêm registros gravados recentemente em um fluxo (mas possivelmente não liberados para armazenamento estável) e registros lidos recentemente do fluxo.
Crie uma área de marshalling chamando ClfsCreateMarshallingArea. Nesse momento, você deve especificar o tamanho dos buffers de E/S de log que essa área de marshalling usa e se esses buffers estão no pool paginado ou não paginado. Todos os buffers de E/S de log em uma área de marshalling têm o mesmo tamanho e o CLFS garante que o tamanho seja um múltiplo do tamanho do setor na mídia de armazenamento estável subjacente. Ou seja, o CLFS usa o tamanho solicitado e o arredonda 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 registros de log, defina o parâmetro cMaxWriteBuffers da função ClfsCreateMarshallingArea. Limitar o número de buffers afeta a frequência de liberações para o 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 simultaneamente para a leitura de 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 você quiser fazer 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 para apontar para 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 reais sempre que precisar criar ou liberar buffers de E/S de log.
Em alguns casos, talvez você queira reservar espaço em uma área de agrupamento antecipadamente. Por exemplo, você pode saber que está prestes a gravar um conjunto de 10 registros de log e deseja ter certeza de que há espaço suficiente na área de marshalling 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 passe a matriz para a função ClfsReserveAndAppendLog no parâmetro rgcbReservation . ClfsReserveAndAppendLog é uma função de múltiplas finalidades que reserva espaço em uma área de marshaling, acrescenta registros de log a um fluxo ou executa ambas as ações de forma atômica. Definindo os parâmetros adequadamente, você pode chamar ClfsReserveAndAppendLog para reservar espaço para uso futuro sem anexar nenhum registro ao fluxo.