ClfsWriteRestartArea function (wdm.h)
The ClfsWriteRestartArea routine atomically appends a new restart record to a CLFS stream, flushes the restart record to stable storage, and optionally updates the base LSN of the stream.
Syntax
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
);
Parameters
[in, out] pvMarshalContext
A pointer to an opaque context that represents a marshalling area associated with a CLFS stream. The caller previously obtained this pointer by calling ClfsCreateMarshallingArea.
[in] pvRestartBuffer
A pointer to a buffer that contains the data for the restart record.
[in] cbRestartBuffer
The size, in bytes, of the buffer pointed to by pvRestartBuffer. This is the size of the restart data.
[in, optional] plsnBase
A pointer to a CLFS_LSN structure that specifies a new base LSN for the stream. If this parameter is NULL, the base LSN is not changed.
[in] fFlags
This parameter must be one of the following values.
Value | Meaning |
---|---|
0 | The restart record is placed in newly allocated space in an I/O block. The number of reserved records in the marshalling area is not changed. |
CLFS_FLAG_USE_RESERVATION | The restart record is placed in previously reserved space in an I/O block. The number of reserved records in the marshalling area is reduced by one. |
[out, optional] pcbWritten
A pointer to a ULONG-typed variable that receives the number of bytes actually forced to stable storage. This parameter can be NULL.
[out, optional] plsnNext
A pointer to a CLFS_LSN structure that receives the LSN of the newly written restart record.
Return value
ClfsWriteRestartArea returns STATUS_SUCCESS if it succeeds; otherwise, it returns one of the error codes defined in Ntstatus.h.
Remarks
Typically ClfsWriteRestartArea is called as the last act of a client checkpoint.
ClfsWriteRestartArea is a relatively expensive operation because it causes a flush of all records currently in the marshalling area along with a flush of stream and log metadata.
At any one time, only one marshalling area should be used to write data to a stream. Having two marshalling areas writing into the stream might result in stream corruption.
If you just want to set the base LSN of a stream, use ClfsAdvanceLogBase, which does not necessarily flush any data to stable storage.
For an explanation of CLFS concepts and terminology, see Common Log File System.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Available in Windows Server 2003 R2, Windows Vista, and later versions of Windows. |
Target Platform | Desktop |
Header | wdm.h (include Wdm.h) |
Library | Clfs.lib |
DLL | Clfs.sys |
IRQL | <= APC_LEVEL |