Share via


ILog::ReadRecord-Methode (txlogpub.h)

Liest einen Datensatz aus dem Protokoll.

Syntax

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

Parameter

[in] lsnToRead

Die LSN des zu lesenden Datensatzes.

[in, out] plsnPrev

Ein Zeiger auf die LSN des vorherigen Datensatzes (der Datensatz unmittelbar vor dem zu lesenden Datensatz). Dieser Parameter kann NULL sein, wenn die LSN des vorherigen Datensatzes nicht benötigt wird. Dieser Parameter ist 0, wenn kein vorheriger Datensatz im Protokoll vorhanden ist oder ein Fehler auftritt.

[in, out] plsnNext

Ein Zeiger auf die LSN des nächsten Datensatzes (der Datensatz, der unmittelbar auf den zu lesenden Datensatz folgt). Dieser Parameter kann NULL sein, wenn die LSN des nächsten Datensatzes nicht benötigt wird. Dieser Parameter ist MAXLSN (0x7FFFFFFFFFFFFFFF), wenn kein nächster Datensatz im Protokoll vorhanden ist. Dieser Parameter ist 0, wenn ein Fehler auftritt.

[out] ppbData

Ein Zeiger auf eine Variable, die bei der Rückgabe einen Zeiger auf die Datensatzdaten enthält. Der Speicher für diese Daten wird von ReadRecord zugeordnet und vom Aufrufer freigegeben (siehe CoTaskMemFree). Dieser Parameter ist NULL , wenn ein Fehler auftritt.

[out] pcbData

Ein Zeiger auf eine Variable, die bei der Rückgabe die Größe der Datensatzdaten in Bytes empfängt.

Rückgabewert

Diese Methode kann die folgenden Werte sowie andere HRESULT-Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Der Datensatz wurde erfolgreich aus dem Protokoll gelesen.
XACT_E_INVALIDLSN
lsnToRead liegt außerhalb der aktuellen Grenzwerte des Protokolls. Siehe ILog::GetLogLimits.
E_INVALIDARG
lsnToRead liegt innerhalb der aktuellen Grenzwerte des Protokolls, ist aber nicht die LSN eines Datensatzes im Protokoll.
E_OUTOFMEMORY
Der Datensatz wurde aufgrund eines Mangels an Arbeitsspeicher nicht zurückgegeben.

Hinweise

Obwohl Datensätze, die mithilfe von ILog::AppendRecord an das Protokoll angefügt werden, aus mehreren BLOBs verkettet werden können, gibt ReadRecord den Datensatz als einzelnes undurchsichtiges Blob mit Daten zurück. ILog bietet keine Methode zum Extrahieren einzelner BLOBs aus dem Datensatz. Es liegt in der Verantwortung des Aufrufers, die Daten in Datensätzen zu analysieren, die von ReadRecord zurückgegeben werden.

Hinweise für Anrufer

Wenn das Protokoll sehr große Datensätze enthält, schlägt diese Methode möglicherweise fehl, da ReadRecord nicht genügend Arbeitsspeicher für die Datensatzdaten zuweisen konnte. Wenn die Größe von Datensätzen begrenzt ist oder Sie nur einen anfänglichen Teil des Datensatzes benötigen, kann es effizienter sein, ILog::ReadRecordPrefix aufzurufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile txlogpub.h

Weitere Informationen

Ilog