Compartilhar via


Função ReadLogRestartArea (clfsw32.h)

Retorna a última área de reinicialização gravada com êxito no log associado à área de marshaling de WriteLogRestartArea. A função também retorna um contexto de leitura que permite que o chamador faça o cursor para trás ou para frente por meio de um log do registro de reinicialização.

Esse contexto de leitura é útil ao examinar áreas de reinicialização anteriores à atual invocando ReadPreviousLogRestartArea.

Sintaxe

CLFSUSER_API BOOL ReadLogRestartArea(
  [in]                PVOID        pvMarshal,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsn,
  [out]               PVOID        *ppvContext,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

Parâmetros

[in] pvMarshal

Um ponteiro para um contexto de marshaling alocado usando a função CreateLogMarshallingArea .

[out] ppvRestartBuffer

Um ponteiro para uma variável que recebe um ponteiro para os dados de reinicialização no bloco de E/S de log.

[out] pcbRestartBuffer

Um ponteiro para uma variável que recebe a quantidade de dados de reinicialização.

[out] plsn

Um ponteiro para uma estrutura CLFS_LSN que recebe o LSN (número de sequência de log) da área de reinicialização.

[out] ppvContext

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.

Nota Os contextos comuns de leitura do CLFS (Sistema de Arquivos de Log) não são thread-safe. Eles não devem ser usados por mais de um thread por vez ou passados para mais de uma leitura assíncrona por vez.
 

[in, out, optional] pOverlapped

Um ponteiro para uma estrutura OVERLAPPED necessária para a operação assíncrona.

Esse parâmetro poderá ser NULL se uma 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.

Normalmente, ReadLogRestartArea é usado somente durante a reinicialização do cliente, após uma falha ou após um desligamento normal.

Se não houver nenhuma área de reinicialização no log, ReadLogRestartArea falhará com o código ERROR_LOG_NO_RESTART.

Se ReadLogRestartArea 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 .

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 chamando 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 ReadLogRestartArea for concluído de forma assíncrona, a área de reinicialização solicitada será lida do disco, mas um ponteiro válido para ele não será colocado em *ppvRestartBuffer.

Para obter um ponteiro válido, o cliente deve chamar ReadPreviousLogRestartArea, que passa o ponteiro de contexto de leitura retornado por ReadLogRestartArea.

Nota Os contextos comuns de leitura do CLFS (Sistema de Arquivos de Log) não são thread-safe. Eles não devem ser usados por mais de um thread por vez.

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

   
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

Funções comuns do sistema de arquivos de log

CreateLogFile

OVERLAPPED

ReadPreviousLogRestartArea

Sincronização e entrada e saída sobrepostas

WriteLogRestartArea