Função ReserveAndAppendLogAligned (clfsw32.h)
Reserva espaço para buffers de log ou acrescenta um registro de log ao log ou a ambos. Essa função é como a função ReserveAndAppendLog , mas ReserveAndAppendLogAligned alinha as entradas de gravação do registro ao alinhamento de bytes especificado.
Sintaxe
CLFSUSER_API BOOL ReserveAndAppendLogAligned(
[in] PVOID pvMarshal,
[in, optional] PCLFS_WRITE_ENTRY rgWriteEntries,
[in] ULONG cWriteEntries,
[in] ULONG cbEntryAlignment,
[in, optional] PCLFS_LSN plsnUndoNext,
[in, optional] PCLFS_LSN plsnPrevious,
[in] ULONG cReserveRecords,
[in, out, optional] LONGLONG [] rgcbReservation,
[in] ULONG fFlags,
[out, optional] PCLFS_LSN plsn,
[in, out, optional] LPOVERLAPPED pOverlapped
);
Parâmetros
[in] pvMarshal
Um ponteiro para um contexto de marshaling alocado usando a função CreateLogMarshallingArea .
[in, optional] rgWriteEntries
Um ponteiro para uma matriz de buffers CLFS_WRITE_ENTRY a serem empacotados em um registro.
Esse parâmetro será ignorado se o parâmetro cWriteEntries for zero.
[in] cWriteEntries
O número de entradas de gravação na matriz rgWriteEntries .
Se esse valor for diferente de zero, você deverá especificar um buffer no parâmetro rgWriteEntries .
[in] cbEntryAlignment
O alinhamento de bytes para cada entrada de gravação no parâmetro rgWriteEntries .
Especifique 1 (um) para uma concatenação simples. O parâmetro cbWriteEntryAlignment deve ser diferente de zero.
[in, optional] plsnUndoNext
Um ponteiro para uma estrutura CLFS_LSN que especifica o LSN (número de sequência de log) do próximo registro na cadeia de desfazer.
[in, optional] plsnPrevious
Um ponteiro para uma estrutura CLFS_LSN que especifica o LSN do registro anterior na cadeia anterior.
[in] cReserveRecords
O número de tamanhos de registro na matriz rgcbReservation .
[in, out, optional] rgcbReservation
Um ponteiro para uma matriz de tamanhos de reserva para cada registro especificado pelo parâmetro cReserveRecords .
Esse parâmetro será ignorado se o parâmetro cReserveRecords for zero. Se um tamanho de reserva for negativo, uma reserva desse tamanho será liberada.
O espaço real reservado para cada registro, incluindo a sobrecarga necessária, é retornado nos elementos de matriz individuais após a conclusão bem-sucedida. Esses valores podem ser passados para a função FreeReservedLog para ajustar o espaço reservado na área de marshaling.
[in] fFlags
Os sinalizadores que especificam o comportamento dessa função.
Um ou mais dos valores a seguir podem ser combinados.
[out, optional] plsn
Um ponteiro para uma estrutura CLFS_LSN que recebe o LSN do registro acrescentado.
[in, out, optional] pOverlapped
Um ponteiro para uma estrutura OVERLAPPED.
Esse parâmetro poderá ser NULL se a operação assíncrona não for usada.
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 a função GetLastError. A lista a seguir identifica os possíveis códigos de erro:
Comentários
O LSN retornado pela função ReserveAndAppendLogAligned não é necessariamente o próximo LSN usado. O LSN retornado é uma estimativa do próximo LSN e varia de acordo com os sinalizadores especificados pelo parâmetro fFlags . O LSN retornado pode ser usado ao mover a cauda base. Esse LSN é invalidado pela próxima chamada para essa função.
Se a função ReserveAndAppendLogAligned retornar ERROR_LOG_FILE_FULL, não haverá mais espaço no log. Isso pode ser resolvido de uma das seguintes maneiras:
- Libere quaisquer reservas desnecessárias.
- Avance o LSN base ou a parte final do arquivo de log, ou ambos, para reciclar contêineres.
- Adicione contêineres ao log.
Se a função ReserveAndAppendLogAligned for chamada com uma estrutura sobreposta válida e o identificador de log for criado com a opção sobreposta, se uma chamada para essa função falhar com um código de erro de ERROR_IO_PENDING, um ponteiro para um contexto de leitura válido será colocado na variável que é apontada pelo parâmetro ppvReadContext .
Para concluir a cópia de registro de log, o cliente deve primeiro sincronizar sua execução com a conclusão adiada da operação de E/S sobreposta usando a função GetOverlappedResult ou uma das funções de espera de sincronização. Para obter mais informações, consulte Sincronização e Entrada e saída sobrepostas.
Requisitos
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 |