/** * 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 #include #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*/