Compartilhar via


Método ILog::ReadRecord (txlogpub.h)

Ler um registro do log.

Sintaxe

HRESULT ReadRecord(
  [in]      LSN   lsnToRead,
  [in, out] LSN   *plsnPrev,
  [in, out] LSN   *plsnNext,
  [out]     BYTE  **ppbData,
  [out]     ULONG *pcbData
);

Parâmetros

[in] lsnToRead

O LSN do registro a ser lido.

[in, out] plsnPrev

Um ponteiro para o LSN do registro anterior (o registro imediatamente anterior ao registro a ser lido). Esse parâmetro poderá ser NULL se o LSN do registro anterior não for necessário. Esse parâmetro será 0 se não houver nenhum registro anterior no log ou se ocorrer um erro.

[in, out] plsnNext

Um ponteiro para o LSN do próximo registro (o registro imediatamente após o registro a ser lido). Esse parâmetro poderá ser NULL se o LSN do próximo registro não for necessário. Esse parâmetro será MAXLSN (0x7FFFFFFFFFFFFFFF) se não houver nenhum próximo registro no log. Esse parâmetro será 0 se ocorrer um erro.

[out] ppbData

Um ponteiro para uma variável que conterá um ponteiro para os dados de registro no retorno. A memória para esses dados é alocada por ReadRecord e liberada pelo chamador (consulte CoTaskMemFree). Esse parâmetro será NULL se ocorrer um erro.

[out] pcbData

Um ponteiro para uma variável que recebe o tamanho dos dados de registro, em bytes, no retorno.

Retornar valor

Esse método pode retornar os valores a seguir, bem como outros valores HRESULT .

Código de retorno Descrição
S_OK
O registro foi lido com êxito do log.
XACT_E_INVALIDLSN
lsnToRead está fora dos limites atuais do log. Consulte ILog::GetLogLimits.
E_INVALIDARG
LsnToRead está dentro dos limites atuais do log, mas não é o LSN de um registro no log.
E_OUTOFMEMORY
O registro não foi retornado devido à falta de memória.

Comentários

Embora os registros acrescentados ao log usando ILog::AppendRecord possam ser concatenados de vários BLOBs, ReadRecord retorna o registro como um único blob opaco de dados. O ILog não fornece nenhum método para extrair BLOBs individuais do registro. É responsabilidade do chamador analisar os dados em registros retornados por ReadRecord.

Anotações aos Chamadores

Se o log contiver registros muito grandes, esse método poderá falhar porque ReadRecord não pôde alocar memória suficiente para os dados de registro. Se o tamanho dos registros for limitado ou se você precisar apenas de uma parte inicial do registro, poderá ser mais eficiente chamar ILog::ReadRecordPrefix.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho txlogpub.h

Confira também

Ilog