/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_CLFSW32
#define _INC_CLFSW32
#include <clfs.h>
#include <clfsmgmt.h>
#if (_WIN32_WINNT >= 0x0600)
#ifdef __cplusplus
extern "C" {
#endif
typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext);
typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);
typedef FILE *PFILE;
typedef ULONG (__stdcall * CLFS_PRINT_RECORD_ROUTINE) (PFILE, CLFS_RECORD_TYPE, PVOID, ULONG);
WINBOOL WINAPI AdvanceLogBase(PVOID pvMarshal,PCLFS_LSN plsnBase,ULONG fFlags,LPOVERLAPPED pOverlapped);
WINBOOL WINAPI AlignReservedLog(PVOID pvMarshal,ULONG cReservedRecords,LONGLONG rgcbReservation,PLONGLONG pcbAlignReservation);
WINBOOL WINAPI AllocReservedLog(PVOID pvMarshal,ULONG cReservedRecords,PLONGLONG pcbAdjustment);
WINBOOL WINAPI AddLogContainer(HANDLE hLog,PULONGLONG pcbContainer,LPWSTR pwszContainerPath,LPVOID pReserved);
WINBOOL WINAPI AddLogContainerSet(HANDLE hLog,USHORT cContainers,PULONGLONG pcbContainer,LPWSTR *rgwszContainerPath,PVOID Reserved);
WINBOOL WINAPI CloseAndResetLogFile(HANDLE hLog);
WINBOOL WINAPI CreateLogContainerScanContext(
HANDLE hLog,
ULONG cFromContainer,
ULONG cContainers,
CLFS_SCAN_MODE eScanMode,
PCLFS_SCAN_CONTEXT pcxScan,
LPOVERLAPPED pOverlapped
);
HANDLE WINAPI CreateLogFile(
LPCWSTR pszLogFileName,
ACCESS_MASK fDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES psaLogFile,
ULONG fCreateDisposition,
ULONG fFlagsAndAttributes
);
WINBOOL WINAPI ScanLogContainers(
PCLFS_SCAN_CONTEXT pcxScan,
CLFS_SCAN_MODE eScanMode,
LPVOID pReserved
);
WINBOOL WINAPI CreateLogMarshallingArea(
HANDLE hLog,
CLFS_BLOCK_ALLOCATION pfnAllocBuffer,
CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
PVOID pvBlockAllocContext,
ULONG cbMarshallingBuffer,
ULONG cMaxWriteBuffers,
ULONG cMaxReadBuffers,
PVOID *ppvMarshal
);
WINBOOL WINAPI DeleteLogMarshallingArea(
PVOID pvMarshal
);
WINBOOL WINAPI DeleteLogByHandle(
HANDLE hLog
);
WINBOOL WINAPI DeleteLogFile(
LPCWSTR pszLogFileName,
PVOID pvReserved
);
WINBOOL WINAPI DeregisterManageableLogClient(
HANDLE hLog
);
WINBOOL WINAPI DumpLogRecords(
PWSTR pwszLogFileName,
CLFS_RECORD_TYPE fRecordType,
PCLFS_LSN plsnStart,
PCLFS_LSN plsnEnd,
PFILE pstrmOut,
CLFS_PRINT_RECORD_ROUTINE pfnPrintRecord,
CLFS_BLOCK_ALLOCATION pfnAllocBlock,
CLFS_BLOCK_DEALLOCATION pfnFreeBlock,
PVOID pvBlockAllocContext,
ULONG cbBlock,
ULONG cMaxBlocks
);
WINBOOL WINAPI ReadLogRecord(
PVOID pvMarshal,
PCLFS_LSN plsnFirst,
CLFS_CONTEXT_MODE eContextMode,
PVOID *ppvReadBuffer,
PULONG pcbReadBuffer,
PCLFS_RECORD_TYPE peRecordType,
PCLFS_LSN plsnUndoNext,
PCLFS_LSN plsnPrevious,
PVOID *ppvReadContext,
LPOVERLAPPED pOverlapped
);
WINBOOL WINAPI ReadNextLogRecord(
PVOID pvReadContext,
PVOID *ppvBuffer,
PULONG pcbBuffer,
PCLFS_RECORD_TYPE peRecordType,
PCLFS_LSN plsnUser,
PCLFS_LSN plsnUndoNext,
PCLFS_LSN plsnPrevious,
PCLFS_LSN plsnRecord,
LPOVERLAPPED pOverlapped
);
WINBOOL WINAPI FlushLogBuffers(
PVOID pvMarshal,
LPOVERLAPPED pOverlapped
);
WINBOOL WINAPI FlushLogToLsn(
PVOID pvMarshalContext,
PCLFS_LSN plsnFlush,
PCLFS_LSN plsnLastFlushed,
LPOVERLAPPED pOverlapped
);
WINBOOL WINAPI FreeReservedLog(
PVOID pvMarshal,
ULONG cReservedRecords,
PLONGLONG pcbAdjustment
);
WINBOOL WINAPI GetLogContainerName(
HANDLE hLog,
CLFS_CONTAINER_ID cidLogicalContainer,
LPCWSTR pwstrContainerName,
ULONG cLenContainerName,
PULONG pcActualLenContainerName
);
WINBOOL WINAPI GetLogFileInformation(
HANDLE hLog,
PCLFS_INFORMATION pinfoBuffer,
PULONG cbBuffer
);
WINBOOL WINAPI GetLogIoStatistics(
HANDLE hLog,
PVOID pvStatsBuffer,
ULONG cbStatsBuffer,
CLFS_IOSTATS_CLASS eStatsClass,
PULONG pcbStatsWritten
);
typedef LPVOID CLFS_LOG_ARCHIVE_CONTEXT;
typedef CLFS_LOG_ARCHIVE_CONTEXT *PCLFS_LOG_ARCHIVE_CONTEXT;
WINBOOL WINAPI GetNextLogArchiveExtent(
CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext,
CLFS_ARCHIVE_DESCRIPTOR rgadExtent[],
ULONG cDescriptors,
PULONG pcDescriptorsReturned
);
WINBOOL WINAPI PrepareLogArchive(
HANDLE hLog,
PWSTR pszBaseLogFileName,
ULONG cLen,
const PCLFS_LSN plsnLow,
const PCLFS_LSN plsnHigh,
PULONG pcActualLength,
PULONGLONG poffBaseLogFileData,
PULONGLONG pcbBaseLogFileLength,
PCLFS_LSN plsnBase,
PCLFS_LSN plsnLast,
PCLFS_LSN plsnCurrentArchiveTail,
PCLFS_LOG_ARCHIVE_CONTEXT ppvArchiveContext
);
WINBOOL WINAPI TerminateLogArchive(
CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext
);
ULONG WINAPI LsnBlockOffset(
const CLFS_LSN *plsn
);
CLFS_CONTAINER_ID WINAPI LsnContainer(
const CLFS_LSN *plsn
);
CLFS_LSN WINAPI LsnCreate(
CLFS_CONTAINER_ID cidContainer,
ULONG offBlock,
ULONG cRecord
);
ULONG WINAPI LsnRecordSequence(
const CLFS_LSN *plsn
);
WINBOOL WINAPI PrepareLogArchive(
HANDLE hLog,
PWSTR pszBaseLogFileName,
ULONG cLen,
const PCLFS_LSN plsnLow,
const PCLFS_LSN plsnHigh,
PULONG pcActualLength,
PULONGLONG poffBaseLogFileData,
PULONGLONG pcbBaseLogFileLength,
PCLFS_LSN plsnBase,
PCLFS_LSN plsnLast,
PCLFS_LSN plsnCurrentArchiveTail,
PCLFS_LOG_ARCHIVE_CONTEXT ppvArchiveContext
);
WINBOOL WINAPI QueryLogPolicy(
HANDLE hLog,
CLFS_MGMT_POLICY_TYPE ePolicyType,
PCLFS_MGMT_POLICY pPolicyBuffer,
PULONG pcbPolicyBuffer
);
WINBOOL WINAPI ReadLogArchiveMetadata(
CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext,
ULONG cbOffset,
ULONG cbBytesToRead,
PBYTE pbReadBuffer,
PULONG pcbBytesRead
);
WINBOOL WINAPI ReadLogRestartArea(
PVOID pvMarshal,
PVOID *ppvRestartBuffer,
PULONG pcbRestartBuffer,
PCLFS_LSN plsn,
PVOID *ppvContext,
LPOVERLAPPED pOverlapped
);
WINBOOL WINAPI ReadPreviousLogRestartArea(
PVOID pvReadContext,
PVOID *ppvRestartBuffer,
PULONG pcbRestartBuffer,
PCLFS_LSN plsnRestart,
LPOVERLAPPED pOverlapped
);
WINBOOL WINAPI RemoveLogContainer(
HANDLE hLog,
LPWSTR pwszContainerPath,
WINBOOL fForce,
LPVOID pReserved
);
WINBOOL WINAPI RemoveLogContainerSet(
HANDLE hLog,
USHORT cContainers,
LPWSTR *rgwszContainerPath,
WINBOOL fForce,
LPVOID pReserved
);
WINBOOL WINAPI ReserveAndAppendLog(
PVOID pvMarshal,
PCLFS_WRITE_ENTRY rgWriteEntries,
ULONG cWriteEntries,
PCLFS_LSN plsnUndoNext,
PCLFS_LSN plsnPrevious,
ULONG cReserveRecords,
LONGLONG rgcbReservation[],
ULONG fFlags,
PCLFS_LSN plsn,
LPOVERLAPPED pOverlapped
);
WINBOOL WINAPI ReserveAndAppendLogAligned(
PVOID pvMarshal,
PCLFS_WRITE_ENTRY rgWriteEntries,
ULONG cWriteEntries,
ULONG cbEntryAlignment,
PCLFS_LSN plsnUndoNext,
PCLFS_LSN plsnPrevious,
ULONG cReserveRecords,
LONGLONG rgcbReservation[],
ULONG fFlags,
PCLFS_LSN plsn,
LPOVERLAPPED overlapped
);
WINBOOL WINAPI SetEndOfLog(
HANDLE hLog,
PCLFS_LSN plsnEnd,
LPOVERLAPPED lpOverlapped
);
WINBOOL WINAPI SetLogArchiveMode(
HANDLE hLog,
CLFS_LOG_ARCHIVE_MODE eMode
);
WINBOOL WINAPI SetLogArchiveTail(
HANDLE hLog,
PCLFS_LSN plsnArchiveTail,
LPVOID pReserved
);
WINBOOL WINAPI TerminateReadLog(
PVOID pvCursorContext
);
WINBOOL WINAPI ValidateLog(
LPCWSTR pszLogFileName,
LPSECURITY_ATTRIBUTES psaLogFile,
PCLFS_INFORMATION pinfoBuffer,
PULONG pcbBuffer
);
#ifdef __cplusplus
}
#endif
#endif /* (_WIN32_WINNT >= 0x0600) */
#endif /*_INC_CLFSW32*/