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 重启记录放置在 I/O 块中新分配的空间中。 封送处理区域中保留的记录数不会更改。
CLFS_FLAG_USE_RESERVATION 重启记录放置在 I/O 块中以前保留的空间中。 封送处理区域中的保留记录数减少 1。

[out, optional] pcbWritten

指向 ULONG 类型变量的指针,该变量接收实际强制到稳定存储的字节数。 此参数可以为 NULL。

[out, optional] plsnNext

指向 CLFS_LSN 结构的指针,该结构接收新写入的重启记录的 LSN。

返回值

如果成功,ClfsWriteRestartArea 将返回STATUS_SUCCESS;否则,它将返回 Ntstatus.h 中定义的错误代码之一。

注解

通常,ClfsWriteRestartArea 将作为客户端检查点的最后一个操作调用。

ClfsWriteRestartArea 是一个相对昂贵的操作,因为它会导致刷新当前位于封送处理区域中的所有记录,同时刷新流和日志元数据。

在任何时候,只应使用一个封送区域将数据写入流。 将两个封送区域写入流可能会导致流损坏。

如果只想设置流的基 LSN,请使用 ClfsAdvanceLogBase,这不一定会将任何数据刷新到稳定存储。

有关 CLFS 概念和术语的说明,请参阅 通用日志文件系统

要求

要求
最低受支持的客户端 在 Windows Server 2003 R2、Windows Vista 和更高版本的 Windows 中可用。
目标平台 桌面
标头 wdm.h (包括 Wdm.h)
Library Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

另请参阅

CLFS_LSN

ClfsAdvanceLogBase

ClfsCreateMarshallingArea

ClfsReadPreviousRestartArea

ClfsReadRestartArea