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


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

Считывает предыдущую область перезапуска журнала относительно текущей записи перезапуска, указанной в контексте чтения pvReadContext. Этот контекст чтения создан ранее при вызове ReadLogRestartArea.

Синтаксис

CLFSUSER_API BOOL ReadPreviousLogRestartArea(
  [in]                PVOID        pvReadContext,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsnRestart,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

Параметры

[in] pvReadContext

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

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

[out] ppvRestartBuffer

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

[out] pcbRestartBuffer

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

[out] plsnRestart

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

[in, out, optional] pOverlapped

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

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

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

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

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

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

Комментарии

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

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

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

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

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

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

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

 

Требования

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

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

CLFS_LSN

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

CreateLogFile

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

ReadLogRestartArea

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