ReadPreviousLogRestartArea 函数 (clfsw32.h)

读取与读取上下文 pvReadContext 中指定的当前重启记录相关的上一个日志重启区域。 此读取上下文是以前通过调用 ReadLogRestartArea 创建的上下文。

语法

CLFSUSER_API BOOL ReadPreviousLogRestartArea(
  [in]                PVOID        pvReadContext,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsnRestart,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

参数

[in] pvReadContext

指向 ReadLogRestartArea 返回的系统分配读取上下文的指针。

即使这些函数返回 ERROR_IO_PENDING,它们仍返回指向有效读取上下文的指针。 有关异步完成的信息,请参阅本主题的“备注”部分。

[out] ppvRestartBuffer

指向变量的指针,该变量接收指向重启数据的指针。

[out] pcbRestartBuffer

指向变量的指针,该变量接收 *ppvRestartBuffer 处的重启数据的大小(以字节为单位)。

[out] plsnRestart

指向 CLFS_LSN 结构的指针,该结构接收此函数返回的重启区域的日志序列号 (LSN) 。

[in, out, optional] pOverlapped

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

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

返回值

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

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

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

注解

如果 CreateLogMarshallingArea 指定的日志块大小不足以容纳完整的日志块,则返回错误消息ERROR_LOG_BLOCK_INCOMPLETE。

如果 ReadPreviousLogRestartArea 失败并出现 错误代码ERROR_IO_PENDING,则指向有效读取上下文的指针将放置在 ppvReadContext 参数指向的变量中。

若要完成日志记录复制,客户端应首先使用 GetOverlappedResult 或其中一个同步 等待函数将其执行与重叠 I/O 操作的延迟完成同步。 有关详细信息,请参阅 同步和重叠输入和输出

ReadPreviousLogRestartArea 异步完成后,将从磁盘中读取请求的重启区域,但指向它的有效指针未放置在 *ppvRestartBuffer 中

若要获取有效的指针,客户端必须再次调用 ReadPreviousLogRestartArea

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

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

 

要求

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

另请参阅

CLFS_LSN

常见日志文件系统函数

CreateLogFile

OVERLAPPED

ReadLogRestartArea

同步和重叠输入和输出