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.

Valor Significado
CLFS_FLAG_FORCE_APPEND
Atribui um local físico para todos os registros acrescentados no log que não foram atribuídos anteriormente a um local físico.

Todos esses registros são disponibilizados para leitura de outros contextos de marshaling.

CLFS_FLAG_FORCE_FLUSH
Atribui um local físico para todos os registros acrescentados no log que não foram atribuídos anteriormente a um local físico.

Todos esses registros são disponibilizados para leitura de outros contextos de marshaling. Em seguida, os registros são liberados para o disco.

CLFS_FLAG_NO_FLAGS
Não atribui sinalizadores.
CLFS_FLAG_USE_RESERVATION
Acrescenta o registro atual usando o espaço reservado na área de marshaling.

[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.
A API de Gerenciamento do CLFS também fornece uma maneira de lidar com cenários que envolvem logs completos.

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

Confira também

CLFS_LSN

CLFS_WRITE_ENTRY

Funções comuns do sistema de arquivos de log

OVERLAPPED