ReadNextLogRecord 函数 (clfsw32.h)

读取通过调用 ReadLogRecordReadLogRestartArea 启动的序列中的下一条记录。 通过迭代使用 ReadNextLogRecord ,客户端可以读取日志中指定类型的所有记录。 枚举的方向是通过在开始读取序列时指定上下文模式来确定的。

语法

CLFSUSER_API BOOL ReadNextLogRecord(
  [in, out]           PVOID             pvReadContext,
  [out]               PVOID             *ppvBuffer,
  [out]               PULONG            pcbBuffer,
  [in, out]           PCLFS_RECORD_TYPE peRecordType,
  [in, optional]      PCLFS_LSN         plsnUser,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PCLFS_LSN         plsnRecord,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

参数

[in, out] pvReadContext

指向读取上下文的指针,系统在成功调用 ReadLogRecordReadLogRestartArea 期间分配和创建该上下文。

如果函数延迟完成操作,它将返回指向有效读取上下文的指针和 错误状态ERROR_IO_PENDING。 有关处理异步完成的信息,请参阅本主题的“备注”部分。

[out] ppvBuffer

指向变量的指针,该变量接收指向读取数据的指针。

[out] pcbBuffer

指向变量的指针,该变量接收 以 ppvReadBuffer 为单位返回的读取数据的大小(以字节为单位)。

[in, out] peRecordType

在输入时,指针指定下一个读取记录的记录类型筛选器,输出时指定返回的记录类型。

客户端可以指定以下任何记录类型。

含义
ClfsDataRecord
仅读取用户数据记录。
ClfsRestartRecord
仅读取重启记录。
ClfsClientRecord
读取所有重启和数据记录。

[in, optional] plsnUser

指向 CLFS_LSN 结构的指针,指定日志客户端读取此日志序列号 (LSN) 作为下一个 LSN,而不是向前读取到下一条记录、读取上一个 LSN 或读取下一个撤消 LSN。

此参数使日志客户端能够通过客户端缓冲区中的用户定义的 LSN 链进行游标。 此参数与读取上下文持有的当前 LSN 的关系必须与 ReadLogRecord 入口点中指定的上下文模式 ecxMode 保持一致;否则,将返回ERROR_INVALID_PARAMETER的错误代码。

[out] plsnUndoNext

指向 CLFS_LSN 结构的指针,该结构接收撤消记录链中下一条记录的 LSN。

[out] plsnPrevious

指向 CLFS_LSN 结构的指针,该结构接收上一条记录链中下一条记录的 LSN。

[out] plsnRecord

指向 CLFS_LSN 结构的指针,该结构接收读取到读取上下文中的当前记录的 LSN。

[in, out, optional] pOverlapped

指向异步操作所需的 OVERLAPPED 结构的指针。

如果未使用异步操作,此参数可以为 NULL

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

以下列表标识了可能的错误代码:

注解

如果 ReadNextLogRecord 返回状态代码 为 ERROR_IO_PENDING,则客户端应通过使用 GetOverlappedResult 或其中一个同步 等待函数,将其执行与重叠 I/O 操作的延迟完成同步。 有关详细信息,请参阅 同步和重叠输入和输出

ReadNextLogRecord 异步完成后,将从磁盘中读取请求的记录,但不会解析为 *ppvReadBuffer 中的指针。 若要获取指向记录的有效指针,客户端必须再次调用 ReadNextLogRecord

注意 常见的日志文件系统 (CLFS) 读取上下文不是线程安全的。 不应一次由多个线程使用它们。

CLFS 读取上下文不应一次传递到多个异步读取中,否则函数失败并出现ERROR_READ。

 

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 R2 [仅限桌面应用]
目标平台 Windows
标头 clfsw32.h
Library Clfsw32.lib
DLL Clfsw32.dll

另请参阅

CLFS_LSN

CLFS_RECORD_TYPE

常见日志文件系统函数

OVERLAPPED

ReadLogRecord

ReadLogRestartArea

同步和重叠输入和输出