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