Condividi tramite


Metodo ILog::ReadRecord (txlogpub.h)

Leggere un record dal log.

Sintassi

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

Parametri

[in] lsnToRead

LSN del record da leggere.

[in, out] plsnPrev

Puntatore all'LSN del record precedente (il record che precede immediatamente il record da leggere). Questo parametro può essere NULL se l'LSN del record precedente non è necessario. Questo parametro è 0 se nel log non è presente alcun record precedente o se si verifica un errore.

[in, out] plsnNext

Puntatore all'LSN del record successivo (il record segue immediatamente il record da leggere). Questo parametro può essere NULL se l'LSN del record successivo non è necessario. Questo parametro è MAXLSN (0x7FFFFFFFFFFFFFFF) se nel log non è presente alcun record successivo. Questo parametro è 0 se si verifica un errore.

[out] ppbData

Puntatore a una variabile che conterrà un puntatore ai dati del record in caso di restituzione. La memoria per questi dati viene allocata dal chiamante ReadRecord e liberata dal chiamante (vedere CoTaskMemFree). Questo parametro è NULL se si verifica un errore.

[out] pcbData

Puntatore a una variabile che riceve le dimensioni dei dati del record, in byte, in restituzione.

Valore restituito

Questo metodo può restituire i valori seguenti, nonché altri valori HRESULT .

Codice restituito Descrizione
S_OK
Il record è stato letto correttamente dal log.
XACT_E_INVALIDLSN
lsnToRead non rientra nei limiti correnti del log. Vedere ILog::GetLogLimits.
E_INVALIDARG
lsnToRead si trova entro i limiti correnti del log, ma non è l'LSN di un record nel log.
E_OUTOFMEMORY
Il record non è stato restituito a causa di una mancanza di memoria.

Commenti

Anche se i record aggiunti al log usando ILog::AppendRecord possono essere concatenati da più BLOBs, ReadRecord restituisce il record come singolo BLOB opaco di dati. ILog non fornisce alcun metodo per estrarre singoli BLOB dal record. È responsabilità del chiamante analizzare i dati nei record restituiti da ReadRecord.

Note ai chiamanti

Se il log contiene record molto grandi, questo metodo potrebbe non riuscire perché ReadRecord non è riuscito a allocare memoria sufficiente per i dati dei record. Se la dimensione dei record è associata o se è necessaria solo una parte iniziale del record, potrebbe essere più efficiente chiamare ILog::ReadRecordPrefix.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione txlogpub.h

Vedi anche

Ilog