dumpLogRecords 函数 (clfsw32.h)

扫描指定的日志;根据记录类型筛选日志记录;和 将记录放在调用方打开的输出文件流中。

语法

CLFSUSER_API BOOL DumpLogRecords(
  [in]           PWSTR                     pwszLogFileName,
  [in]           CLFS_RECORD_TYPE          fRecordType,
  [in, optional] PCLFS_LSN                 plsnStart,
  [in, optional] PCLFS_LSN                 plsnEnd,
  [in, optional] PFILE                     pstrmOut,
  [in, optional] CLFS_PRINT_RECORD_ROUTINE pfnPrintRecord,
  [in, optional] CLFS_BLOCK_ALLOCATION     pfnAllocBlock,
  [in, optional] CLFS_BLOCK_DEALLOCATION   pfnFreeBlock,
  [in, optional] PVOID                     pvBlockAllocContext,
  [in]           ULONG                     cbBlock,
  [in]           ULONG                     cMaxBlocks
);

参数

[in] pwszLogFileName

日志流的名称。

此名称是在使用 CreateLogFile 创建日志时指定的。 以下示例标识要使用的格式:

日志:<log name>[::<log stream name>]

<日志名称> 对应于文件系统中的有效文件路径。

<日志流名称> 是日志中日志流的唯一名称。

有关详细信息,请参阅 日志类型

[in] fRecordType

要读取的记录的类型。

此参数可以是以下一个或多个 CLFS_RECORD_TYPE常量

含义
ClfsNullRecord
使用 ClfsDataRecord 的默认记录类型。
ClfsDataRecord
读取用户数据记录。
ClfsRestartRecord
读取重启记录。
ClfsClientRecord
同时读取重启和数据记录。
ClfsClientRecord
为所有有效数据或重启记录指定掩码。

[in, optional] plsnStart

指向 CLFS_LSN 的指针,指定日志转储序列的起始日志序列号 (LSN) 。

如果指定此参数,则 LSN 必须是日志活动部分中有效日志记录的地址;否则,调用将失败,状态 ERROR_INVALID_PARAMETER

如果未指定此参数,则转储序列的开头是活动日志的开头。

[in, optional] plsnEnd

指向 CLFS_LSN 的指针,指定转储序列的结束位置的 LSN。

如果此 LSN 超出 LSN 范围的末尾,则函数返回 ERROR_HANDLE_EOF

plsnStart 不同,此值不必是活动日志中有效记录的 LSN,但可以是任何有效的 LSN。 只有 LSN 值小于或等于 plsnEnd 的 记录才会放置在输出流中。

如果此参数为 NULL,则转储函数使用活动日志 (日志) 头的最后一个 LSN。

[in, optional] pstrmOut

指向在其中放置日志记录的打开输出流的指针。

如果未指定此参数,则使用“stdout”作为默认值。

[in, optional] pfnPrintRecord

用户定义的回调例程,用于设置用户定义的缓冲区的格式并将其打印到输出流 pstrmOut

DumpLogRecords 函数以本机方式将其内部记录标头输出到 pstrmOut,但依赖于用户定义的回调来设置用户缓冲区的格式。

如果此参数为 NULL,DumpLogRecords 会将用户记录数据作为十六进制数字放置在输出流中。

[in, optional] pfnAllocBlock

为日志块分配内存的回调函数。

如果此参数为 NULL,则公共日志文件系统 (CLFS) 提供默认的块分配函数。 如果使用 pfnFreeBuffer 参数指定了释放块回调,则此参数不能为 NULL

以下示例标识块分配回调函数的语法:

typedef PVOID (* CLFS_BLOCK_ALLOCATION) (voidULONG cbBufferSize, PVOID pvUserContext);

[in, optional] pfnFreeBlock

释放 由 pfnAllocBuffer 分配的日志块的回调函数。

如果此参数为 NULL,则 CLFS 提供默认的块解除分配函数。 如果使用 pfnAllocBuffer 参数指定了块分配回调,则此参数不能为 NULL

以下示例标识了释放块回调函数的语法:

typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);

“ClfsBlockDeallocProc”的 buffer 参数必须指向使用 pfnAllocBuffer 指向的回调分配的块。

[in, optional] pvBlockAllocContext

指向缓冲区的指针,该缓冲区作为用户上下文传递给块分配和解除分配例程(如果指定了缓冲区)。

如果 pfnAllocBufferNULL,则忽略此参数。

[in] cbBlock

记录封送到的缓冲区的大小(以字节为单位)。

如果记录的长度超过此值,则无法追加或读取记录。

[in] cMaxBlocks

可随时为读取操作分配的最大块数。

读取上下文至少使用一个读取块。

返回值

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

如果函数失败,则返回值为零 (0)。 要获得更多的错误信息,请调用 GetLastError。 以下列表标识了可能的错误代码:

要求

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

另请参阅

CLFS_LSN

CLFS_RECORD_TYPE

常见日志文件系统函数