Função ReadLogRecord (clfsw32.h)
Inicia uma sequência de leituras de um LSN (número de sequência de log) especificado em um dos três modos e retorna o primeiro dos registros de log especificados e um contexto de leitura. Um cliente pode ler registros subsequentes no modo designado passando o contexto de leitura para ReadNextLogRecord.
Sintaxe
CLFSUSER_API BOOL ReadLogRecord(
[in] PVOID pvMarshal,
[in] PCLFS_LSN plsnFirst,
[in] CLFS_CONTEXT_MODE eContextMode,
[out] PVOID *ppvReadBuffer,
[out] PULONG pcbReadBuffer,
[out] PCLFS_RECORD_TYPE peRecordType,
[out] PCLFS_LSN plsnUndoNext,
[out] PCLFS_LSN plsnPrevious,
[out] PVOID *ppvReadContext,
[in, out, optional] LPOVERLAPPED pOverlapped
);
Parâmetros
[in] pvMarshal
Um ponteiro para um contexto de marshaling alocado usando a função CreateLogMarshallingArea .
[in] plsnFirst
Um ponteiro para uma estrutura CLFS_LSN que especifica o LSN (número de sequência de log) do registro em que a operação de leitura deve ser iniciada.
Esse valor deve ser um LSN de um registro válido no intervalo ativo do log.
[in] eContextMode
O modo para o contexto de leitura retornado em *ppvReadContext.
A tabela a seguir identifica os três modos de leitura mutuamente exclusivos.
[out] ppvReadBuffer
Um ponteiro para uma variável que recebe um ponteiro para o registro de destino no bloco de E/S de log.
[out] pcbReadBuffer
Um ponteiro para uma variável que recebe o tamanho dos dados retornados em *ppvReadBuffer, em bytes.
[out] peRecordType
Um ponteiro para uma variável que recebe o tipo de leitura de registro.
Esse parâmetro é uma das constantes CLFS_RECORD_TYPE.
[out] plsnUndoNext
Um ponteiro para uma estrutura CLFS_LSN que recebe o LSN do próximo registro na cadeia de registros desfazer.
[out] plsnPrevious
Um ponteiro para uma estrutura CLFS_LSN que recebe o LSN do próximo registro na cadeia de registros anterior.
[out] ppvReadContext
Um ponteiro para uma variável que recebe um ponteiro para um contexto de leitura alocado pelo sistema quando uma leitura é bem-sucedida.
Se a função adiar a conclusão de uma operação, ela retornará um ponteiro de contexto de leitura válido e um status de erro de ERROR_IO_PENDING. Em todos os outros erros, o ponteiro de contexto de leitura é NULL. Para obter mais informações sobre como lidar com a conclusão adiada da função, consulte a seção Comentários deste tópico.
Depois de obter todos os registros de log solicitados, o cliente deve passar o contexto de leitura para TerminateReadLog para liberar a memória associada. A falha ao fazer isso resulta em perda de memória.
[in, out, optional] pOverlapped
Um ponteiro para uma estrutura OVERLAPPED , que é necessária para a operação assíncrona.
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 GetLastError.
A lista a seguir identifica os possíveis códigos de erro.
Comentários
A mensagem de erro ERROR_LOG_BLOCK_INCOMPLETE será retornada se o tamanho do bloco de log especificado por CreateLogMarshallingArea não for grande o suficiente para manter um bloco de log completo.
Se ReadLogRecord for chamado com uma estrutura pOverlapped 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 apontada pelo parâmetro ppvReadContext .
Se você tentar abrir mais contextos de leitura do que os buffers de número especificados em uma chamada anterior para CreateLogMarshallingArea, ERROR_LOG_BLOCK_EXHAUSTED será retornado.
Para concluir uma 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 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.
Depois que ReadLogRecord for concluído de forma assíncrona, o registro solicitado será lido do disco, mas não será resolvido para um ponteiro em *ppvReadBuffer.
Para concluir a leitura solicitada e obter um ponteiro válido para o registro de log, o cliente deve chamar ReadNextLogRecord, que passa o ponteiro de contexto de leitura que ReadLogRecord retorna.
Os contextos de leitura do CLFS não devem ser passados para mais de uma leitura assíncrona por vez ou a função falha com ERROR_BUSY.
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 |