ClfsAddLogContainerSet 函数 (wdm.h)

ClfsAddLogContainerSet 例程以原子方式将一组容器添加到 CLFS 日志。

语法

CLFSUSER_API NTSTATUS ClfsAddLogContainerSet(
  [in]           PLOG_FILE_OBJECT plfoLog,
  [in]           USHORT           cContainers,
  [in, optional] PULONGLONG       pcbContainer,
  [in]           PUNICODE_STRING  rguszContainerPath
);

参数

[in] plfoLog

指向 LOG_FILE_OBJECT 结构的指针,该结构表示将向其添加容器的日志。 调用方以前通过调用 ClfsCreateLogFile 获取了此指针。

[in] cContainers

集中的容器数。 这是 rguszContainerPath 数组中的元素数。

[in, optional] pcbContainer

指向 ULONGLONG 类型变量的指针。 此参数的角色取决于日志当前是否至少有一个容器。

  • 如果日志当前没有容器,则调用方将提供一个正整数,即单个容器的请求大小(以字节为单位)。 CLFS 创建的容器是专用日志) 的请求大小舍入为 512KB (的倍数,对于多路复用日志) 为 1MB (。
  • 如果日志当前至少有一个容器,并且此参数为 NULL 指针,则 CLFS 会创建与现有容器大小相同的新容器。 (日志中的所有容器的大小必须相同。)
  • 如果日志当前至少有一个容器,并且此参数是有效的指针,则调用方将提供一个正整数,该整数是单个容器的请求大小(以字节为单位)。 对于专用日志) ,请求的大小向上舍入为 512KB (的倍数,对于共享日志) 为 1MB (。 如果舍入后的大小至少与现有容器大小一样大,则 CLFS 会创建与现有容器大小相同的新容器。 成功返回后,此参数将接收现有容器大小。 如果舍入后的大小小于现有容器大小, 则 ClfsAddLogContainerSet 将失败。

[in] rguszContainerPath

指向 UNICODE_STRING 结构的数组的指针。 每个字符串提供其中一个新容器的路径名称。 数组中的元素数由 cContainers 提供。 给定路径可以是绝对路径,也可以是相对于基本日志文件的位置。 相对于基本日志文件的路径必须以 CLFS_CONTAINER_RELATIVE_PREFIX 开头,这是 (L“%BLF%\”) 的字符串文本。

返回值

如果 ClfsAddLogContainer 成功,则返回STATUS_SUCCESS;否则,它将返回 Ntstatus.h 中定义的错误代码之一。

注解

容器是稳定存储上的连续盘区。 例如,容器可以是磁盘上的连续文件。 日志是一组容器以及一个基本日志文件。 有关容器的详细信息,请参阅 CLFS 稳定存储

由相对于基本日志文件的路径指定的容器必须与基本日志文件或基本日志文件的子目录位于同一目录中。 相对路径中不允许使用目录“.”和“..”。

日志可以包含一些具有绝对路径的容器,而具有相对路径的其他容器。

容器在非压缩模式下创建,并使用零初始化。

日志必须至少具有两个容器,然后才能对日志执行任何 I/O。

有关 CLFS 概念和术语的说明,请参阅 通用日志文件系统

要求

要求
最低受支持的客户端 在 Windows Server 2003 R2、Windows Vista 和更高版本的 Windows 中可用。
目标平台 桌面
标头 wdm.h (包括 Wdm.h)
Library Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

另请参阅

ClfsAddLogContainer

ClfsRemoveLogContainerSet