Home | History | Annotate | Download | only in include
      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