Поделиться через


Метод ILog::ReadRecord (txlogpub.h)

Чтение записи из журнала.

Синтаксис

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

Параметры

[in] lsnToRead

Номер LSN считываемой записи.

[in, out] plsnPrev

Указатель на номер LSN предыдущей записи (запись, непосредственно предшествующую считываемой записи). Этот параметр может иметь значение NULL , если номер LSN предыдущей записи не требуется. Этот параметр имеет значение 0, если в журнале нет предыдущей записи или возникает ошибка.

[in, out] plsnNext

Указатель на номер LSN следующей записи (запись сразу после записи для чтения). Этот параметр может иметь значение NULL , если номер LSN следующей записи не требуется. Этот параметр имеет значение MAXLSN (0x7FFFFFFFFFFFFFFF), если в журнале нет следующей записи. Этот параметр имеет значение 0 при возникновении ошибки.

[out] ppbData

Указатель на переменную, которая будет содержать указатель на данные записи при возврате. Память для этих данных выделяется с помощью ReadRecord и освобождается вызывающим объектом (см. CoTaskMemFree). При возникновении ошибки этот параметр имеет значение NULL .

[out] pcbData

Указатель на переменную, которая получает размер данных записи в байтах при возврате.

Возвращаемое значение

Этот метод может возвращать следующие значения, а также другие значения HRESULT .

Код возврата Описание
S_OK
Запись успешно считана из журнала.
XACT_E_INVALIDLSN
Значение lsnToRead выходит за пределы текущего журнала. См. раздел ILog::GetLogLimits.
E_INVALIDARG
Значение lsnToRead находится в пределах текущего журнала, но не является номером LSN записи в журнале.
E_OUTOFMEMORY
Запись не была возвращена из-за нехватки памяти.

Комментарии

Хотя записи, добавленные в журнал с помощью ILog::AppendRecord , могут быть объединены из нескольких BLOB-объектов, ReadRecord возвращает запись в виде одного непрозрачного большого двоичного объекта данных. ILog не предоставляет метод для извлечения отдельных BLOB-объектов из записи. Вызывающий объект отвечает за анализ данных в записях, возвращаемых методом ReadRecord.

Примечания к вызывающим абонентам

Если журнал содержит очень большие записи, этот метод может завершиться ошибкой, так как ReadRecord не удалось выделить достаточный объем памяти для данных записей. Если размер записей ограничен или требуется только начальная часть записи, может быть эффективнее вызвать ILog::ReadRecordPrefix.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header txlogpub.h

См. также раздел

ILog