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 |