Функция ReserveAndAppendLog (clfsw32.h)
Резервирует место для буферов журнала, добавляет запись журнала в журнал или выполняет оба действия. Функция является атомарной.
CLFSUSER_API BOOL ReserveAndAppendLog(
[in] PVOID pvMarshal,
[in, optional] PCLFS_WRITE_ENTRY rgWriteEntries,
[in] ULONG cWriteEntries,
[in, optional] PCLFS_LSN plsnUndoNext,
[in, optional] PCLFS_LSN plsnPrevious,
[in] ULONG cReserveRecords,
[in, out, optional] LONGLONG [] rgcbReservation,
[in] ULONG fFlags,
[out, optional] PCLFS_LSN plsn,
[in, out, optional] LPOVERLAPPED pOverlapped
);
[in] pvMarshal
Указатель на контекст маршалинга, выделенный с помощью функции CreateLogMarshallingArea .
[in, optional] rgWriteEntries
Указатель на массив CLFS_WRITE_ENTRY буферов для маршалирования в одну запись.
Этот параметр игнорируется, если параметр cWriteEntries равен нулю.
[in] cWriteEntries
Количество записей записи в массиве rgWriteEntries .
Если это значение не равно нулю, необходимо указать буфер в параметре rgWriteEntries .
[in, optional] plsnUndoNext
Указатель на структуру CLFS_LSN , задающую порядковый номер журнала (LSN) следующей записи в цепочке отмены.
[in, optional] plsnPrevious
Указатель на структуру CLFS_LSN , указывающую номер LSN предыдущей записи в предыдущей цепочке.
[in] cReserveRecords
Количество размеров записей в массиве rgcbReservation .
[in, out, optional] rgcbReservation
Указатель на массив размеров резервирования для каждой записи, указанной параметром cReserveRecords .
Этот параметр игнорируется, если параметр cReserveRecords равен нулю. Если размер резервирования отрицательный, резервирование этого размера освобождается.
Фактическое пространство, зарезервированное для каждой записи, включая требуемые издержки, возвращается в отдельных элементах массива при успешном завершении. Эти значения можно передать в функцию FreeReservedLog , чтобы настроить пространство, зарезервированное в области маршалинга.
[in] fFlags
Флаги, определяющие поведение этой функции.
Можно объединить одно или несколько следующих значений.
[out, optional] plsn
Указатель на структуру CLFS_LSN , получающую номер LSN добавленной записи.
[in, out, optional] pOverlapped
Указатель на структуру OVERLAPPED .
Этот параметр может иметь значение NULL , если асинхронная операция не используется.
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError .
В следующем списке указаны возможные коды ошибок:
Номер LSN, возвращаемый функцией ReserveAndAppendLog , не обязательно является следующим используемым номером LSN. Возвращаемый номер LSN представляет собой оценку следующего номера LSN и зависит от того, какие флаги задаются параметром fFlags . Возвращаемый номер LSN можно использовать при перемещении базового хвоста. Этот номер LSN становится недействительным при следующем вызове этой функции.
Если функция ReserveAndAppendLog возвращает ERROR_LOG_FILE_FULL, в журнале больше нет места. Это можно устранить одним из следующих способов:
- Бесплатные ненужные резервирования.
- Переведите базовый номер LSN, заключительный фрагмент архива журнала или и то, и другое, чтобы перезаработать контейнеры.
- Добавьте контейнеры в журнал.
Если функция ReserveAndAppendLog вызывается с допустимой структурой pOverlapped и дескриптор журнала создается с перекрывающимся параметром, то если вызов этой функции завершается сбоем с кодом ошибки ERROR_IO_PENDING, указатель на допустимый контекст чтения помещается в переменную, на которую указывает параметр ppvReadContext .
Чтобы завершить копирование записи журнала, клиент должен сначала синхронизировать его выполнение с отложенным завершением перекрывающейся операции ввода-вывода с помощью функции GetOverlappedResult или одной из функций ожидания синхронизации. Дополнительные сведения см. в разделе Синхронизация и перекрытие входных и выходных данных.
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | clfsw32.h |
Библиотека | Clfsw32.lib |
DLL | Clfsw32.dll |