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


Функция ReadNextLogRecord (clfsw32.h)

Считывает следующую запись в последовательности, инициированной вызовом ReadLogRecord или ReadLogRestartArea. С помощью readNextLogRecord итеративно клиент может считывать все записи указанного типа в журнале. Направление перечисления определяется указанием режима контекста при запуске последовательности чтения.

Синтаксис

CLFSUSER_API BOOL ReadNextLogRecord(
  [in, out]           PVOID             pvReadContext,
  [out]               PVOID             *ppvBuffer,
  [out]               PULONG            pcbBuffer,
  [in, out]           PCLFS_RECORD_TYPE peRecordType,
  [in, optional]      PCLFS_LSN         plsnUser,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PCLFS_LSN         plsnRecord,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

Параметры

[in, out] pvReadContext

Указатель на контекст чтения, который система выделяет и создает во время успешного вызова ReadLogRecord или ReadLogRestartArea.

Если функция откладывает завершение операции, она возвращает указатель на допустимый контекст чтения и состояние ошибки ERROR_IO_PENDING. Сведения об обработке асинхронного завершения см. в разделе Примечания этого раздела.

[out] ppvBuffer

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

[out] pcbBuffer

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

[in, out] peRecordType

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

Клиенты могут указать любой из следующих типов записей.

Значение Значение
ClfsDataRecord
Считываются только записи данных пользователя.
ClfsRestartRecord
Считываются только записи перезапуска.
ClfsClientRecord
Все записи перезапуска и данных считываются.

[in, optional] plsnUser

Указатель на структуру CLFS_LSN , указывающую клиент журнала для чтения этого номера журнала (LSN) в качестве следующего номера LSN вместо чтения вперед к следующей записи, чтения предыдущего номера LSN или чтения следующего номера LSN отмены.

Этот параметр позволяет клиентам журналов выполнять курсор через определяемые пользователем цепочки LSN в клиентских буферах. Связь этого параметра с текущим номером LSN, удерживаемым контекстом чтения, должна соответствовать режиму контекста ecxMode, указанному в точках входа ReadLogRecord ; в противном случае возвращается код ошибки ERROR_INVALID_PARAMETER .

[out] plsnUndoNext

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

[out] plsnPrevious

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

[out] plsnRecord

Указатель на структуру CLFS_LSN , которая получает номер LSN текущей записи, считываемой в контекст чтения.

[in, out, optional] pOverlapped

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

Этот параметр может иметь значение NULL , если асинхронная операция не используется.

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

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

В следующем списке указаны возможные коды ошибок:

Комментарии

Если функция ReadNextLogRecord возвращается с кодом состояния ERROR_IO_PENDING, клиент должен синхронизировать его выполнение с отложенным завершением перекрывающейся операции ввода-вывода с помощью GetOverlappedResult или одной из функций ожидания синхронизации. Дополнительные сведения см. в разделе Синхронизация и перекрытие входных и выходных данных.

После асинхронного завершения ReadNextLogRecord запрошенная запись считывается с диска, но не разрешается в указатель в *ppvReadBuffer. Чтобы получить допустимый указатель на запись, клиент должен вызвать ReadNextLogRecord во второй раз.

Примечание Контексты чтения common Log File System (CLFS) не являются потокобезопасны. Они не должны использоваться несколькими потоками одновременно.

Контексты чтения CLFS не должны передаваться в несколько асинхронных операций чтения за раз, в противном случае функция завершается сбоем с ERROR_READ.

 

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 R2 [только классические приложения]
Целевая платформа Windows
Header clfsw32.h
Библиотека Clfsw32.lib
DLL Clfsw32.dll

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

CLFS_LSN

CLFS_RECORD_TYPE

Общие функции файловой системы журнала

ПЕРЕКРЫВАЮЩИХСЯ

ReadLogRecord

ReadLogRestartArea

Синхронизация и перекрытие входных и выходных данных