ReadLogRestartArea 函数 (clfsw32.h)

返回最后一个重新启动区域,该区域已成功写入与 WriteLogRestartArea 的封送处理区域关联的日志。 函数还返回读取上下文,该上下文允许调用方通过重启记录中的日志向后或向前游标。

当通过调用 ReadPreviousLogRestartArea 扫描当前重启之前的区域时,此读取上下文非常有用。

语法

CLFSUSER_API BOOL ReadLogRestartArea(
  [in]                PVOID        pvMarshal,
  [out]               PVOID        *ppvRestartBuffer,
  [out]               PULONG       pcbRestartBuffer,
  [out]               PCLFS_LSN    plsn,
  [out]               PVOID        *ppvContext,
  [in, out, optional] LPOVERLAPPED pOverlapped
);

参数

[in] pvMarshal

指向使用 CreateLogMarshallingArea 函数分配的封送上下文的指针。

[out] ppvRestartBuffer

指向变量的指针,该变量接收指向日志 I/O 块中重启数据的指针。

[out] pcbRestartBuffer

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

[out] plsn

指向 CLFS_LSN 结构的指针,该结构接收 (重新启动区域的 LSN) 日志序列号。

[out] ppvContext

指向变量的指针,该变量在读取成功时接收指向系统分配的读取上下文的指针。

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

获取所有请求的日志记录后,客户端必须将读取上下文传递给 TerminateReadLog 以释放关联的内存。 否则会导致内存泄漏。

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

[in, out, optional] pOverlapped

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

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

返回值

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

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

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

注解

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

通常, ReadLogRestartArea 仅在客户端重启期间(崩溃后或正常关闭后)使用。

如果日志中没有重启区域, ReadLogRestartArea 将失败,代码 ERROR_LOG_NO_RESTART

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

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

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

若要获取有效的指针,客户端必须调用 ReadPreviousLogRestartArea,该指针在 ReadLogRestartArea 返回的读取上下文指针中传递。

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

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

 

要求

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

另请参阅

CLFS_LSN

常见日志文件系统函数

CreateLogFile

OVERLAPPED

ReadPreviousLogRestartArea

同步和重叠输入和输出

WriteLogRestartArea