Função CreateLogMarshallingArea (clfsw32.h)

Cria uma área de marshaling para um log e, quando bem-sucedido, retorna um contexto de marshaling. Antes de criar uma área de marshaling, o log deve ter pelo menos um contêiner.

O contexto de marshaling é usado para acrescentar registros ou ler registros de um log. Como os registros são sempre armazenados em blocos de log, eles devem passar pelo contexto de marshaling.

Os registros de log são gravados chamando ReserveAndAppendLog.

Sintaxe

CLFSUSER_API BOOL CreateLogMarshallingArea(
  [in]           HANDLE                  hLog,
  [in, optional] CLFS_BLOCK_ALLOCATION   pfnAllocBuffer,
  [in, optional] CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
  [in, optional] PVOID                   pvBlockAllocContext,
  [in]           ULONG                   cbMarshallingBuffer,
  [in]           ULONG                   cMaxWriteBuffers,
  [in]           ULONG                   cMaxReadBuffers,
  [out]          PVOID                   *ppvMarshal
);

Parâmetros

[in] hLog

Um identificador para o log obtido de CreateLogFile.

O identificador de log pode se referir a um log dedicado ou multiplexado.

[in, optional] pfnAllocBuffer

A função de retorno de chamada que aloca memória para blocos de log.

Se esse parâmetro for NULL, o CLFS (Common Log File System) fornecerá uma função de alocação de bloco padrão. Esse parâmetro não poderá ser NULL se um retorno de chamada de liberação de blocos for especificado usando o parâmetro pfnFreeBuffer .

O exemplo a seguir identifica a sintaxe da função de retorno de chamada de alocação de bloco:

typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext);

[in, optional] pfnFreeBuffer

A função de retorno de chamada que libera blocos de log alocados por pfnAllocBuffer.

Se esse parâmetro for NULL, o CLFS fornecerá uma função de desalocação de bloco padrão. Esse parâmetro não poderá ser NULL se um retorno de chamada de alocação de bloco for especificado usando o parâmetro pfnAllocBuffer .

O exemplo a seguir identifica a sintaxe da função de retorno de chamada de liberação de blocos:

typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);

O parâmetro de buffer "ClfsBlockDeallocProc" deve apontar para um bloco alocado usando o retorno de chamada apontado por pfnAllocBuffer.

[in, optional] pvBlockAllocContext

Um ponteiro para um buffer que é passado de volta como um contexto de usuário para as rotinas de alocação e desalocação de blocos, se um buffer for especificado.

Se pfnAllocBuffer for NULL, esse parâmetro será ignorado.

[in] cbMarshallingBuffer

O tamanho, em bytes, dos blocos de E/S de log individuais que serão usados pela nova área de marshaling. Isso deve ser um múltiplo do tamanho do setor na mídia de armazenamento estável. O tamanho do setor é o valor retornado no parâmetro lpBytesPerSector da função GetDiskFreeSpace .

Os registros não poderão ser acrescentados ou lidos se forem maiores que esse valor.

[in] cMaxWriteBuffers

O número máximo de blocos que podem ser alocados a qualquer momento para operações de gravação.

Esse valor pode afetar a frequência de liberações de dados. Se você não precisar especificar um limite para controlar a frequência do ciclo de liberação de dados, especifique INFINITE.

[in] cMaxReadBuffers

O número máximo de blocos que podem ser alocados a qualquer momento para operações de leitura.

Os contextos de leitura usam pelo menos um bloco de leitura.

[out] ppvMarshal

Um ponteiro para o contexto de marshaling que o CLFS aloca quando CreateLogMarshallingArea é concluído com êxito.

Esse contexto deve ser usado com todas as operações de leitura, acréscimo, gravação e liberação para áreas de marshaling de log. Todas as operações que acessam áreas de marshaling usando um contexto de marshaling são thread-safe. Esse parâmetro será NULL se a operação não for bem-sucedida.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

A lista a seguir identifica os possíveis códigos de erro:

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho clfsw32.h
Biblioteca Clfsw32.lib
DLL Clfsw32.dll

Confira também

Funções comuns do sistema de arquivos de log

CreateLogFile

DeleteLogMarshallingArea