Поделиться через


Функция 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 создает контейнеры, размер которых округляется до нескольких 512 КБ (для выделенного журнала) или 1 МБ (для мультиплексированного журнала).
  • Если в журнале есть хотя бы один контейнер, и этот параметр является указателем NULL, CLFS создает новые контейнеры, которые имеют тот же размер, что и существующие контейнеры. (Все контейнеры в журнале должны иметь одинаковый размер.)
  • Если в журнале есть хотя бы один контейнер, и этот параметр является допустимым указателем, вызывающий объект предоставляет положительное целое число, которое является запрошенным размером в байтах отдельного контейнера. Запрошенный размер округляется до нескольких 512 КБ (для выделенного журнала) или 1 МБ (для общего журнала). Если округленный размер по крайней мере равен существующему размеру контейнера, CLFS создает новые контейнеры, которые совпадают с существующими контейнерами. При успешном возвращении этот параметр получает существующий размер контейнера. Если округленный размер меньше существующего размера контейнера, ClfsAddLogContainerSet.

[in] rguszContainerPath

Указатель на массив UNICODE_STRING структур. Каждая строка предоставляет имя пути для одного из новых контейнеров. Число элементов в массиве присваивается cContainers. Заданный путь может быть абсолютным или относительным к расположению базового файла журнала. Пути, относящиеся к базовому файлу журнала, должны начинаться с CLFS_CONTAINER_RELATIVE_PREFIX, который является строковым литеральным (L"%BLF%\").

Возвращаемое значение

ClfsAddLogContainer возвращает STATUS_SUCCESS в случае успешного выполнения; в противном случае возвращается один из кодов ошибок, определенных в Ntstatus.h.

Замечания

Контейнер — это непрерывная степень в стабильном хранилище. Например, контейнер может быть непрерывным файлом на диске. Журнал — это набор контейнеров вместе с базовым файлом журнала. Дополнительные сведения о контейнерах см. в разделе CLFS Stable Storage.

Контейнер, указанный путем относительно базового файла журнала, должен находиться в том же каталоге, что и базовый файл журнала или подкаталог базового файла журнала. Каталоги "." и ".". не допускаются в относительном пути.

Журнал может содержать некоторые контейнеры с абсолютными путями и другими контейнерами с относительными путями.

Контейнеры создаются в режиме без сжатия и инициализированы с нулями.

Журнал должен иметь по крайней мере два контейнера перед выполнением любого ввода-вывода.

Описание концепций и терминологии CLFS см. в common Log File System.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows Server 2003 R2, Windows Vista и более поздних версиях Windows.
целевая платформа Настольный
заголовка wdm.h (include Wdm.h)
библиотеки Clfs.lib
DLL Clfs.sys
IRQL <= APC_LEVEL

См. также

ClfsAddLogContainer

ClfsRemoveLogContainerSet