Функция ClfsWriteRestartArea (wdm.h)

Подпрограмма ClfsWriteRestartArea атомарно добавляет новую запись перезапуска в поток CLFS, записывает запись перезапуска в стабильное хранилище и при необходимости обновляет базовый номер LSN потока.

Синтаксис

CLFSUSER_API NTSTATUS ClfsWriteRestartArea(
  [in, out]       PVOID     pvMarshalContext,
  [in]            PVOID     pvRestartBuffer,
  [in]            ULONG     cbRestartBuffer,
  [in, optional]  PCLFS_LSN plsnBase,
  [in]            ULONG     fFlags,
  [out, optional] PULONG    pcbWritten,
  [out, optional] PCLFS_LSN plsnNext
);

Параметры

[in, out] pvMarshalContext

Указатель на непрозрачный контекст, представляющий область маршалинга, связанную с потоком CLFS. Вызывающий объект ранее получил этот указатель, вызвав ClfsCreateMarshallingArea.

[in] pvRestartBuffer

Указатель на буфер, содержащий данные для записи перезапуска.

[in] cbRestartBuffer

Размер (в байтах) буфера, на который указывает pvRestartBuffer. Это размер данных перезапуска.

[in, optional] plsnBase

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

[in] fFlags

Этот параметр должен иметь одно из следующих значений.

Значение Значение
0 Запись перезапуска помещается в только что выделенное пространство в блоке ввода-вывода. Количество зарезервированных записей в области маршалинга не изменяется.
CLFS_FLAG_USE_RESERVATION Запись перезапуска помещается в ранее зарезервированное пространство в блоке ввода-вывода. Количество зарезервированных записей в области маршалинга уменьшается на единицу.

[out, optional] pcbWritten

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

[out, optional] plsnNext

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

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

ClfsWriteRestartArea возвращает STATUS_SUCCESS в случае успешного выполнения; в противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.

Комментарии

Как правило, ClfsWriteRestartArea называется последним действием контрольной точки клиента.

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

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

Если вы просто хотите задать базовый номер LSN потока, используйте ClfsAdvanceLogBase, который не обязательно сбрасывает данные в стабильное хранилище.

Описание концепций и терминологии CLFS см. в разделе Common Log File System.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Server 2003 R2, Windows Vista и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть wdm.h (включая Wdm.h)
Библиотека Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

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

CLFS_LSN

ClfsAdvanceLogBase

ClfsCreateMarshallingArea

ClfsReadPreviousRestartArea

ClfsReadRestartArea