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


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

Возвращает последнюю область перезапуска, которая успешно записана в журнал, связанный с областью маршалинга WriteLogRestartArea. Функция также возвращает контекст чтения, который позволяет вызывающей стороне навести курсор назад или вперед через журнал из записи перезапуска.

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

Синтаксис

CLFSUSER_API BOOL ReadLogRestartArea(
  [in]                PVOID        pvMarshal,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsn,
  [out]               PVOID        *ppvContext,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

Параметры

[in] pvMarshal

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

[out] ppvRestartBuffer

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

[out] pcbRestartBuffer

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

[out] plsn

Указатель на структуру CLFS_LSN , которая получает номер журнала (LSN) области перезапуска.

[out] ppvContext

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

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

После получения всех запрошенных записей журнала клиент должен передать контекст чтения в TerminateReadLog , чтобы освободить связанную память. Если это не сделать, это приведет к утечке памяти.

Примечание Общие контексты чтения файловой системы журналов (CLFS) не являются потокобезопасны. Они не должны использоваться несколькими потоками одновременно или передаваться в несколько асинхронных операций чтения за раз.
 

[in, out, optional] pOverlapped

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

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

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

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

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

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

Комментарии

Сообщение об ошибке ERROR_LOG_BLOCK_INCOMPLETE возвращается, если размер блока журнала, заданный параметром CreateLogMarshallingArea , недостаточно велик для хранения полного блока журнала.

Как правило, ReadLogRestartArea используется только во время перезапуска клиента после сбоя или после нормального завершения работы.

Если в журнале нет области перезапуска, ReadLogRestartArea завершается ошибкой с кодом ERROR_LOG_NO_RESTART.

Если ReadLogRestartArea завершается сбоем с кодом ошибки ERROR_IO_PENDING, указатель на допустимый контекст чтения помещается в переменную, на которую указывает параметр ppvReadContext .

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

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

Чтобы получить допустимый указатель, клиент должен вызвать Метод ReadPreviousLogRestartArea, который передает указатель контекста чтения, возвращенный ReadLogRestartArea.

Примечание Общие контексты чтения файловой системы журналов (CLFS) не являются потокобезопасны. Они не должны использоваться несколькими потоками одновременно.

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

 

Требования

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

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

CLFS_LSN

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

CreateLogFile

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

ReadPreviousLogRestartArea

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

WriteLogRestartArea