ReadNextLogRecord 函数 (clfsw32.h)
读取通过调用 ReadLogRecord 或 ReadLogRestartArea 启动的序列中的下一条记录。 通过迭代使用 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
指向读取上下文的指针,系统在成功调用 ReadLogRecord 或 ReadLogRestartArea 期间分配和创建该上下文。
如果函数延迟完成操作,它将返回指向有效读取上下文的指针和 错误状态ERROR_IO_PENDING。 有关处理异步完成的信息,请参阅本主题的“备注”部分。
[out] ppvBuffer
指向变量的指针,该变量接收指向读取数据的指针。
[out] pcbBuffer
指向变量的指针,该变量接收 以 ppvReadBuffer 为单位返回的读取数据的大小(以字节为单位)。
[in, out] peRecordType
在输入时,指针指定下一个读取记录的记录类型筛选器,输出时指定返回的记录类型。
客户端可以指定以下任何记录类型。
值 | 含义 |
---|---|
|
仅读取用户数据记录。 |
|
仅读取重启记录。 |
|
读取所有重启和数据记录。 |
[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 读取上下文不应一次传递到多个异步读取中,否则函数失败并出现ERROR_READ。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | clfsw32.h |
Library | Clfsw32.lib |
DLL | Clfsw32.dll |