Функция 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 , чтобы освободить связанную память. Если это не сделать, это приведет к утечке памяти.
[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 не должны передаваться в несколько асинхронных операций чтения за раз, иначе функция завершается сбоем с ERROR_BUSY.
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | clfsw32.h |
Библиотека | Clfsw32.lib |
DLL | Clfsw32.dll |
См. также раздел
Общие функции файловой системы журнала