iLog::AppendRecord 方法 (txlogpub.h)
将新记录写入日志末尾。
语法
HRESULT AppendRecord(
[in] BLOB *rgBlob,
[in] ULONG cBlob,
[in] BOOL fForceNow,
[in, out] LSN *plsn
);
参数
[in] rgBlob
指向要写入的数据的 BLOB 数组的指针。
[in] cBlob
rgBlob 数组的大小(以 元素为单位)。
[in] fForceNow
指示是否将数据强制到磁盘。 如果 为 TRUE,则必须将此记录的日志内容强制到磁盘,然后调用才会返回。 如果 为 FALSE,则此记录可能会缓冲到内存中,以在调用成功返回后写入。
[in, out] plsn
指向新追加的记录的 LSN 的指针。 如果不需要新追加的记录的 LSN,则此参数可以为 NULL。
返回值
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
ILog 写入或读取的每个日志记录都是数据的不透明 BLOB。 为方便调用方, AppendRecord 允许将多个 BLOB 连接到单个记录中;由于 ILog 的许多实现会将记录复制到内存中的缓冲区,因此调用方分配用于连接记录部分的内存可能效率低下。 但是,将记录追加到日志后, ILog 不提供从记录中提取单个 BLOB 的方法。 调用方负责分析从日志中读取的记录中的数据。 请参阅 ILog::ReadRecord。
调用方备注
失败返回值指示自上次成功强制日志以来追加到日志的任何记录都不能保证位于磁盘上。 ILog 接口不提供用于确定哪些记录已成功写入磁盘的方法。 如果需要知道哪些记录已成功写入磁盘,则必须对每条记录强制使用日志。实施者说明
如果 fForceNow 为 TRUE,则建议在从此方法返回之前,先使用 FlushFileBuffers 函数) 刷新文件缓冲区 (。要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | txlogpub.h |