Функция CreateLogMarshallingArea (clfsw32.h)

Создает область маршалинга для журнала и при успешном выполнении возвращает контекст маршалинга. Перед созданием области маршалинга журнал должен содержать по крайней мере один контейнер.

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

Записи журнала записываются путем вызова ReserveAndAppendLog.

Синтаксис

CLFSUSER_API BOOL CreateLogMarshallingArea(
  [in]           HANDLE                  hLog,
  [in, optional] CLFS_BLOCK_ALLOCATION   pfnAllocBuffer,
  [in, optional] CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
  [in, optional] PVOID                   pvBlockAllocContext,
  [in]           ULONG                   cbMarshallingBuffer,
  [in]           ULONG                   cMaxWriteBuffers,
  [in]           ULONG                   cMaxReadBuffers,
  [out]          PVOID                   *ppvMarshal
);

Параметры

[in] hLog

Дескриптор журнала, полученного из CreateLogFile.

Дескриптор журнала может ссылаться на выделенный или мультиплексный журнал.

[in, optional] pfnAllocBuffer

Функция обратного вызова, которая выделяет память для блоков журнала.

Если этот параметр имеет значение NULL, общая файловая система журналов (CLFS) предоставляет функцию выделения блоков по умолчанию. Этот параметр не может иметь значение NULL , если обратный вызов с освобождением блоков указан с помощью параметра pfnFreeBuffer .

В следующем примере идентифицируется синтаксис функции обратного вызова выделения блоков:

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

[in, optional] pfnFreeBuffer

Функция обратного вызова, которая освобождает блоки журнала, выделенные pfnAllocBuffer.

Если этот параметр имеет значение NULL, CLFS предоставляет функцию освобождения блока по умолчанию. Этот параметр не может иметь значение NULL , если обратный вызов выделения блока указан с помощью параметра pfnAllocBuffer .

В следующем примере идентифицируется синтаксис функции обратного вызова для освобождения блоков:

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

Параметр buffer объекта ClfsBlockDeallocProc должен указывать на блок, выделенный с помощью обратного вызова, на который указывает pfnAllocBuffer.

[in, optional] pvBlockAllocContext

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

Если pfnAllocBuffer имеет значение NULL, этот параметр игнорируется.

[in] cbMarshallingBuffer

Размер (в байтах) отдельных блоков ввода-вывода журнала, которые будут использоваться новой областью маршалинга. Это значение должно быть кратно размеру сектора на стабильном носителе хранилища. Размер сектора — это значение, возвращаемое в параметре lpBytesPerSector функции GetDiskFreeSpace .

Записи не могут быть добавлены или прочитаны, если они длиннее этого значения.

[in] cMaxWriteBuffers

Максимальное количество блоков, которое может быть выделено в любое время для операций записи.

Это значение может повлиять на частоту сброса данных. Если вам не нужно указывать ограничение для управления частотой цикла очистки данных, укажите INFINITE.

[in] cMaxReadBuffers

Максимальное количество блоков, которые можно выделить в любое время для операций чтения.

Контексты чтения используют по крайней мере один блок чтения.

[out] ppvMarshal

Указатель на контекст маршалинга, который CLFS выделяет при успешном завершении CreateLogMarshallingArea .

Этот контекст должен использоваться со всеми операциями чтения, добавления, записи и очистки в областях маршалинга журналов. Все операции, которые обращаются к областям маршалинга с помощью контекста маршалинга, являются потокобезопасны. Этот параметр имеет значение NULL , если операция не выполнена успешно.

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

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

В следующем списке указаны возможные коды ошибок:

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 R2 [только классические приложения]
Целевая платформа Windows
Header clfsw32.h
Библиотека Clfsw32.lib
DLL Clfsw32.dll

См. также раздел

Общие функции файловой системы журнала

CreateLogFile

DeleteLogMarshallingArea