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 13 extern "C" { 14 #endif 15 16 typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext); 17 typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext); 18 typedef FILE *PFILE; 19 typedef ULONG (__stdcall * CLFS_PRINT_RECORD_ROUTINE) (PFILE, CLFS_RECORD_TYPE, PVOID, ULONG); 20 21 WINBOOL WINAPI AdvanceLogBase(PVOID pvMarshal,PCLFS_LSN plsnBase,ULONG fFlags,LPOVERLAPPED pOverlapped); 22 23 WINBOOL WINAPI AlignReservedLog(PVOID pvMarshal,ULONG cReservedRecords,LONGLONG rgcbReservation,PLONGLONG pcbAlignReservation); 24 WINBOOL WINAPI AllocReservedLog(PVOID pvMarshal,ULONG cReservedRecords,PLONGLONG pcbAdjustment); 25 26 WINBOOL WINAPI AddLogContainer(HANDLE hLog,PULONGLONG pcbContainer,LPWSTR pwszContainerPath,LPVOID pReserved); 27 WINBOOL WINAPI AddLogContainerSet(HANDLE hLog,USHORT cContainers,PULONGLONG pcbContainer,LPWSTR *rgwszContainerPath,PVOID Reserved); 28 WINBOOL WINAPI CloseAndResetLogFile(HANDLE hLog); 29 30 WINBOOL 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 39 HANDLE WINAPI CreateLogFile( 40 LPCWSTR pszLogFileName, 41 ACCESS_MASK fDesiredAccess, 42 DWORD dwShareMode, 43 LPSECURITY_ATTRIBUTES psaLogFile, 44 ULONG fCreateDisposition, 45 ULONG fFlagsAndAttributes 46 ); 47 48 WINBOOL WINAPI ScanLogContainers( 49 PCLFS_SCAN_CONTEXT pcxScan, 50 CLFS_SCAN_MODE eScanMode, 51 LPVOID pReserved 52 ); 53 54 WINBOOL 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 65 WINBOOL WINAPI DeleteLogMarshallingArea( 66 PVOID pvMarshal 67 ); 68 69 WINBOOL WINAPI DeleteLogByHandle( 70 HANDLE hLog 71 ); 72 73 WINBOOL WINAPI DeleteLogFile( 74 LPCWSTR pszLogFileName, 75 PVOID pvReserved 76 ); 77 78 WINBOOL WINAPI DeregisterManageableLogClient( 79 HANDLE hLog 80 ); 81 82 WINBOOL 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 96 WINBOOL 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 109 WINBOOL 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 121 WINBOOL WINAPI FlushLogBuffers( 122 PVOID pvMarshal, 123 LPOVERLAPPED pOverlapped 124 ); 125 126 WINBOOL WINAPI FlushLogToLsn( 127 PVOID pvMarshalContext, 128 PCLFS_LSN plsnFlush, 129 PCLFS_LSN plsnLastFlushed, 130 LPOVERLAPPED pOverlapped 131 ); 132 133 WINBOOL WINAPI FreeReservedLog( 134 PVOID pvMarshal, 135 ULONG cReservedRecords, 136 PLONGLONG pcbAdjustment 137 ); 138 139 WINBOOL WINAPI GetLogContainerName( 140 HANDLE hLog, 141 CLFS_CONTAINER_ID cidLogicalContainer, 142 LPCWSTR pwstrContainerName, 143 ULONG cLenContainerName, 144 PULONG pcActualLenContainerName 145 ); 146 147 WINBOOL WINAPI GetLogFileInformation( 148 HANDLE hLog, 149 PCLFS_INFORMATION pinfoBuffer, 150 PULONG cbBuffer 151 ); 152 153 WINBOOL WINAPI GetLogIoStatistics( 154 HANDLE hLog, 155 PVOID pvStatsBuffer, 156 ULONG cbStatsBuffer, 157 CLFS_IOSTATS_CLASS eStatsClass, 158 PULONG pcbStatsWritten 159 ); 160 161 typedef LPVOID CLFS_LOG_ARCHIVE_CONTEXT; 162 typedef CLFS_LOG_ARCHIVE_CONTEXT *PCLFS_LOG_ARCHIVE_CONTEXT; 163 164 WINBOOL WINAPI GetNextLogArchiveExtent( 165 CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext, 166 CLFS_ARCHIVE_DESCRIPTOR rgadExtent[], 167 ULONG cDescriptors, 168 PULONG pcDescriptorsReturned 169 ); 170 171 WINBOOL 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 186 WINBOOL WINAPI TerminateLogArchive( 187 CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext 188 ); 189 190 ULONG WINAPI LsnBlockOffset( 191 const CLFS_LSN *plsn 192 ); 193 194 CLFS_CONTAINER_ID WINAPI LsnContainer( 195 const CLFS_LSN *plsn 196 ); 197 198 CLFS_LSN WINAPI LsnCreate( 199 CLFS_CONTAINER_ID cidContainer, 200 ULONG offBlock, 201 ULONG cRecord 202 ); 203 204 ULONG WINAPI LsnRecordSequence( 205 const CLFS_LSN *plsn 206 ); 207 208 WINBOOL 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 223 WINBOOL WINAPI QueryLogPolicy( 224 HANDLE hLog, 225 CLFS_MGMT_POLICY_TYPE ePolicyType, 226 PCLFS_MGMT_POLICY pPolicyBuffer, 227 PULONG pcbPolicyBuffer 228 ); 229 230 WINBOOL WINAPI ReadLogArchiveMetadata( 231 CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext, 232 ULONG cbOffset, 233 ULONG cbBytesToRead, 234 PBYTE pbReadBuffer, 235 PULONG pcbBytesRead 236 ); 237 238 WINBOOL WINAPI ReadLogRestartArea( 239 PVOID pvMarshal, 240 PVOID *ppvRestartBuffer, 241 PULONG pcbRestartBuffer, 242 PCLFS_LSN plsn, 243 PVOID *ppvContext, 244 LPOVERLAPPED pOverlapped 245 ); 246 247 WINBOOL WINAPI ReadPreviousLogRestartArea( 248 PVOID pvReadContext, 249 PVOID *ppvRestartBuffer, 250 PULONG pcbRestartBuffer, 251 PCLFS_LSN plsnRestart, 252 LPOVERLAPPED pOverlapped 253 ); 254 255 WINBOOL WINAPI RemoveLogContainer( 256 HANDLE hLog, 257 LPWSTR pwszContainerPath, 258 WINBOOL fForce, 259 LPVOID pReserved 260 ); 261 262 WINBOOL WINAPI RemoveLogContainerSet( 263 HANDLE hLog, 264 USHORT cContainers, 265 LPWSTR *rgwszContainerPath, 266 WINBOOL fForce, 267 LPVOID pReserved 268 ); 269 270 WINBOOL 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 283 WINBOOL 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 297 WINBOOL WINAPI SetEndOfLog( 298 HANDLE hLog, 299 PCLFS_LSN plsnEnd, 300 LPOVERLAPPED lpOverlapped 301 ); 302 303 WINBOOL WINAPI SetLogArchiveMode( 304 HANDLE hLog, 305 CLFS_LOG_ARCHIVE_MODE eMode 306 ); 307 308 WINBOOL WINAPI SetLogArchiveTail( 309 HANDLE hLog, 310 PCLFS_LSN plsnArchiveTail, 311 LPVOID pReserved 312 ); 313 314 WINBOOL WINAPI TerminateReadLog( 315 PVOID pvCursorContext 316 ); 317 318 WINBOOL 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