1/** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6#ifndef _INC_CLFSW32 7#define _INC_CLFSW32 8#include <clfs.h> 9#include <clfsmgmt.h> 10 11#if (_WIN32_WINNT >= 0x0600) 12#ifdef __cplusplus 13extern "C" { 14#endif 15 16typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext); 17typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext); 18typedef FILE *PFILE; 19typedef ULONG (__stdcall * CLFS_PRINT_RECORD_ROUTINE) (PFILE, CLFS_RECORD_TYPE, PVOID, ULONG); 20 21WINBOOL WINAPI AdvanceLogBase(PVOID pvMarshal,PCLFS_LSN plsnBase,ULONG fFlags,LPOVERLAPPED pOverlapped); 22 23WINBOOL WINAPI AlignReservedLog(PVOID pvMarshal,ULONG cReservedRecords,LONGLONG rgcbReservation,PLONGLONG pcbAlignReservation); 24WINBOOL WINAPI AllocReservedLog(PVOID pvMarshal,ULONG cReservedRecords,PLONGLONG pcbAdjustment); 25 26WINBOOL WINAPI AddLogContainer(HANDLE hLog,PULONGLONG pcbContainer,LPWSTR pwszContainerPath,LPVOID pReserved); 27WINBOOL WINAPI AddLogContainerSet(HANDLE hLog,USHORT cContainers,PULONGLONG pcbContainer,LPWSTR *rgwszContainerPath,PVOID Reserved); 28WINBOOL WINAPI CloseAndResetLogFile(HANDLE hLog); 29 30WINBOOL WINAPI CreateLogContainerScanContext( 31 HANDLE hLog, 32 ULONG cFromContainer, 33 ULONG cContainers, 34 CLFS_SCAN_MODE eScanMode, 35 PCLFS_SCAN_CONTEXT pcxScan, 36 LPOVERLAPPED pOverlapped 37); 38 39HANDLE WINAPI CreateLogFile( 40 LPCWSTR pszLogFileName, 41 ACCESS_MASK fDesiredAccess, 42 DWORD dwShareMode, 43 LPSECURITY_ATTRIBUTES psaLogFile, 44 ULONG fCreateDisposition, 45 ULONG fFlagsAndAttributes 46); 47 48WINBOOL WINAPI ScanLogContainers( 49 PCLFS_SCAN_CONTEXT pcxScan, 50 CLFS_SCAN_MODE eScanMode, 51 LPVOID pReserved 52); 53 54WINBOOL WINAPI CreateLogMarshallingArea( 55 HANDLE hLog, 56 CLFS_BLOCK_ALLOCATION pfnAllocBuffer, 57 CLFS_BLOCK_DEALLOCATION pfnFreeBuffer, 58 PVOID pvBlockAllocContext, 59 ULONG cbMarshallingBuffer, 60 ULONG cMaxWriteBuffers, 61 ULONG cMaxReadBuffers, 62 PVOID *ppvMarshal 63); 64 65WINBOOL WINAPI DeleteLogMarshallingArea( 66 PVOID pvMarshal 67); 68 69WINBOOL WINAPI DeleteLogByHandle( 70 HANDLE hLog 71); 72 73WINBOOL WINAPI DeleteLogFile( 74 LPCWSTR pszLogFileName, 75 PVOID pvReserved 76); 77 78WINBOOL WINAPI DeregisterManageableLogClient( 79 HANDLE hLog 80); 81 82WINBOOL WINAPI DumpLogRecords( 83 PWSTR pwszLogFileName, 84 CLFS_RECORD_TYPE fRecordType, 85 PCLFS_LSN plsnStart, 86 PCLFS_LSN plsnEnd, 87 PFILE pstrmOut, 88 CLFS_PRINT_RECORD_ROUTINE pfnPrintRecord, 89 CLFS_BLOCK_ALLOCATION pfnAllocBlock, 90 CLFS_BLOCK_DEALLOCATION pfnFreeBlock, 91 PVOID pvBlockAllocContext, 92 ULONG cbBlock, 93 ULONG cMaxBlocks 94); 95 96WINBOOL WINAPI ReadLogRecord( 97 PVOID pvMarshal, 98 PCLFS_LSN plsnFirst, 99 CLFS_CONTEXT_MODE eContextMode, 100 PVOID *ppvReadBuffer, 101 PULONG pcbReadBuffer, 102 PCLFS_RECORD_TYPE peRecordType, 103 PCLFS_LSN plsnUndoNext, 104 PCLFS_LSN plsnPrevious, 105 PVOID *ppvReadContext, 106 LPOVERLAPPED pOverlapped 107); 108 109WINBOOL WINAPI ReadNextLogRecord( 110 PVOID pvReadContext, 111 PVOID *ppvBuffer, 112 PULONG pcbBuffer, 113 PCLFS_RECORD_TYPE peRecordType, 114 PCLFS_LSN plsnUser, 115 PCLFS_LSN plsnUndoNext, 116 PCLFS_LSN plsnPrevious, 117 PCLFS_LSN plsnRecord, 118 LPOVERLAPPED pOverlapped 119); 120 121WINBOOL WINAPI FlushLogBuffers( 122 PVOID pvMarshal, 123 LPOVERLAPPED pOverlapped 124); 125 126WINBOOL WINAPI FlushLogToLsn( 127 PVOID pvMarshalContext, 128 PCLFS_LSN plsnFlush, 129 PCLFS_LSN plsnLastFlushed, 130 LPOVERLAPPED pOverlapped 131); 132 133WINBOOL WINAPI FreeReservedLog( 134 PVOID pvMarshal, 135 ULONG cReservedRecords, 136 PLONGLONG pcbAdjustment 137); 138 139WINBOOL WINAPI GetLogContainerName( 140 HANDLE hLog, 141 CLFS_CONTAINER_ID cidLogicalContainer, 142 LPCWSTR pwstrContainerName, 143 ULONG cLenContainerName, 144 PULONG pcActualLenContainerName 145); 146 147WINBOOL WINAPI GetLogFileInformation( 148 HANDLE hLog, 149 PCLFS_INFORMATION pinfoBuffer, 150 PULONG cbBuffer 151); 152 153WINBOOL WINAPI GetLogIoStatistics( 154 HANDLE hLog, 155 PVOID pvStatsBuffer, 156 ULONG cbStatsBuffer, 157 CLFS_IOSTATS_CLASS eStatsClass, 158 PULONG pcbStatsWritten 159); 160 161typedef LPVOID CLFS_LOG_ARCHIVE_CONTEXT; 162typedef CLFS_LOG_ARCHIVE_CONTEXT *PCLFS_LOG_ARCHIVE_CONTEXT; 163 164WINBOOL WINAPI GetNextLogArchiveExtent( 165 CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext, 166 CLFS_ARCHIVE_DESCRIPTOR rgadExtent[], 167 ULONG cDescriptors, 168 PULONG pcDescriptorsReturned 169); 170 171WINBOOL WINAPI PrepareLogArchive( 172 HANDLE hLog, 173 PWSTR pszBaseLogFileName, 174 ULONG cLen, 175 const PCLFS_LSN plsnLow, 176 const PCLFS_LSN plsnHigh, 177 PULONG pcActualLength, 178 PULONGLONG poffBaseLogFileData, 179 PULONGLONG pcbBaseLogFileLength, 180 PCLFS_LSN plsnBase, 181 PCLFS_LSN plsnLast, 182 PCLFS_LSN plsnCurrentArchiveTail, 183 PCLFS_LOG_ARCHIVE_CONTEXT ppvArchiveContext 184); 185 186WINBOOL WINAPI TerminateLogArchive( 187 CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext 188); 189 190ULONG WINAPI LsnBlockOffset( 191 const CLFS_LSN *plsn 192); 193 194CLFS_CONTAINER_ID WINAPI LsnContainer( 195 const CLFS_LSN *plsn 196); 197 198CLFS_LSN WINAPI LsnCreate( 199 CLFS_CONTAINER_ID cidContainer, 200 ULONG offBlock, 201 ULONG cRecord 202); 203 204ULONG WINAPI LsnRecordSequence( 205 const CLFS_LSN *plsn 206); 207 208WINBOOL WINAPI PrepareLogArchive( 209 HANDLE hLog, 210 PWSTR pszBaseLogFileName, 211 ULONG cLen, 212 const PCLFS_LSN plsnLow, 213 const PCLFS_LSN plsnHigh, 214 PULONG pcActualLength, 215 PULONGLONG poffBaseLogFileData, 216 PULONGLONG pcbBaseLogFileLength, 217 PCLFS_LSN plsnBase, 218 PCLFS_LSN plsnLast, 219 PCLFS_LSN plsnCurrentArchiveTail, 220 PCLFS_LOG_ARCHIVE_CONTEXT ppvArchiveContext 221); 222 223WINBOOL WINAPI QueryLogPolicy( 224 HANDLE hLog, 225 CLFS_MGMT_POLICY_TYPE ePolicyType, 226 PCLFS_MGMT_POLICY pPolicyBuffer, 227 PULONG pcbPolicyBuffer 228); 229 230WINBOOL WINAPI ReadLogArchiveMetadata( 231 CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext, 232 ULONG cbOffset, 233 ULONG cbBytesToRead, 234 PBYTE pbReadBuffer, 235 PULONG pcbBytesRead 236); 237 238WINBOOL WINAPI ReadLogRestartArea( 239 PVOID pvMarshal, 240 PVOID *ppvRestartBuffer, 241 PULONG pcbRestartBuffer, 242 PCLFS_LSN plsn, 243 PVOID *ppvContext, 244 LPOVERLAPPED pOverlapped 245); 246 247WINBOOL WINAPI ReadPreviousLogRestartArea( 248 PVOID pvReadContext, 249 PVOID *ppvRestartBuffer, 250 PULONG pcbRestartBuffer, 251 PCLFS_LSN plsnRestart, 252 LPOVERLAPPED pOverlapped 253); 254 255WINBOOL WINAPI RemoveLogContainer( 256 HANDLE hLog, 257 LPWSTR pwszContainerPath, 258 WINBOOL fForce, 259 LPVOID pReserved 260); 261 262WINBOOL WINAPI RemoveLogContainerSet( 263 HANDLE hLog, 264 USHORT cContainers, 265 LPWSTR *rgwszContainerPath, 266 WINBOOL fForce, 267 LPVOID pReserved 268); 269 270WINBOOL WINAPI ReserveAndAppendLog( 271 PVOID pvMarshal, 272 PCLFS_WRITE_ENTRY rgWriteEntries, 273 ULONG cWriteEntries, 274 PCLFS_LSN plsnUndoNext, 275 PCLFS_LSN plsnPrevious, 276 ULONG cReserveRecords, 277 LONGLONG rgcbReservation[], 278 ULONG fFlags, 279 PCLFS_LSN plsn, 280 LPOVERLAPPED pOverlapped 281); 282 283WINBOOL WINAPI ReserveAndAppendLogAligned( 284 PVOID pvMarshal, 285 PCLFS_WRITE_ENTRY rgWriteEntries, 286 ULONG cWriteEntries, 287 ULONG cbEntryAlignment, 288 PCLFS_LSN plsnUndoNext, 289 PCLFS_LSN plsnPrevious, 290 ULONG cReserveRecords, 291 LONGLONG rgcbReservation[], 292 ULONG fFlags, 293 PCLFS_LSN plsn, 294 LPOVERLAPPED overlapped 295); 296 297WINBOOL WINAPI SetEndOfLog( 298 HANDLE hLog, 299 PCLFS_LSN plsnEnd, 300 LPOVERLAPPED lpOverlapped 301); 302 303WINBOOL WINAPI SetLogArchiveMode( 304 HANDLE hLog, 305 CLFS_LOG_ARCHIVE_MODE eMode 306); 307 308WINBOOL WINAPI SetLogArchiveTail( 309 HANDLE hLog, 310 PCLFS_LSN plsnArchiveTail, 311 LPVOID pReserved 312); 313 314WINBOOL WINAPI TerminateReadLog( 315 PVOID pvCursorContext 316); 317 318WINBOOL WINAPI ValidateLog( 319 LPCWSTR pszLogFileName, 320 LPSECURITY_ATTRIBUTES psaLogFile, 321 PCLFS_INFORMATION pinfoBuffer, 322 PULONG pcbBuffer 323); 324 325#ifdef __cplusplus 326} 327#endif 328#endif /* (_WIN32_WINNT >= 0x0600) */ 329#endif /*_INC_CLFSW32*/ 330